Linux Kernel အကြောင်း သိကောင်းစရာ အပိုင်း (၂)

အရှေ့တပိုင်းမှာတော့ Linux kernel စတင်ခဲ့ပုံ ကိုအနည်းငယ် မိတ်ဆက် ပေးပြီးသွားပါပြီ။ Linus Torvalds က kernel တစ်ခုကိုရေးဖို့ စိတ်ကူးထားခဲ့တာမျိုးမဟုတ်ပဲနဲ့ Unix-like operating system တစ်ခုစိတ်ကူးပုံဖော်ခဲ့တာပါ။ တကယ်တန်းလက်တွေ့မှာတော့ မထင်မှတ်ပဲ kernel တစ်ခုကို ရေးပြီးသားဖြစ်သွားတာပါ။ အဲ့ဒါကိုလည်း သူနဲ့ David Diamond ရေးတဲ့ Just For Fun ဆိုတဲ့ စာအုပ်မှာလည်း ပြက်လုံးထုတ်ပြီးရေးသွားပါတယ်။ စာအုပ်ရဲ့အဖုံးမှာလည်း The story of an accidental revolutionary လို့ဆိုပြီးတော့လည်း စာအုပ်နာမည်အောက်မှာရေးထားပါတယ်။ ဘယ်လိုပဲဖြစ်ဖြစ် ဝါသနာပါလို့ တစ်ခုခုလုပ်မယ်ဆိုပြီးတော့ အားစိုက်ထုတ်ရာကနေ ရလာတဲ့ ရလာဒ် တစ်ခုဖြစ်ပါတယ်။ နောက်ပြီးတော့ သူရေးခဲ့တာလည်း Minix လို platform မှာ စမ်းသပ်သုံးဖို့ကို ရည်ရွယ်ပြီးတော့မှ ရေးခဲ့တာလည်းဖြစ်ပါတယ်။ Minix ကတော့ Unix-like system တစ်ခုဖြစ်ပြီးတော့ နည်းပညာသင်ကြားရေးမှာ အထောက်အကူ ဖြစ်စေဖို့ထုတ်ထားတဲ့ system တစ်ခုဖြစ်ပါတယ်။ ဒီမှာတော့ Minix အကြောင်း၊ Unix အကြောင်းကိုလည်း နည်းနည်းရှင်းဖို့ လိုမယ်လို့ ထင်ပါတယ်။ ဒါ့အပြင် C programming language ဖြစ်ပေါ်လာပုံကိုပါ မပြောလို့ မပြီးပါဘူး။ အဲ့ဒါကြောင့် နည်းနည်းတော့ တတ်နိုင်သလောက် အကျဉ်းချုပ်ပြီးတော့ ပြောပါ့မယ်။

C programming နဲ့ Unix ဆက်နွယ်ပုံအကျဉ်းချုပ်

အစောပိုင်းထွက်တဲ့ high-level programming language ဖြစ်တဲ့ C ကိုတော့ Dennis Ritchie က Bell Labs မှာ ၁၉၆၉ခုနှစ် နဲ့ ၁၉၇၃ ခုနှစ်ကြားမှာ စတင်ပြီးတော့ တီထွင်ခဲ့ပါတယ်။ C Compiler ဟာ အဲ့ဒီတုန်းက system တော်တော်များများမှာ အလုပ်ဖြစ်လွန်းလို့ လူသုံးများလာခဲ့တာ အခုချိန်ထိ လို့ဆိုရမှာဖြစ်ပါတယ်။ တချိန်ထဲမှာဆိုသလို Dennis Ritchie ဟာ Ken Thompson နဲ့ တခြားသော developer က Unix operating system ကို ၁၉၆၉ ခုနှစ်ထဲမှာ စတင်ပြီးတော့ Bell Labs နဲ့ AT&T မှာ တည်ဆောက်နေပါတယ်။ ၁၉၇၀ ခုနှစ်မှာတော့ Unix ကို ပထမဆုံး အနေနဲ့ စတင်ထုတ်ခဲ့ပါတယ်။ အစပိုင်းမှာ လိုအပ်ချက်တွေရှိနေတာကြောင့် ၁၉၇၂ ခုနှစ်မှာ Dennis Ritchie ရဲ့ C programming language နဲ့ ပြန်ပြင်ပြီးတော့ရေးခဲ့ပါတယ်။ Unix ကို Bell System ရဲ့အောက်မှာ သီးသန့် အသုံးပြုဖို့ ရည်ရွယ်ထားသော်လည်း၊ ၁၉၇၀ခုနှစ်နှောင်းပိုင်းမှာ အဲ့ဒီအချိန်ကစပြီးတော့ Unix ဟာ cross-platform compatible ဖြစ်တာကြောင့် system တော်တော်များများအတွက် အသုံးပြုလာကြတဲ့အပြင်၊ နည်းပညာသင်ကြားရေးမှာ အထောက်အကူပြုဖို့အတွက် တက္ကသိုလ်တွေနဲ့ စီးပွားရေးလုပ်ငန်းတွေကပါ ပြန်လည်ပြင်ဆင်ပြီးတော့ တွင်တွင်ကျယ်ကျယ် အသုံးပြုလာကြပါတယ်။

Unix ဟာ License နဲ့ operating system တစ်ခုဖြစ်ပြီးတော့ Bell Labs နဲ့ AT&T အတွက် research လုပ်ဖို့ ထုတ်ထားတဲ့ platform တစ်ခုပါ။ Unix ရဲ့ license ကိုကိုင်ထားတဲ့ AT&T က BSD ကို Unix ရဲ့ code တွေကိုယူသုံးတယ်ဆိုပြီးတော့ တရားစွဲခဲ့ဘူးပါတယ်။ BSD (Berkeley Software Distribution) ကိုတော့ Computer Systems Research Group (CSRG) က University of California (UC), Berkeley မှာ Unix ရဲ့ 6th edition ကို အခြေခံပြီးတော့ ရေးထားတာဖြစ်ပါတယ်။ AT&T က BSD ကို တရားစွဲလိုက်တာကြောင့်လည်း BSD project ရဲ့ တိုးတက်နှုန်းကလည်း အရမ်းကိုနှေးသွားခဲ့ရပါတယ်။ အဲ့လို အဖြစ်အပျက်တွေနောက်ပိုင်းမှာတော့ Unix ကို sub-license သဘောမျိုးနဲ့ AT&T ကခွင့်ပြုတဲ့ ပုံစံခွက်ထဲမှာ Unix ကို မွေးစားချင်တဲ့ platform တွေက အဲ့ဒီ sub-license အောက်မှာ ပြန်လည်ပြီးတော့ develop လုပ်လာကြပါတယ်။ ဥပမာပေးရရင် Apple ရဲ့ Mac OS X နဲ့ အခုနောက်ပိုင်းထွက်တဲ့ macOS တို့ဟာဆိုရင် Unix ကိုအခြေခံထားတဲ့ system တွေပါ။

Unix-like Operating System များ ပေါက်ဖွားလာပုံ အကျဉ်းချုပ်

အထက်မှာရှင်းပြခဲ့တဲ့ အရှုပ်တော်ပုံတွေကြောင့် Unix ကို တိုက်ရိုက် မမွေးစားတော့ပဲနဲ့ open source ကိုသွားချင်တဲ့ system တွေဟာ Unix-like ဆိုပြီးတော့ ကိုယ်ပိုင် source code နဲ့ kernel တွေ၊ operating system တွေ၊ compiler တွေကို အစကနေပြီးတော့ ပြန်ရေးခဲ့ကြပါတယ်။ Minix ကတော့ အဲ့ဒီအချိန်က လူသုံးများတဲ့ Unix-like operating system တစ်ခုဖြစ်ပါတယ်။ သူ့ကိုတော့ Andrew S. Tanenbaum ဆိုတဲ့ ပုဂ္ဂိုလ်က နည်းပညာသင်ကြားရေးမှာ အသုံးပြုလို့ရအောင် ရေးထားတာပါ။ နောက်ပြီးတော့ Minix ရဲ့ source code ကို နည်းပညာတက္ကသိုလ် ကျောင်းသားတွေ အလွယ်တကူလေ့လာလို့ ရအောင်လို့ ပြန်ဝေမျှပါတယ်။ Linus Torvalds ကလည်း အစကတည်းက Minix လို မျိုး operating system တစ်ခုရေးမယ်လို့ စိတ်ကူးထားပုံရပါတယ်။ သို့သော်လည်း operating system တစ်ခုလုံး မပြီးလိုက်ပဲနဲ့ backbone ဖြစ်တဲ့ kernel ကိုသာ ရုပ်လုံးပေါ်အောင်ရေးနိုင်ခဲ့ပါတယ်။ ဆိုလိုချင်တာက ဒီလောက်ဆိုအဲ့ဒီအချိန်က Unix-like OS တွေကို နည်းပညာသမားတွေ ဘယ်လောက်တောင် ရှုးသွပ်နေခဲ့ကြသလဲဆိုတာကို ခန့်မှန်းလို့ရပါပြီ။ တနည်းအားဖြင့် programming language ဘက်မှာလည်း အဲ့ဒီ အချိန်က C လိုမျိုး high-level language တွေထွက်ပေါ်တာလာကြောင့်လည်း Unix-like OS ကို လိုက်ရေးတဲ့ ခေတ်ထခဲ့ဟန်တူပါတယ်။

ထိုနည်းတူစွာ ၁၉၈၃ ခုနှစ်ကတည်းစပြီးတော့ Richard Stallman ဆိုတဲ့ ပုဂ္ဂိုလ်ကြီးဟာလည်း GNU ဆိုတဲ့ project ကြီးကို စတင်ကြေငြာခဲ့ပါတယ်။ Richard Stallman အကြောင်းကိုတော့ အရှေ့ပိုင်း GNU GPL အကြောင်းတွေကို ပြောတုန်းကအများကြီးကို မိတ်ဆက်ပေးဘူးပါတယ်။ GNU project အစမှာတော့ Unix-like system တွေမှာ အသုံးပြုလို့ရမယ့် application လေးတွေကိုရေးဖို့သာဖြစ်ပါတယ်။ GNU Emacs တို့ GNU C compiler တို့ ဟာဆိုရင်ဖြင့် ထင်ရှားတဲ့ GNU project ကထွက်လာတဲ့ အစောဆုံး အဆင့်မြင့် text editor application နဲ့ C compiler တို့ပဲဖြစ်ပါတယ်။ နောက်ပိုင်းမှာတော့ GNU ဟာ Unix-like operating system တစ်ခုတည်ဆောက်ဖို့အထိကို project ကကြီးကျယ်ခမ်းနားသွားပါတော့တယ်။ OS အတွက်လိုတဲ့ kernel ကိုလည်း Richard Stallman က ဦးဆောင်ပြီးတော့ GNU Hurd ဆိုတဲ့နာမည်နဲ့ develop လုပ်ခဲ့ပါတယ်။ Hurd မှာအဆင်မပြေတာတွေအများကြီးရှိခဲ့ပါတယ်။ နောက်ပြီးတော့ ထင်ထားသလောက် community က contribution နဲ့ support မရခဲ့တာကြောင့် Hurd က အသုံးပြုလို့ရတဲ့အဆင့်ထိ မရောက်ခဲ့ပါဘူး။ kernel မရှိရင် OS ဟာ backbone မရှိတဲ့အတွက် ဘယ်လိုမှ operating state တစ်ခုမရနိုင်ပါဘူး။ GNU system ဟာလည်း kernel အဆင်သင့် မဖြစ်သေးတဲ့အတွက် သုံးလို့ရတဲ့ operating system တစ်ခုအဆင့်ကို အဲ့ဒီအချိန်က မရောက်လှမ်းနိုင်ခဲ့ပါဘူး။

Linux Kernel အစပိုင်း ခရီးစဉ်

၁၉၉၁ ခုနှစ်မှာတော့ Linus Torvalds ဟာလည်း သူ့ရဲ့ မပြီးပြတ်သေးတဲ့ Unix-like system တစ်ခုကနေပြီးတော့ Hurd ထက် stable ဖြစ်တဲ့ Linux kernel ကို စတင်မိတ်ဆက် ပေးခဲ့ပါတယ်။ အဲ့ဒီ Linux kernel ကိုလည်း C programming language နဲ့ ရေးထားပြီးတော့ GNU C compiler ကိုအသုံးပြုထားပါတယ်။ ထိုစဉ်က Linus Torvalds ဟာ သူ့ရဲ့ kernel ကတော့ အဆင်သင့်ဖြစ်သလောက်ရှိပါပြီ၊ ဒါပေမယ့် Linux kernel တစ်ခုတည်းနဲ့ ဘာမှလုပ်လို့ရမှာ မဟုတ်ပါဘူးတဲ့။ သူနဲ့ တွဲသုံးဖို့ကိုတော့ တခြား Unix-like platform တစ်ခုလိုပါလိမ့်မယ်လို့လည်းသူကဆိုခဲ့ပါတယ်။ GNU project မှာလည်း Hurd က ဘာမှဆက်မဖြစ်တော့တဲ့အတွက် Linux kernel ကို GNU project ထဲကို ထည့်ပြီးတော့ စမ်းသပ်အသုံးပြုရင်းနဲ့ Linux ဟာ Hurd ထက် အဆင်ပြေတယ်ဆိုတာကိုတွေ့ရပါတော့တယ်။ အဲ့ဒါကြောင့်လည်း Linux ကို GNU ရဲ့ kernel အဖြစ်ယူသုံးပြီးတော့ တချိန်တည်းမှာပဲ Hurd ကိုလည်း သီးသန့် kernel တစ်ခုဖြစ်အောင် ကြိုးပမ်း ခဲ့ကြပါတယ်။ developer တွေဟာလည်း Linux kernel ဟာ ယာယီ kernel တစ်ခုသာဖြစ်ပြီးတော့ Hurd အဆင်သင့် ဖြစ်ရင် မလွှဲမသွေ Hurd က Linux ထက်ကောင်းမယ်လို့သာ ယူဆထားခဲ့ပါတယ်။

GNU project ထဲကို Linux kernel ရောက်လာပြီးတဲ့နောက် project ရဲ့ အရှိန်ဟာလည်း ပိုပိုပြီးတော့ မြန်ဆန်လာပါတော့တယ်။ free software ကို လိုက်တဲ့ developer တွေနဲ့ hobbyist တွေကလည်း Linux kernel နဲ့ GNU project မှာလိုအပ်တဲ့ အရာတွေကို ဝိုင်းပြီးတော့ contribute လုပ်ကြပါတယ်။ အဲ့ဒါကြောင့်လည်း GNU/Linux ဆိုပြီးတော့ ခိုင်မာတောင့်တင်းတဲ့ Unix-like system တစ်ခုဖြစ်လာပါတော့တယ်။ Hurd kernel ကတော့ ထင်ထားသလို မဖြစ်လာပဲ တပိုင်းတစနဲ့ပဲ အဆုံးသတ်လိုက်ရပါတယ်။ အခုချိန်ထိ Linux ကိုသာ OS တစ်ခုအနေနဲ့ သိထားကြပြီးတော့ GNU/Linux ရယ်လို့ လူသိပ်မသိပါဘူး။ Richard Stallman ကြီးက အဲ့ဒါကို သဘောသိပ်မတွေ့ပါဘူး။ တချိန်မှာ Richard Stallman က သူရဲ့ project နာမည် GNU ပျောက်သွားမှာ စိုးရိမ်ပြီးတော့ Lignux လို့ခေါ်ဖို့တိုက်တွန်းပါတယ်။ Linux ဆိုတဲ့ နာမည်ကြားမှာ GNU ဆိုတဲ့ branding ကို အတင်းထည့်လိုက်တဲ့သဘောပါ။ ဘယ်သူမှ အဲ့ဒီနာမည်ကို လိုက်မခေါ်ကြပါဘူး။ GNU/Linux ကိုသာ သဘောတူလိုက်ကြပြီးတော့ ယနေ့တိုင် GNU/Linux လို့သာခေါ်ပါတယ်။ သို့သော်လည်း Linux လို့သာ လူသိများပါတယ်။ Richard Stallman က အဲ့ဒီ Linux OS လို့ခေါ်တာကို ဘာလို့ အချဉ်ပေါက်သလဲဆိုတာကို စာဖတ်သူတို့ ရိပ်စားမိမယ်လို့ထင်ပါတယ်။ စာရေးသူအနေနဲ့လည်း GNU/Linux ဆိုတာကိုသာ ပိုပြီးတော့ သဘောတွေ့မိပါတယ်။ ဒါမှလည်း GNU project ရဲ့ စွမ်းဆောင်ရည်တွေကို credit ပေးရာ အသိအမှတ်ပြုရာ ရောက်မှာဖြစ်ပါတယ်။ Linux kernel က အရေးကြီးပါတယ်။ သို့သော်လည်း GNU လိုမျိုး platform မရှိရင်တော့ Linux kernel ဟာလည်း အမှောင်ထဲမှာပဲ လမ်းပျောက်ကြယ် အနေနဲ့သာ ရပ်တည်ရမယ့် အနေအထားဖြစ်ပါတယ်။

ဒီအပိုင်းမှာတော့ Linux kernel ရဲ့ အစပိုင်း ခရီးကြမ်း နဲ့ သူ့မတိုင်ခင် သမိုင်းဝင် ဖြစ်စဉ်တွေကို အကျဉ်းချုပ်ပြီးတော့ ဖော်ပြပေးထားပါတယ်။ C programming language အကြောင်း၊ Unix အကြောင်း၊ BSD နဲ့ Minix အကြောင်းတွေဟာလည်း Unix-like OS ဖြစ်တဲ့ GNU/Linux အကြောင်းပြောတဲ့အခါမှာ မပါမဖြစ်ပါ။ GNU/Linux ဟာဆိုရင် GNU project နဲ့ Linux kernel တို့ရဲ့ ဆုံမှတ်ပါ။ နည်းပညာလောကမှာ အကောင်းဆုံး အရာနှစ်ခုပေါင်းဆုံရာ ဆုံမှတ်လို့ စာရေးသူမြင်မိပါတယ်။ နောက်တပိုင်းမှာတော့ Linux kernel ကို Linus Torvalds ကြီးဘယ်လို ဦးဆောင်ပုံ၊ GNU/Linux အောက်ကနေ မတူတဲ့ distro တွေခွဲထွက်လာပုံ၊ kernel version release လုပ်ပုံတွေကို ဆက်လက်တင်ပြလိုပါတယ်။ စာဖတ်သူတို့ စိတ်ဝင်စားမယ်လို့ထင်ပါတယ်။ ဒီအပိုင်းကိုတော့ ဒီမှာပဲ ရပ်လိုက်ပါတော့မယ်။

Last updated