ඔයාල ගොඩක් දෙනෙක් අහල ඇති ගොඩක් අය මෙහෙයුම් පද්ධතියක අභ්යන්තරය ගැන කතාකරනකොට අනිවරෙන්ම Kernel එක ගැන කතා කරන්න අමතක කරන්නේ නැ. ඉතින් මොකද්ද මේ Kernel එකක් කියන්නේ? සරලවම කිව්වොත් Kernel එකක් කියන්නේ පරිගනකයක මෙහෙයුම් පද්ධතියේ හරය වශයෙන් ක්රියාකරන කේත සටහනයි. මෙය පරිගණකයේ ඇති User Applications සහ Hardware අතර අතුරුමුහුණතක් එහෙමත් නැත්තම් interface එකක් විදිහට තමයි ක්රියාකරන්නේ. මේ Kernel එකක් මගින් කාර්යයන් කිහිපයක් සිදුකරනු ලබනවා. ඒවානම් ;
1. Process management
2. Device management
3. Memory management
4. Interrupt handling
5. I/O communication
6. File systems
7. Security or Protection Management
2. Device management
3. Memory management
4. Interrupt handling
5. I/O communication
6. File systems
7. Security or Protection Management
ඉතින් උඩ කිව්වා වගේ Kernel එක තමයි මෙහෙයුම් පද්ධතියක හදවත විදිහට වැඩ කරන්නේ. දැන් කෙනෙක්ට ප්රශ්නයක් එන්න පුළුවන් එතකොට Kernel එකක් කියන්නේ මෙහෙයුම් පද්ධතියකට කියල? නැ. Kernel එකෙන් තමයි OS එකේ Core Features කළමනාකරණය කරන්නේ. (Core Features කියන්නේ අර උඩ List එකේ තිබ්බ දේවල්ම තමයි) ඉතින් මේ Kernel එක හරහා අපි application සහ utilities (උදාහරණ විදිහට file-system utilities, windowing systems and graphical desktops, system administrator, commands, text editors, compilers etc...) වගේ දේවල් එකතු කරගෙන ගොඩනගා ගන්න සම්පුර්න (complete) package එකට තමයි මෙහෙයුම් පද්ධතියක් (Operating System) එකක් කියන්නේ. ඉතිං ඔන්න ඔය නිසා මෙහෙයුම් පද්ධතියකට තියන System memory එක කොටස් දෙකකට කඩන්න පුළුවන්. ඒවා නම් kernel space සහ user space යන කොටස් දෙකක්.
මොකද්ද kernel space එක සහ user space එක කියන්නේ?
සරලවම කිව්වොත් Kernel එක run වෙන්නේ kernel space සහ normal user processes (Kernel එකට අයිති නැති අනිකුත් සියලුම දේ) run වෙන්නේ user space එකේ. user space එකේ run වෙන processes වලට පරිගණකයේ memory එකේ සීමිත කොටසක් විතරයි access කරන්න අයිතිය තියෙන්නේ. නමුත් Kernel එකට සම්පුර්ණ memory එකම access කරන්න අයිතිය තියනවා. ඒවගේම user space එකේ run වෙන processes වලට Kernel Space එකේ run වෙන ඒවලට අගිලිගහන්න අයිතියක් නැ. නමුත් user space එකේ run වෙන processes වලට ඉතාම කුඩා ප්රමාණයකට kernel space එකේ ඒවලට අගිලිගහන්න kernel එක ඉඩ සලසාදීල තියනවා. ඒක කරන්න තමයි system calls කියල ජාතියක් තියෙන්නේ. system calls එකක් කියන්නේ active process (active process එකක් යනු එම අවස්ථාවේ පරිගණකයේ CPU එකේ process වෙමින් පවතින process එකකට) එකක් මගින් kernel එක විසින් සපයන සේවාවකට (Service) යවනු ලබන request එක කියල හදුන්වා දෙන්න පුළුවන්.
සරලවම කිව්වොත් Kernel එක run වෙන්නේ kernel space සහ normal user processes (Kernel එකට අයිති නැති අනිකුත් සියලුම දේ) run වෙන්නේ user space එකේ. user space එකේ run වෙන processes වලට පරිගණකයේ memory එකේ සීමිත කොටසක් විතරයි access කරන්න අයිතිය තියෙන්නේ. නමුත් Kernel එකට සම්පුර්ණ memory එකම access කරන්න අයිතිය තියනවා. ඒවගේම user space එකේ run වෙන processes වලට Kernel Space එකේ run වෙන ඒවලට අගිලිගහන්න අයිතියක් නැ. නමුත් user space එකේ run වෙන processes වලට ඉතාම කුඩා ප්රමාණයකට kernel space එකේ ඒවලට අගිලිගහන්න kernel එක ඉඩ සලසාදීල තියනවා. ඒක කරන්න තමයි system calls කියල ජාතියක් තියෙන්නේ. system calls එකක් කියන්නේ active process (active process එකක් යනු එම අවස්ථාවේ පරිගණකයේ CPU එකේ process වෙමින් පවතින process එකකට) එකක් මගින් kernel එක විසින් සපයන සේවාවකට (Service) යවනු ලබන request එක කියල හදුන්වා දෙන්න පුළුවන්.
එතකොට Linux කියන්නේ මෙහෙයුම් පද්ධතියක්ද එහෙමත් නැත්තම් Kernel එකක්ද?
Linux කියන්නේ kernel එකක්. එකට හේතුව Linux වල අර උඩදී කියපු file-system utilities, windowing systems and graphical desktops, system administrator, commands, text editors, compilers etc... වගේ දේවල් ඇතුලත් වෙලා නැ. නමුත් මේ Linux Kernel එක භාවිතා කරලා එක එක සමාගම් විසින් මෙහෙයුම් පද්ධති නිෂ්පාදනය කරලා තියනවා. එව්වා තමයි අපි භාවිතා කරන ubuntu, suse, centOS, redHat etc... වගේ එව්වා.
Linux කියන්නේ kernel එකක්. එකට හේතුව Linux වල අර උඩදී කියපු file-system utilities, windowing systems and graphical desktops, system administrator, commands, text editors, compilers etc... වගේ දේවල් ඇතුලත් වෙලා නැ. නමුත් මේ Linux Kernel එක භාවිතා කරලා එක එක සමාගම් විසින් මෙහෙයුම් පද්ධති නිෂ්පාදනය කරලා තියනවා. එව්වා තමයි අපි භාවිතා කරන ubuntu, suse, centOS, redHat etc... වගේ එව්වා.
අපිට මේ Kernel හැදිලා තියන විදිහ (architecture) අනුව ඒවා ප්රධාන වශයෙන් කොටස් දෙකකට බෙදන්න පුළුවන්.
1. Monolithic Kernels
2. Micro Kernels / μ-kernel
2. Micro Kernels / μ-kernel
Monolithic Kernels
මේ architecture එකෙදි basic system services උදාහරණ විදිහට process සහ memory management, interrupt handling etc... වගේ දේවල් ඔක්කොම kernel space එකේ එක module එකකට pack කරලා තමයි තිබ්බේ. මෙන්න මේ හේතුව නිසා මේ Kernels වල Size එක ඉතාමත් විශාල උනා. ඔක්කොම එකට තිබ්බ නිසා මොනවා හරි අලුත් දෙයක් එකතු කරොත් හරි මොකක් හරි bug එකක් අවොත් අහරි නැවතත් සම්පුර්ණ kernel කේත සටහනම මුල ඉදල recompile කරන්න සිද්ද උනා. මේ recompile කරන්න ගොඩක් වෙලාව යන වැඩක්. ඉතින් ඔන්න ඔය හේතු නිසා මේ Monolithic Kernels වල පසුබෑමක් දකින්නට උනා. නමුත් පසුකාලීනව ඔක්කොම දේවල් එක module එකකට pack කරනවා වෙනුවට එක එක modules වලින් මේ kernel එක නිර්මාණය කරන්න පටන් ගත්ත. එතකොට පුළුවන් මේ services ඕනේ වෙලාවන්වලට load සහ Unload කරගන්න. ඉතින් ඔය නිසා අයෙමත් මෙහෙයුම් පද්ධති වල මේක භාවිතා කරන්න පටන් ගත්තා. මොකද දැන් හරිම ලේසි මොකක් හරි bug එකක් අවොත් fix කරන්න එහෙම. කරන්න තියෙන්නේ ඕනේ කරන module එක recomplie කරන්න විතරයි. Linux භාවිතා කරන්නේ මෙන්න මේ Monolithic Kernels.
මේ architecture එකෙදි basic system services උදාහරණ විදිහට process සහ memory management, interrupt handling etc... වගේ දේවල් ඔක්කොම kernel space එකේ එක module එකකට pack කරලා තමයි තිබ්බේ. මෙන්න මේ හේතුව නිසා මේ Kernels වල Size එක ඉතාමත් විශාල උනා. ඔක්කොම එකට තිබ්බ නිසා මොනවා හරි අලුත් දෙයක් එකතු කරොත් හරි මොකක් හරි bug එකක් අවොත් අහරි නැවතත් සම්පුර්ණ kernel කේත සටහනම මුල ඉදල recompile කරන්න සිද්ද උනා. මේ recompile කරන්න ගොඩක් වෙලාව යන වැඩක්. ඉතින් ඔන්න ඔය හේතු නිසා මේ Monolithic Kernels වල පසුබෑමක් දකින්නට උනා. නමුත් පසුකාලීනව ඔක්කොම දේවල් එක module එකකට pack කරනවා වෙනුවට එක එක modules වලින් මේ kernel එක නිර්මාණය කරන්න පටන් ගත්ත. එතකොට පුළුවන් මේ services ඕනේ වෙලාවන්වලට load සහ Unload කරගන්න. ඉතින් ඔය නිසා අයෙමත් මෙහෙයුම් පද්ධති වල මේක භාවිතා කරන්න පටන් ගත්තා. මොකද දැන් හරිම ලේසි මොකක් හරි bug එකක් අවොත් fix කරන්න එහෙම. කරන්න තියෙන්නේ ඕනේ කරන module එක recomplie කරන්න විතරයි. Linux භාවිතා කරන්නේ මෙන්න මේ Monolithic Kernels.
Micro Kernels / μ-kernel
කලින් කතා කරපු Monolithic Kernels වලට බැරුව ගිය එයාගේ Kernel කේත සටහන් වල Size එක අඩුකරගන්න. ඔන්න ඕකට විසදුමක් විදිහට තාමයි මේ Micro Kernels / μ-kernel නිර්මාණය වෙනේ. මේ Micro Kernels / μ-kernel වලට හැකියාව තියනවා සමහර basic services වලට (driver management, protocol stack, file system etc...) user space එකේ run වෙන්න ඉඩ දෙන්න. මෙන්න මේ හේතුව නිසා kernel code size එක අඩුයි මේ Micro Kernels වල. ඒවගේම මෙහෙයුම් පද්ධතියේ ආරක්ෂාව සහ ස්ථායි භාවයත් Monolithic Kernels භාවිතා කරන මෙහෙයුම් පද්ධතියක් එක්ක බලද්දී ඉහලින් තමයි තිබ්බේ. එහෙම කියන්න හේතුව තමයි basic service එක වෙන Nertwork එක crash උනොත් buffer overflow වගේ දෙයක් නිසා networking service's වලට අදාල memory එක විතරයි අවුල් යන්නේ අනිත් සේරම ටික හොදට වැඩ. මේ Kernel architecture එකේදී user space එකේ කොටසක් කරපු basic OS services servers විදිහට තමයි run වෙන්න සලස්වන්නේ. මේව system එකේ තියන අනිත් programs වලට භාවිතා කරන්න පුළුවන්. මේ ක්රමයට කියන්නේ inter process communication (IPC) කියලයි. උදාහරණ විදිහට අපිට device drivers, network protocol stacks, file systems, graphics, වගේ ඒවලට servers තියනවා. මේ servers වල විශේෂත්වය තමයි kernel එක විසින් ඒවලට අවසර ලබා දීල තියනවා physical memory එකේ කොටස් සම සම්බන්ද කම් පවත්වන්න.මේ නිසා මෙවලට හැකියාව තියනවා පරිගණකයේ තියන Hardware සමග කෙලින්ම සම්බන්ධවෙන්න. මේවා computer startup එකේදිම එයාලගේ service එක ආරම්භ කරනව. ඉතින් kernel space එකේ රුන් වෙන්නේ Managing memory protection, Process scheduling, Inter Process communication (IPC) කියන services තුන විතරයි. අනිත් ඒවා user space එකේ run කරවන්න මේ Micro kernels වලට හැකියාව තියනවා. MacOS, Windows NT භාවිතා කරන්නේ Micro kernels.
කලින් කතා කරපු Monolithic Kernels වලට බැරුව ගිය එයාගේ Kernel කේත සටහන් වල Size එක අඩුකරගන්න. ඔන්න ඕකට විසදුමක් විදිහට තාමයි මේ Micro Kernels / μ-kernel නිර්මාණය වෙනේ. මේ Micro Kernels / μ-kernel වලට හැකියාව තියනවා සමහර basic services වලට (driver management, protocol stack, file system etc...) user space එකේ run වෙන්න ඉඩ දෙන්න. මෙන්න මේ හේතුව නිසා kernel code size එක අඩුයි මේ Micro Kernels වල. ඒවගේම මෙහෙයුම් පද්ධතියේ ආරක්ෂාව සහ ස්ථායි භාවයත් Monolithic Kernels භාවිතා කරන මෙහෙයුම් පද්ධතියක් එක්ක බලද්දී ඉහලින් තමයි තිබ්බේ. එහෙම කියන්න හේතුව තමයි basic service එක වෙන Nertwork එක crash උනොත් buffer overflow වගේ දෙයක් නිසා networking service's වලට අදාල memory එක විතරයි අවුල් යන්නේ අනිත් සේරම ටික හොදට වැඩ. මේ Kernel architecture එකේදී user space එකේ කොටසක් කරපු basic OS services servers විදිහට තමයි run වෙන්න සලස්වන්නේ. මේව system එකේ තියන අනිත් programs වලට භාවිතා කරන්න පුළුවන්. මේ ක්රමයට කියන්නේ inter process communication (IPC) කියලයි. උදාහරණ විදිහට අපිට device drivers, network protocol stacks, file systems, graphics, වගේ ඒවලට servers තියනවා. මේ servers වල විශේෂත්වය තමයි kernel එක විසින් ඒවලට අවසර ලබා දීල තියනවා physical memory එකේ කොටස් සම සම්බන්ද කම් පවත්වන්න.මේ නිසා මෙවලට හැකියාව තියනවා පරිගණකයේ තියන Hardware සමග කෙලින්ම සම්බන්ධවෙන්න. මේවා computer startup එකේදිම එයාලගේ service එක ආරම්භ කරනව. ඉතින් kernel space එකේ රුන් වෙන්නේ Managing memory protection, Process scheduling, Inter Process communication (IPC) කියන services තුන විතරයි. අනිත් ඒවා user space එකේ run කරවන්න මේ Micro kernels වලට හැකියාව තියනවා. MacOS, Windows NT භාවිතා කරන්නේ Micro kernels.


< කතෘගේ අවසරය මත මා විසින් උපුටා ගන්නා ලදී !>