• Slide 1 : Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation test link ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate another link velit esse cillum dolore eu fugiat nulla pariatur.

  • Slide 2 : Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation test link ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate another link velit esse cillum dolore eu fugiat nulla pariatur.

  • Slide 3 : Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation test link ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate another link velit esse cillum dolore eu fugiat nulla pariatur.

Sunday, April 20, 2014

Malata bambareku se Clarence Wijewardena

Read More

Wednesday, February 26, 2014

Difference Engine

Difference Engine By 1822 the English mathematician Charles Babbage was proposing a steam driven calculating machine the size of a room, which he called the Difference Engine.
Read More

Friday, December 13, 2013

The abacus

was an early aid for mathematical computations. Its only value is that it aids the memory of the human performing the calculation. A skilled abacus operator can work on addition and subtraction problems
Read More

Saturday, September 14, 2013

Nano Technology

Nano Technology is a engineering of a functional system at the molecular scale. This covers both current work and concepts that are more advanced. In its original sense,nanotechnology refers to the projected ability to construct items from the bottom up, using techniques and tools being developed today to make complete, high performance products.
Read More

Sunday, May 19, 2013

පරිගණක මෙහෙයුම් පද්ධතිය (Operating System) 

පරිඝණකයකින් වැඩ කර ගැනීම සඳහා මෙහෙයුම් පද්ධතියක් (OS) අත්‍යාවශ්‍ය බව අපි හැමෝම දන්නවා. පරිඝණක වල පමණක් නොවේ, Smart phone වලින් Tablet PC වලින් හා සංකීර්ණ යන්ත්‍ර සූත්‍ර වලින් වැඩ ගන්නත් OS අවශ්‍ය වෙනවා. සංකීර්ණ යන්ත්‍ර සූත්‍ර මෙහෙයවන programs හැඳින්වෙන්නේ Embedded Systems කියායි. මේ OS කියන්නෙ මොකක්ද, පරිඝණකයක් කොහොමද OS එකකින් වැඩ ගන්න පුලුවන් තත්වයට පත්වෙන්නෙ, OS වර්ග මොනවාද, ඇයි අපිට OS එකක් ඇත්තටම අවශ්‍ය යන කරුණු ගැන වැඩිදුර විස්තර අපි මේ ලිපියෙන් විමසා බලමු.

OS එකක් යනු පරිශීලකයා හා පරිඝණකයේ දෘඩාංග අතර සන්නිවේදනය සිදු කරන අතුරුමුහුණතයි (interface). ප්‍රධාන වශයෙන් එය විධි 2කට දකින්න පුලුවන්.
  • සම්පත් කළමණාකරණය (resource manager)
    • එකම සම්පතට අයැදුම් (request) 2ක් ආ විට කාර්යක්ෂමතාව හා සාධාරණ භාවිතය පිලිබඳ සලකා බලා එය වෙන් කරයි
  • පාලන ක්‍රමලේඛයක් (control program)
    • දෝෂ වැලැක්වීම ඳහා හා පරිඝණකය අවිධිමත් භාවිතයෙන් වලක්වා ගැනීම ඳහා ක්‍රමලේඛවල (programs) ක්‍රියාකාරීත්වය පාලනය කිරීම.


වම් පස රූපයෙන් දැක්වෙන්නේ පරිඝණක පද්ධතියක් ප්‍රධාන කොටස් 4 වන පරිශීලකයා (user), යෙදුම් ක්‍රමලේඛ (application program), OS එක හා දෘඩාංග (hardware) යන ඒවා එකිනෙකට සම්බන්ධ වන ආකාරයයි. මේ අනුව යෙදුමකට යම් hardware එකක් භාවිතා කිරීමට අවශ්‍ය නම් එය කිරීමට සිදුවන්නේ OS එක හරහායි. OS එකක හරය වන්නේ එයි කර්නලයයි (kernel). කර්නලය, ආම්පන්න ධාවක (device drivers), වැඩතල පරිසරය (desktop environment) සහ තවත් දෑ එකතු වෙලා තමයි OS  එක හැදෙන්නේ. අපි දන්නා OS  කිහිපයක kernel පහත දැක්වෙනවා.





  • WindowsNT kernel – Windows NT, 2000, XP, Vista, 7, 8
  • Linux kernel – ලිනක්ස් පාදක OS  වල (Linux, Ubuntu, Fedora, Android ආදිය)
  • XNU kernel – Mac OS X, iOS
  • Unix kernel- UNIX
  • DOS kernel - මුල්ම කාලයේ Windows OS වල 
  • Windows 9x kernel - Windows 95, 98, ME
 Note: Linux, BSD kernels ලියැවුනේ Unix kernel එක පාදක කරගෙනයි. XNU kernel එක  ලියැවුනේ Mach kernel එක හා BSD kernel එක පාදක කරගෙනයි.
OS එකක් ඳහා තියෙන්න ඕන ගති ලක්ෂණ පිලිබඳ එක් නිශ්චිත නිර්වචනයක් නෑ. ඒකට හේතුව දැනට ලෝකයේ තියෙන OS එකින් එකට වෙනස් ගති ලක්ෂණ පෙන්වනවා. ඉතා අඩු මතකයක් භාවිතා කරන OS එකක පරිශීලක හිතෛෂී (user friendly) නොවෙන interface එකක් තියෙන්න පුලුවන්. ඒ වගේම ගිගා බයිට් ගානක මතකයක් භාවිතා කරන OS එකක user friendly interface එකක් තියෙන්න පුලුවන්. කොටින්ම OS එකක් තෝරගනු ලබන්නේ පරිශීලකයාගේ රුචිය අනුවයි. 

 

පරිඝණක ඇරඹුම් ක්‍රියාවලිය (Computer Boot Process)


පරිඝණකයක් බල ගැන්වූ මොහොතේ සිට තිරයේ අයිකන මතුවන මොහොත දක්වා සිදුවන්නේ කුමක්දැයි ඔයාලා කවදා හරි සිතා බැලුවාද?
එහෙනම් අපි දැන් ඒ ගැන සොයා බලමු.

Boot Process
  1. පරිඝණකයේ ස්විචය ක්‍රියාත්මක කල විගස ස්පන්දකය (system clock) ක්‍රියාත්මක වී එහි ස්පන්ද (clock signals/pulses) මඟින් මධ්‍ය සැකසුම් ඒකකය (CPU) ක්‍රියාරම්භ (initialize) වෙනවා. CPU එක initialize වීමේ එක් කොටසක් වනුයේ මූලික ආදායක/ ප්‍රතිදායක පද්ධතියේ (BIOS) ඇති ඇරඹුම් ක්‍රමලේඛයේ (startup program) පළමුවන උපදෙස (instruction) සොයා ගැනීමයි. මෙය Power-On Self Test (POST) වැඩසටහන ධාවනය කිරීම ඳහා උපදෙසයි. BIOS මඟින් මෙම උපදෙස standard memory location එහෙක රඳවනවා. 
  2. ඉන්පසු CMOS (Complementary Metal Oxide Semiconductor) මතකය පරීක්ෂා කිරීම මඟින් POST වැඩසටහන ආරම්භ වනවා. බැටරිය ඇනහිට නොමැති නම් POST වැඩසටහන දිගටම ක්‍රියාත්මක වෙනවා. POST මඟින් පරිඝණකයට සවි කර ඇති සියළුම දෘඩාංග පරීක්ෂා කර බලා ඒවා නියමිත පරිදි ක්‍රියාත්මක වන බවට තහවුරු කරගන්නවා.
  3. ඊට පසු BIOS මඟින් පරිඝණකයේ පාලනය ස්වාරම්භක වැඩසටහනට (bootstrap program/ bootstrap loader) ලබාදෙනවා. මෙම වැඩසටහන මඟින් කලින් POST වැඩසටහනෙන් හඳුනා ගත් ආචයන ආම්පන්න (storage devices) එකින් එක ඇරඹුම් පටිපාටියේ (boot sequence) පිලිවෙලට සොයා බලනවා. ඒ Master Boot Record (MBR) එක ඳහා.
  4. මේ විදියට හමුවන MBR එකක් සහිත පලමුවන storage device එක ඇරඹුම් ධාවකය (boot drive) වනවා. එහි ඇති MBR එක සසම්භාවී ප්‍රවේශ මතකයට (RAM) ප්‍රවේශනය කරනවා (load). ඒකෙන් OS එකෙහි kernel එක ආචිත ස්ථානය (stored location) ඳහන් වෙනවා.
  5. මෙම ස්ථානයෙන් kernel එක RAM එකට ප්‍රවේශනය (load) කරගෙන execute කරනු ලබනවා. පරිඝණකය ධාවනය වෙනවා යනුවෙන් හඳුන්වන්නේ මේ අවස්ථාවේදියි.
  6. මීලඟට පරිඝණකයේ පාලනය සම්පූර්ණයෙන්ම OS එක ලබාගන්නවා.
  7. මින්පසු OS එක විසින් නැවතත් දෘඩාංග සෙවුමක් (hardware search) ක්‍රියාත්මක කරනවා. මෙම සෙවුම මඟින් memory හා එහි වැඩෙහි යෙදිය හැකි ප්‍රමාණය නිර්ණය කරනවා. ඒ වගේම මවු පුවරුවට (mother board) සම්බන්ධව ඇති සියළුම පර්යන්ත ආම්පන්න (peripheral devices) පාලනය ඳහා අවශ්‍ය ආම්පන්න ධාවක (device drivers) load කරගනු ලබනවා.
  8. OS එක මුලින් ක්‍රියාත්මක කල යුතු විධානයන් ක්‍රියාත්මක කර චිත්‍රක පරිශීලක අතුරුමුහුණත (GUI) තිරයේ දිස් කොට userගේ විධානයක් බලාපොරොත්තුවෙන් සිටිනවා.

එතැනින් ඒක අවසන්. මේ සම්පූර්ණ ක්‍රියාවලිය හැඳින්වෙන්නේ ඇරඹුම් ක්‍රියාවලිය (boot process) ලෙසයි. කෙටියෙන් කියනවනම් ඇරඹුම (booting) යනු OS එකක් පරිඝණකයේ RAM එකට load කරගැනීමයි. Smart Phone හා Tablet PC වල boot process එක මඳක් වෙනස් වුවත් මෙයට බොහෝ සමානයි. 
කලින් ඳහන් කල BIOS වැඩසටහන පිහිටා ඇත්තේ පඨන මාත්‍ර මතකයෙහියි (ROM). එයට ROM එකක් යොදා ගැනීම ඳහා හේතු වශයෙන්
  • එය ස්ථීර මතකයක් වීම (RAM තාවකාලිකයි)
  • එය initialize කිරීමට අවශ්‍ය නොවීම
  • වෛරසයන්ට පහසුවෙන් එයට ලඟා වීමට හැකි නොවීම දැක්විය හැකිය.
බහුලව භාවිතා වන bootstrap loaders වන්නේ මේවායි.
  • GNU grand unified boot loader (GRUB): ලිනක්ස් පාදක OS ඳහා විවෘත කේත (open source) bootstrap program එකක්.
  • NT loader (NTLDR): Windows NT සිට Windows XP දක්වා වූ bootstrap program එක. 

  මෙහෙයුම් පද්ධති වර්ගීකරණය

  • තනි පරිශීලක - තනි කාර්ය (single user – single task)
එක වෙලාවකට එක පරිශීලකයෙකු පමණයි. එම පරිශීලකයාට කල හැක්කේද එක වැඩකි.
උදා: පාම් අත් පරිගණකයේ (Palm hand held computer)  Palm OS එක
  • තනි පරිශීලක - බහු කාර්ය (single user – multi task)
එක වෙලාවකට එක පරිශීලකයෙකුට වැඩ කිහිපයක් කල හැකියි. අද බහුලව ඩෙස්ක්ටොප් පරිඝණකයේ හෝ ලැප්ටොප් පරිඝණකයේ භාවිතා වන OS මේවාට අයිති වේ. CPU එක ඇත්තටම හසුරුවන්නේ වරකට එක් ක්‍රමලේඛයක් වුවත් එහි වේගය හා කාර්යක්ෂමතාවය නිසා අපට පේන්නේ ක්‍රමලේඛ සමගාමීව ධාවනය වෙන ලෙසයි. මෙවැනි OS නිර්මාණය වී ඇත්තේ පරිශීලක හිතෛෂී බාවය සිත්හි තබාගෙනයි. සම්පත් භාවිතය පිලිබඳ වැඩි අවධානයක් මෙහි යොමු කර නැහැ.
උදා: Microsoft Windows, Apple Macintosh, Google Android
  • බහු පරිශීලක - බහු කාර්ය (multi user – multi task)
මේ වර්ගයේ OS බොහෝ විට භාවිතා වන්නේ මහා පරිඝණක (Mainframe computers) වලයි. ජාලගත පද්ධති මඟින් බොහෝ පරිශීලකයන්ට එකවර Mainframe computer එකෙන් වැඩ ගන්නට පුළුවන්. මෙහෙයුම් පද්ධතිය මඟින් පරිඝණකයේ සම්පත් පරිශීලකයන්ට වෙන් කර දෙනවා. CPU එක වරකට හසුරුවන්නේ එක් පරිශීලකයෙකු පමණක් නමුත් එහි වේගය හා කාර්යක්ෂමතාවය නිසා අපට පේන්නේ එකවර පරිශීලකයන් ගොඩක් හසුරුවන ආකාරයටයි. සම්පත් කාර්යක්ෂමව භාවිතා කිරීම ගැන වැඩි අවධානයක් මේ OS යොමු කරනවා.
උදා: Unix, Windows Server
  • බහුපොට (multithreading)
එක් මෘදුකාංගයක කොටස් වෙන් වෙන් වශයෙන් සමගාමීව ධාවනය කිරීම සිදුවෙනවා. අද භාවිතා වන මෙහෙයුම් පද්ධති සියල්ලම වාගේ multithreading ඳහා ආධාර කරනවා.
  • තථ්‍ය කාල (real time operating system - RTOS)
RTOS යොදා ගැනෙන්නේ තථ්‍ය කාල යෙදුම් අයැදුම් (application requests) ඉටු කිරීම ඳහායි. එයට ආදානයක් (input) ලැබුනු විගස අන්තරා පමාවකින් (buffering delay) තොරව දත්ත සැකසීමේ හැකියාව තිබිය යුතුයි. මේවා බොහෝ විට යොදා ගන්නේ යන්තසූත්‍ර, කාර්මික පද්ධති, විද්‍යාත්මක පද්ධති වැනි සංකීර්ණ පද්ධති පාලනය කිරීම ඳහායි.
උදා: ATM system

මෙහෙයුම් පද්ධතියක අවශ්‍යතාවය

  • පරිඝණකය හා පරිශීලකයා අතර අතුරු මුහුණත
පරිඝණකයට තේරෙන්නෙ එක භාෂාවක් (machine language), අපිට තේරෙන්නෙ තව භාෂාවක්. අපි පරිඝණකයක් භාවිතා කරන්නේ අපේ කුමක් හෝ කාර්යයක් ඉටු කර ගැනීම ඳහායි. ඒ ඳහා අප විසින් පරිඝණකයට නොයෙකුත් විධාන (commands) ලබා දීම සිදු කරනවා. මේ විධාන machine language එකෙන් ලබා දුන්නොත් මෙන්න මේ විධියට දිස් වේවි.
මුකුත් තේරෙන්නෙ නෑ නේ? පරිශීලක අතුරුමුහුණත් (user interface) කරලියට ආවේ මේ හේතුව හින්දයි. පරිශීලක අතුරුමුහුණත් වර්ග 2ක් තියෙනවා.

    • විධාන පේලි අතුරුමුහුණත (Command Line Interface/ CLI)
      යතුරු පුවරුව භාවිතයෙන් තමයි විධාන ලබා දෙන්නෙ.


    • චිත්‍රක පරිශීලක අතුරුමුහුණත (Graphical User Interface/ GUI)තිරයේ දිස්වන චිත්‍රක හරහා ගොස් අවශ්‍ය කාර්යය ඉටු කරගත හැකියි.


           
  • දෘඩාංග පාලනය හා මෘදුකාංග කළමණාකරණය 
    මෙය පොදුවේ සම්පත් කළමණාකරණය
    (resource management) ලෙස හැඳින්විය හැකියි. Program කිහිපයක් එකවර මුද්‍රකයට (printer) යමක් මුද්‍රණය කලොත් කුමක් වේවිද? පලවෙනි program එකෙන් පේලි කිහිපයක්, දෙවෙනි program එකෙන් පේලි කිහිපයක්, තෙවෙනි program එකෙන් පේලි කිහිපයක් යනාදි වශයෙන් මුද්‍රණය වුනොත් එයින් අපිට කිසිම ප්‍රයෝජනයක් ගන්න බැහැ. මේ අවස්ථාවේදී OS එක විසින් මුද්‍රණය කල යුතු ප්‍රතිදාන (output) පිලිවෙලට තැටියේ අන්තරා (buffer) කරනවා. ඉන්පසු එකින් එක තැටියෙන් printerයට පිටපත් කර මුද්‍රණය කරනවා. Resource Management යනු මෙයයි.

    Resource management
    ආකාර 2කට සිදුවෙනවා, කාලය හා අවකාශය (Time and Space) ලෙසින්.

    කාලය මඟින් සම්පතක් කළමණාකරණයේදී එක් එක් program එකට හෝ userට එම resource එක භාවිතා කිරීමට කාලයක් වෙන් වෙනවා. එම කාලය ඉක්මවූ පසු ඊළඟ
    program එකට හෝ userට අවස්ථාව හිමිවෙනවා. ඊළඟ  program එක හෝ user කවුද යැයි තීරණය කරනු ලබන්නේ OS එක විසිනුයි. මෙය හඳුන්වන්නේ ක්‍රියායන උපලේඛනය (process scheduling) ලෙසයි. සියල්ලන් විසින් එම resource එක භාවිතා කිරීම අවසන් වන තෙක් මේ ක්‍රියාවලිය වක්‍රාකාරව දිගටම සිදුවෙනවා. මේ අයුරින් කාලය මඟින් Resource management වලට උදාහරණ ලෙස CPU එක දක්වන්න පුලුවන්.

    අවකාශය
    මඟින් සම්පත් කළමණාකරණයේදී යම් resource එකක් භාවිතා කරන සෑම program එකකටම හෝ user කෙනෙකුටම එම resource එකෙන් කොටසක් හිමිවෙනවා. මෙයට උදාහරණ ලෙස ප්‍රධාන මතකය (main memory) හා දෘඩ තැටිය (hard disk) දක්වන්න පුලුවන්. ප්‍රධාන මතකයක් සාමාන්‍යයෙන් ක්‍රමලේඛ කිහිපයක් රඳවා ගැනීමට තරම් විශාල නිසා එය කාලය මඟින් program අතර බෙදා වෙන් කිරීම කාර්යක්ෂම නෑ. ඒවගේම hard disk එකෙත් එකවර පරිශීලකයන් කිහිප දෙනෙකුගේ ගොනු (files) රඳවා තබා ගත හැකියි. ඒ ඳහා අවකාශය වෙන් කිරීම හා එක් එක් user භාවිතා කරන තැටි කොටස (disk block) ගැන සටහන් තබා ගැනීම සම්පත් කළමණාකරණයට අයිති වැඩකි. මෙලෙසින් අවකාශය බෙදා වෙන් කරන කොට මතුවන සාධාරණත්වය, ආරක්ෂාව පිලිබඳ ගැටළු වලට විසඳුම් සෙවීම OS එක සතු තවත් කාර්ය භාරයකි.

    පරිශීලකයන් ගොඩක් පරිඝණකයක් හෝ ජාලයක් (network) භාවිතා කරන විට main memory, ආදාන ප්‍රතිදාන ආම්පන්න (input/output devices) සහ අනෙකුත් සම්පත් කළමණාකරණය හා ආරක්ෂා කිරීම ඉතා වැදගත් වනවා. නැත්නම් එක් user කෙනෙක් තව කෙනෙකුට බාධාවක් වන්න පුලුවන්. Hardware පමණක් නොවෙයි, පරිශීලකයන්ට files, දත්ත සමුදායන් (data bases) වැනි තොරතුරු පවා බෙදා ගැනීමට අවශ්‍ය වෙනවා. කොටින්ම සම්පත් කළමණාකරණයේදී OS එක කවුරු කුමන resource එක භාවිතා කරයිද, resource ඳහා වන request වලට අවසර ලබා දීම, භාවිතය පාලනය කිරීම හා විවිධ programs හා users අතර ඇතිවන ගැටළුකාරී අයැදුම් ඳහා විසඳුම් සෙවීම යන ක්‍රියා වල නිරත වෙනවා.
පරිඝණකය ක්‍රමලේඛගත කිරීම ඳහා අතථ්‍ය යන්ත්‍රයක් ලබා ගැනීම
පරිඝණකය hardware level එකෙන් ගත් කල ඉතා සංකීර්ණ පද්ධතියකි. එම නිසා එය program කිරීමද අපහසු කාර්යයකි. Programmerට program කිරීම පහසු කිරීම
ඳහා පරිඝණකය හා සමාන එහි විහිදුවන ලද යන්ත්‍රයක් (extended machine) හෙවත් අතථ්‍ය යන්ත්‍රයක් (virtual machine) ලබා දීම OS එක මඟින් සිදු කරනවා.

Hard disk එකක් කියවීම
(read) හෝ ලිවීම (write) වැනි සරල විධානයක් පවා ඇත්තටම ගත් කල ඉතා සංකීර්ණ ක්‍රියා දාමයක්. අපි පරිඝණකය ඇතුලටම ගොස් බැලුවොත් Hard disk එකේ මෝටරය ක්‍රියාත්මක කිරීමේ පටන් read කරන්නේ හෝ write කරන්නේ කුමන තැටි පථයේ (track) කුමන ඛණ්ඩකයේ (sector) කුමන කොටස් (block) ටිකද යන්නත්, අවසානයේ මෝටරය ක්‍රියා විරහිත කිරීම දක්වා සියළු commands programmer විසින් පරිඝණකයට ලබා දිය යුතු වෙනවා. මෙය ඉතාම නීරස හා වෙහෙසකාරී ක්‍රියාවක්.

මේ ආකාරයෙන් program කරන්න ගියොත් programmerගේ කාලය නාස්ති වනවා පමණක් නොව ඔහු අතින් වෙන්න පුලුවන් වැරදි ප්‍රමාණයත් වැඩී. එම වැරදි හැදීම ඊටත් වඩා අසීරු වෙනවා. ඒ වෙනුවට programmer කෙනෙකුට අවශ්‍ය වන්නේ සරල, ඉහළ මට්ටමේ සාරාංශයක්
(high level abstraction) පමණි. ඉහත උදාහරණය ගත්තොත්
programmer කෙනෙකුට අවශ්‍ය වන්නේ file එකක් විවෘත කර එය read කර හෝ එයට write කර අවසානයේ file එක වසා දැමීම පමණයි. 

OS එක විසින් hardware ගැන ඇත්ත සඟවා programmerට අවශ්‍ය මෙම සරල, ඉහළ මට්ටමේ සාරාංශය ලබා දෙනවා. ඉහත උදාහරණය ගත් කල programmer ඇත්තටම commands ලබා දෙන්නේ OS එක විසින් ලබා දෙන ගොනු ව්‍යුහය (file structure) එක උපයෝගී කරගෙනයි. 

මේ අයුරින් OS එක අපට හැසිරවීමට අපහසු බාධා (interrupts), කාලමාපක (timers), මතක කළමණාකරණය (memory management) සහ අනෙකුත් පහළ මට්ටමේ අංගයන් සඟවනවා. මෙසේ ලබා දෙන abstraction view එක virtual machine එක ලෙසින් හැඳින්වෙනවා. Programs වලට පරිඝණකයෙන් ලබා ගත යුතු විවිධ සේවාවන් ලබා ගැනීම ඳහා OS එක විසින් System Calls යන විශේෂ instructions ලබා දෙනවා. read හා write යනු එවැනි System calls 2කි. 
Read More