Tuesday, September 27, 2016

Boot loader සැකසීම - Assembly පරිගණක භාෂාව part 3


පහත තිබෙන්නේ Assembly පරිගණක භාෂාවෙන් ලියපු කේතයක් මෙම කේතය ඉලක්ක කරලා  තිබෙන්නේ පරිගණකයේ boot loader එකේ තිබෙන පළමු sector එකේ ධාවනය කිරීමට.මෙහිදී පහත 0x1BADB002 කියන memory sector එකේ තිබෙන

global loader
MAGIC_NUMBER    equ 0x1BADB002  
FLAGS equ       0x0  
CHECKSUM        equ -MAGIC_NUMBER

section .text:

align 4

 dd MAGIC_NUMBER
 dd FLAGS
 dd CHECKSUM

loader:
mov eax, 0xCAFEBABE 
.loop: 
     jmp .loop  
 
global loader ලෙස හදුන්වා දී තිබෙන්නේ එක සංකේතයක් ELF වල
MAGIC_NUMBER ලෙස අපි පළමු බූට් sector එක හදුන්වා දී තිබෙන්නේ 0x1BADB002 ලෙසයි.
FLAGS equ 0x0 ලෙස අපි හද්න්වාදී තිබෙන්නේ multiboot flag කියාවලියයි
තවද checksum කියාව්ලියට boot sector හි එකතුව විශ්ලේෂණය කරනවා.

එතැනදී අපි CHECKSUM equ -MAGIC_NUMBER කියන කේතනය හදුන්වා දේ තිබෙනවා ගණනය කරන්න magic number හි එකතුව සහ flag ගණනට

Section .text: ලෙස කේතනය කරන්නේ.text code සමුහය ආරම්භ කරන්නයි.මෙහිදී align 4 ලෙස අපි අපි byte 4එක ඉඩකඩක් හදුන්වාදීමක් කරනවා text හදුන්වාදීමට (මතක තබා ගන්න මෙය වැඩියෙන් ගන්න එපා එතකොට පරිගණකයේ boot loader එකේ දත්ත කිය්වවීමේ වේගය අඩාල වෙන්න පුළුවන්.

dd MAGIC_NUMBER සහ dd FLAGS කියන කෙතනයෙන් සිදුවන්නේ යාන්ත්‍ර කේතයන් හදුන්වාදීම සහ dd flags ලෙස හදුන්වන්නේ multi flag ගණන කියිමටයි
dd checksum කියන්න ඉහත සහදහන් කර විදිහට flags සහ dd MAGIC_NUMBER හි යාන්ත්‍ර කේතයන් ගණනය.මෙය checksum ක්‍රියාවලියෙන් boot sector වල තිබේ කීත අනුපිලිවෙල ගණනය කිරීමටයි යොදා ගන්නේ.

loader: කියන ක්‍රියාවලියෙන් සිදුවන්නේ ඊලග glub module එකට සියල්ල link කිරීමයි.මෙතනි mov eax, 0xCAFEBABE කේතය මගින් ඊලග ධාවනය ස්ථානගත කරනවා load කරන ඊලග මොඩියුලය.
.loop:එකේදී සිදුවන්නේ අපි හැමෝම දන්නා නොකඩවා ධාවන ක්‍රියාවලියයි.මෙතැනදී jmp .loop මගින් මෙය ධාවනය වෙනවා නොකඩවා 


ඊලග ලිපියෙන් කියලා දෙන්නම් කොහොමද මේ code compile කරන්නේ කියලා
 
 

කෘතීම බුද්ධිය සහ තර්කය (1 නිබන්ධනය)

පරිගණය යනු මිනිසා විසින් ලබා දෙන දත්ත මත තොරතුරු ලබා දෙන උපකරණයක් ලෙස හැදින්වීම නිවැරදිය.එහි වෙන ප්‍රතිපලය සිදු වන්නේ අපේ විධාන මගින්ය.එහි අභ්‍යන්තර ක්‍රියාවලියමද සිදු වෙන්නේ හේතුපල දහමට අනුවය එනම් සරල තාර්කනය සහ එයින් සිදුවන ප්‍රතිලයි.හැම වෙලාවේම පරිගණයක සරල තර්කනය ඉදිරිපත් කරයි එහි ඇති පරිපත් සහ මතක කළමනාකරණය හැමදෙමක යම් කිසි කියාවලියා ප්‍රතිපලයක් සිදු වේ.මම මේ ගැන මෙසේ පැහැදිලි කරන්නම්. ඔබට සරලව ලොජික් ගේට් එකක් ගත් කල එහි තියන ක්‍රියාවලිය AND,OR,NOT,NOR,NAND හෝ වේවා තාරිකික විද්‍යුත් ක්‍රියාවලියකම සිදු වෙන්නේ ලබා දෙන විද්‍යුතය මගින් එහි කියාවන් සිදු වීමයි.මම මේ ගැන තව දුරට පැහැදිලිවම ගත්තොත් ටිකක් හිතන්න ඔබගේ පරිගනයකයේ ඇති UPS එක හැම වෙලාවේම කියාත්මක වෙමින් පවතින්නේ එහි නිවදරදී තර්කනය ක්‍රියා කරවීමටයි එනම් ඔබගේ UPS එකට ලබා දෙන විදුලිය වැඩි වුවහොත් එහි තිබෙනේ සම්මත තත්වයේ විදුලිය පාලන ක්‍රියාවලිය සමග සම්බන්ධ වී විදුලිය සාමාන්‍ය තත්වයේ ලබා දීම සහ එන විදුලි ප්‍රමාණය අඩු වුවහොත් තාවකාලිකව භාවිතයට ගනු ලබන ගබඩා බැටරිය මත ගබඩා කරන ලද බල සැපයුම කියාත්මක කිරීමයි.උදාරහණයක් විදිහට හැමදේම “If” Logical method විදිහට කියාත්මක වේ එනම් විදුලිය වැඩියෙන් එන්නවා නම් එහි විසදුම් ක්‍රියාවලිය සිදු වන්න.ඒසී නැත්තම් සාමාන්‍ය පරිදි සිදු වන්න යනුවෙන් උදාහරණයක් විදිහට යොදා ගන්න පුළුවන්
ඉතින් අපි භාවිතා කරන මෘදුකාංග සියල්ලම එසේ if නමැති තර්කන කියාවලියට යටත්ය කොටින්ම කිව්වොත් අපේ ජීවිතේද එසේ පවතී අපගේ ගෞතම බුදුරජානන් වහන්සේද මෙය කලින් දකින ලදී එනම් හේතුවක් තිබිය යුතුයි එහි පලයක් හට ගන්නට යනුවෙන් හේතුපල දහම දේශාන කොට වදලුවේ එක නිසා.අපෙගේ මොලයේ ඇතැම් කියාවන් සියල්ල සිදු වන්නේ  If නම් තර්කනය මතයි. උබේ ඇඟේ මදුරුවෙක් වැසුවා යයි සිතන්න උබ එවෙලේම ඌට ප්‍රහාරයක් එල්ල කරන්න උත්සහ කරන්නේ මේ ක්‍රියාවලිය නිසයි. ඔබ මදුරුවෙක් වැහුවා නම් පමණයි උබ ඒ මදුරුවා අතින් ගහලා තලන්න උත්සහ කරන්නේ මෙය උගේ If නම් තාරිකික ක්‍රියාවලියේ එක පැතිකඩකි.
මම හිතන සරල තර්කයට අනුව කෘතීම බුද්දියකට අවශ්‍ය වෙන්නේ ක්‍රියාවලි කිහිපයයි එනම්
ගැටලුවකදී 
1)      අධ්‍යනය
2)      විකල්පය
3)      විකල්පය ක්‍රියාවටනැංවීම
4)      සියලුම විස්තර ගබඩා කර තබා ගැනීම 


කෘතීම බුද්ධියක් කියන්නේ කුමක්ද?
කෘතීම බුද්ධියේ යනු John McCarthy සදහන් කරන පරිදි “විද්‍යාව සහ ඉංජිනේරු තාක්ෂණයෙන් සාදන බුද්ධිමත් යන්ත්‍ර වේ, විශේෂයෙන් පරිගණක වැඩසටහන් ගැන ඔහු තවදුරටත් සාකච්චා කොට ඇත.
කෘතීම බුද්ධිය බුද්ධිමත් මිනිසුන් හිතන සමාන අයුරින් අයුරින් පරිගණක පාලනය (රොබෝ ක්‍රියාවලීන්), හෝ මෘදුකාංග නිර්මාණය කිරීමේ ක්‍රමයකි.ප්‍රශ්නයක් විසන්දාගනීමට උත්සහය, මෘදුකාංග සංවධානය කිරීමේ මූලික පදනම ලෙස මෙහි මුල් යුගය හැදින්විය හැක.එනම් ගැටළුවක් විසදීම සදහා පරිගණකය භාවිතාකොට මිනිස් මොලයේ හිතන පතන ක්‍රියාවලින් අධ්‍යන කොට නැවත ප්‍රතිනිර්මාණය කිරීමේ ක්‍රියාවලිය සහ ඉගනීම මගින් අධ්‍යන කෘතීමව යන්ත්‍ර භාවිතයෙන් සිදු කරන්නේ නම් එය කෘතීම බුද්දියක් ලෙස හදුනාගැනීමට පුළුවනි




කෘතීම බුද්ධිය හි අධ්‍යනයට අවශ්‍ය විෂයන්
කෘතීම බුද්ධිය සමග හි ක්‍රියාකාරිත්වය අධ්‍යනයදී විද්‍යාත්මක විෂයන් කිහිපයක ක්‍රියාකාරිත්වයේ එකතුවක් ලෙසද හැදින්විය හැක එනම් ජීව විද්‍යාව , මනෝ විද්‍යාව , වාග් විද්‍යාව, ගණිතය සහ එන්ජෙනීරු විද්‍යාව සියල්ල හි ක්‍රියාවලින් සමගින් බුද්දිමත් ක්‍රියාවලියන් හෝ ප්‍රතිපල සදහා දායක විය හැකි.පහත රූප සටහන අධ්‍යන කරන්න









සරල තාර්ක්නය ඉහත විෂයන් පුරා වියමනක් ලෙස පැවතීම පමණක් කෘතීම බුද්දියක් ලෙස හැදින්වීම සාධාරණය නොවේ.කෘතීම බුද්දියේ ක්‍රියාවලිය ඉහත විෂයන් හි ගබඩා කර ඇති දත්ත මගින් එහි ප්‍රතිපලය ගානෙම නොවේ.එසේ වියහොත් මෙය කුඩා තොරතුරු ලැබීම දත්ත ගබඩාවක් වනු ඇත.සාමාන්‍ය ක්‍රියාවලින් වලදී සිදුන්ව ක්‍රියාවලියන් සමග මෙම විෂයන් ප්‍රතික්‍රියා කිරීමෙන් කෘතීම බුද්දියේ ක්‍රියාවලිය අරභේ.උදාහරණයක් ලෙස අපි හිතමු පරිගණකය ඇති මූලික ක්‍රියාවලිය එනම්

නමුත් ඉහත Input > process > Output ක්‍රියාවලියෙන් හාත්පසිම සිදුවන දෙයක් කෘතීම බුද්දියේ ක්‍රියාත්මක වේ.එනම් එය මුල්ම කියාවලිය Input ලෙස ගත් කල්හි එහි පරිගනයේ ක්‍රියාකරු ලෙස වැඩි බලයක් ලැබෙන්නේ ප්‍රිශීලකයාටයි එනම් අපි දන්නා දත්ත පාලකයන් හි ක්‍රියාවලින් විශ්ලේෂණය Input ක්‍රියාවලියෙන් කෘතීම බුද්දියේ සිදු වන්නේ මූලකම දෙය පමණි එනම් පහත රූප සටහනින් තේරුම් ගත හැකි 

මෙහිදී Input සහ Output යෙදුම් හි මුල් ක්‍රියාකාරිත්වය Process නම් ක්‍රියාවලියෙන් ආභාෂය ලැබේ.එනම් මෙහි ක්‍රියාකරු ලෙස මූලක අන්දම සිදුවන්නේ process නම් එකකයටයි.මම මෙය තවත් සරලව පැහැදිලි කිරීමට කැමැත්තෙමි
            මම උදාහරණයක් විදිහට ගන්නේ මිනිස් ක්‍රියාකාරිත්වයයි එනම් මම මෙතැනදී if නම් තර්කනයට ගන්න තරම් සංකීර්ණ ක්රියාවලිග ගැන තව දුරටත් කතා නොකරන්නේ ඉහත රූප සටහනේ ආභාෂයෙන් ය. මිනිසෙක්ට කෙනෙක් විධානය දිය දියුතුම නැත එහි ඔහුගේ ක්‍රියාවන් කරවීමට එසේ වේ නම් එයද එන පිලි පිළිපදින රොබෝ කෙනෙක් වනු ඇත.මිනිහාගේ ක්‍රියාවලීන් සිදුවන්නේ මූලික හරි විධාන මතයි එනම් මොලයේ ඇති වන ස්වයං උත්තේජන මගින් සමහර ක්‍රියාවන් ඉබේ සිදුවේ.මෙය සිත යනුවෙන් හැදින්වේ.මම මෙය තවත් සරල විදිහට කියන්න කැමති
                        ඔබට ගැහැණු ලමයක් දැක්කම ආදරයක් ඇති වෙනවා හෝ පාරේ සිගමන් යන ළමයෙක් දැක්කම හිතට දුකක් දැනෙන්නේ කෙනෙක්ගේ විධානයක් මත නෙවෙයි මොලයේ සිදුවන අදේශයන් මතයි එනම් අපේ මතකයේ සිදුවන සහ පරිකල්පන ශක්තියේ ක්‍රියාවලියන් මතයි.


ඉබේ ඇති වෙන හැගීම සහ එහි ක්‍රියාවලිය සිදුවන්නේ සංකීර්ණ පොදු ක්රියාන්වන් සියල්ල සිදුවන්නේ එහි තිබෙන ක්‍රියාවලින් වලින් පමණි.දැනට පරීක්ෂණ මට්ටමේ තිබෙන සියලුම කෘතීම බුද්දීන් සියල්ල ක්‍රියාත්මක වන්නේ සරල තර්කනය මතයි තර්කයක් ගොඩ නැගීම් කිරීම සදහා තවමත් කෘතීම බුද්දිය ඇති පහසුකම් මදිය.සරල තර්කනයන් හෝ සංකීර්ණ තර්කයන් ගොඩ නැගීම සදහා විශාල දැනුම ප්‍රමාණයක් ගබඩා කර එම දැනුම නැවත ආවජනය කිරීම සිදු කිරීම විය යුතුයි එසේ නොවුන සියලුම අවස්ථා වල ක්‍රියාත්මක වන්නේ අධ්‍යන ක්‍රියාවලියක් නම් එයයි කෘතීම බුද්දියේ මූලක අදියර මෙය උදාහරණයක් ලෙස මම මෙසේ පැහැදිලි කරමි
ප්‍රාථමික කෘතීම බුදිධියේ ක්‍රියාකාරිත්වය සිදු වන්නේ විකසනය වෙමින් පවතින ළමයෙක් මෙන්ය.එනම් Ulton සංකල්පයේ මූලික පියවරයි.එනම් සියලුම දේ ස්වයං අධ්යනකින් ඉගෙන ගැනීම ජීවී බුද්ධියේ ලක්ෂණයක් කෘතීම බුද්දියේ පිහිටිය යුතුයි.එසේ නම් මෙය සරලම ක්‍රියාවලියකින් මෙසේ කිව හැක

මිනිසෙක් විසින් Chat Bot එකකට ප්‍රතිධානයක් ඇතුලත් කරා කියලා සිතන්න පහත සංවාදය බලන්න

User: Hi
ChatBot: Hi User, My Name is Sanman
User: Good Morning ChatBot.What the time now?
ChatBot: Now time is 12:00 PM.
User: What the fuck.im too late
ChatBot: what the meaning of fuck?
User: ahh…fuck mean is a bad word.
ChatBot: ok…understood

ඉහත සංවාදය සිදුවන්නේ කෘතීමව සැකසු චැට් කරන bot කෙනෙක් එක්ක.මෙතැනදී සිදුවන්නේ ක්‍රියාවලිය සරල මෙම කෘතීම බුද්ධිය හි ගබඩා කර පවතින command එකක් හදුනා ගැනීම සහ ඉගැනීමයි.එනම් එය මෙසේ පැහැදිලි කරන්නට කැමතිය.කෘතීම බුද්ධියේ ක්‍රියාවලියේද ඉහත සංවාදයේ සිදුවන්නේ User නම් නාමයෙන් පරිගණක පරිශීලකයා සිටීම සහ ChatBot යන නාමයෙන් පරිගණක කෘතීම බුද්ධිය හි සංවාදය යයි සිතන්න එනම්
User පළමුව hi කියලා ආධානයක් ඉදිරිපත් කල පසු Chabot නමති කෘතීම බුද්දිය ඔහුගේ මතකයේ hi කියන වචනයට පිළිතුරක් සොයා එය පළකරයි.එනම් hi user, my name is sanman මෙතැනදී ඔහු භාවිතා කරන කෙනාගේ නම දැනගත්තේ පරිගණකය රෙගිස්ටෙර් කර ඇති නම අධ්‍යන කොටගෙනයි මෙහෙදී ඔහු පරිගණකයේ කලින් ලබා දී ඇති දත්ත අධ්‍යන කොටගෙන මෙය යොදාගන්නා ලදී. මෙහිදී කෘතීම බුද්ධියත් සමග ඇතිවූ මුල් සංවාධයේදී ඔහු ඔහුගේ විස්තර සහ කලින් සංවාදයන් ඇතුලත් ගොනුවක් කෘතීම බුද්දියේ මතකයේ වෙනම ගබඩා කරගැනී.එම නිසා එය මගින් අදාලා නම කියවූ පසු එයට අදාලා සියල්ල තෝරා ඔහු ඔහුගේ අදහස් ප්‍රකාශ කරයි,තවද ඉහත සංවාදයේ කෘතීම බුද්දිය නොදන්නා දෙයක් ඉගෙනීමට උත්සහ කරයි.එනම් මෙසේයි වාග් විද්‍යාව මගින් පුළුල් ලෙස හසුරවා (වාග් ක්‍රියාවලිය මූලිකව වැඩසටහනට දත්ත ඇතුලත් කර ඇත උදහාරණයක් ලෙස Google Translate) කෘතීම බුද්ධියේ නොදන්නා වචන හදුනාගෙන එය කුමක්දැයි ප්‍රශ්න කරයි එතැනදී එහි තේරුම අපි විසින් ලබාදීමෙන් කෘතීම බුද්ධිය එය ඔහුගේ පරිගණක වැඩසටහනේ ගබඩා කරයි.පසුව ඔහු ගබඩා කර පසු understood ලෙස පිළිතුරු ලබා දෙයි.
මම ක්‍රියාවලියේ ප්‍රාග් අවදිය දැනට Apple Sire, Assistant වල භාවිතා කරේ.එනම් උදව් සහයකයෙක් ලෙස මෙය ක්‍රියාත්මක කරයි.එහිදී Voice Direction ක්‍රියාවලිය මගින් දෙනු ලබන විධානය text එකක් ලෙස පරිවර්තනය කර එය web database එකක් මගින් විමසයි මෙහෙහි web database එක මගින් හදුනාගනු ලබන දත්ත වලට අදාළ පිළිතුරු පමණක් ලබා ඩේ.මෙහිදී විශේෂ හේතු මත පරිශීලකයාගෙන් ඉගෙනීම මගින් අලුත් යෙදුම් හෝ විධාන එකතු නොවේ.එනම් මෙයද සැබෑ කෘතීම බුද්ධි ක්‍රියාවලියක් නොවේ.

සැබෑ කෘතීම බුද්දියක පවතින දේවල්

  1. 1     මතක විශ්ලේෂණය
  2. 2      විසදුම් විශ්ලේෂණය
  3. 3      ගැටළු හදුනාගැනීම
  4. 4      පරිකල්පනය
  5. 5      හැගීම්
  6.           හදුනාගැනීම