လည်ပတ်မှုစနစ်များ- လွယ်ကူသောအပိုင်းသုံးပိုင်း။ အပိုင်း 2- Abstraction- လုပ်ငန်းစဉ် (ဘာသာပြန်)

Operating Systems မိတ်ဆက်

ဟေး ဟာဘ! ကျွန်တော့်အမြင်အရ စိတ်ဝင်စားစရာကောင်းတဲ့ စာပေတစ်ခုဖြစ်တဲ့ OSTEP ရဲ့ ဆောင်းပါးတွေကို ဘာသာပြန်ထားတဲ့ အခန်းဆက်တွေကို သင့်အာရုံစိုက်စေချင်ပါတယ်။ ဤအကြောင်းအရာသည် unix ကဲ့သို့သော လည်ပတ်မှုစနစ်များ၏ လုပ်ဆောင်မှုကို အတော်လေး နက်နက်ရှိုင်းရှိုင်း ဆွေးနွေးထားပြီး၊ ဆိုလိုသည်မှာ၊ လုပ်ငန်းစဉ်များ၊ အချိန်ဇယားဆွဲသူများ၊ မန်မိုရီနှင့် ခေတ်မီ OS တစ်ခုအဖြစ် ဖန်တီးထားသည့် အခြားသော အလားတူ အစိတ်အပိုင်းများနှင့် အလုပ်လုပ်ပါသည်။ ပစ္စည်းအားလုံး၏ မူရင်းကို ဤနေရာတွင် ကြည့်ရှုနိုင်ပါသည်။ ဒီမှာ. ဘာသာပြန်ခြင်းကို ပရော်ဖက်ရှင်နယ်ကျကျ (လွတ်လွတ်လပ်လပ်) ရေးသားထားခြင်းမဟုတ်ကြောင်း ကျေးဇူးပြု၍ မှတ်သားထားပါ၊ သို့သော် ယေဘူယျအဓိပ္ပါယ်ကို ကျွန်ုပ်ဆက်လက်ထိန်းသိမ်းထားရန် မျှော်လင့်ပါသည်။

ဤအကြောင်းအရာအတွက် ဓာတ်ခွဲခန်းကို ဤနေရာတွင် တွေ့နိုင်သည်-

အခြားအစိတ်အပိုင်းများ-

ကျွန်ုပ်၏ ချန်နယ်တွင်လည်း ကြည့်ရှုနိုင်ပါသည်။ ကြေးနန်းစာ =)

OS သည် သုံးစွဲသူများအတွက် ပေးဆောင်သည့် အခြေခံအကျဆုံး နှိုက်နှိုက်ချွတ်ချွတ်ချွတ်ခြုံကျမှုကို ကြည့်ကြပါစို့- လုပ်ငန်းစဉ်။ လုပ်ငန်းစဉ်၏အဓိပ္ပာယ်ဖွင့်ဆိုချက်သည်အတော်လေးရိုးရှင်းပါသည်။ လုပ်ဆောင်နေသော ပရိုဂရမ်. ပရိုဂရမ်ကိုယ်တိုင်က disk ပေါ်တွင်တည်ရှိပြီး အသက်မဲ့သောအရာဖြစ်သည် - ၎င်းသည် ညွှန်ကြားချက်အစုတစ်ခုဖြစ်ပြီး စတင်ရန်စောင့်ဆိုင်းနေသည့် static data အချို့လည်းဖြစ်နိုင်သည်။ ၎င်းသည် ထိုဘိုက်များကိုယူ၍ ၎င်းတို့ကိုလည်ပတ်စေပြီး ပရိုဂရမ်ကို အသုံးဝင်သောအရာအဖြစ်သို့ ပြောင်းလဲပေးသည့် OS ဖြစ်သည်။
အများစုမှာ၊ အသုံးပြုသူများသည် တစ်ချိန်တည်းတွင် ပရိုဂရမ်တစ်ခုထက်ပို၍ လုပ်ဆောင်လိုသည်၊ ဥပမာအားဖြင့်၊ သင်သည် ဘရောက်ဆာ၊ ဂိမ်း၊ မီဒီယာပလေယာ၊ စာသားတည်းဖြတ်သူနှင့် သင့်လက်ပ်တော့ပေါ်တွင် ၎င်းကဲ့သို့သော အရာများကို လုပ်ဆောင်နိုင်သည်။ တကယ်တော့၊ ပုံမှန်စနစ်တစ်ခုသည် ဆယ်ဂဏန်း သို့မဟုတ် ရာနှင့်ချီသော လုပ်ငန်းစဉ်များကို တစ်ပြိုင်နက် လုပ်ဆောင်နိုင်သည်။ ဤအချက်သည် စနစ်ကို အသုံးပြုရန် ပိုမိုလွယ်ကူစေသည်၊ CPU သည် အလကားဖြစ်မဖြစ် စိတ်ပူစရာ မလိုပါ၊ ပရိုဂရမ်များကိုသာ လုပ်ဆောင်ပါသည်။

၎င်းသည် ပြဿနာကို ဖြစ်ပေါ်စေသည်- များစွာသော CPU များ၏ ထင်ယောင်ထင်မှားမှုကို မည်သို့ ပံ့ပိုးပေးမည်နည်း။ သင့်တွင် ရုပ်ပိုင်းဆိုင်ရာ CPU တစ်ခုသာရှိလျှင်ပင် OS သည် အကန့်အသတ်မရှိနီးပါးရှိသော CPU များ၏ အသွင်အပြင်ကို မည်သို့ဖန်တီးနိုင်မည်နည်း။

OS သည် CPU virtualization မှတဆင့် ဤထင်ယောင်ထင်မှားကို ဖန်တီးသည်။ လုပ်ငန်းစဉ်တစ်ခုစတင်ပြီးနောက် ၎င်းကိုရပ်တန့်လိုက်ကာ အခြားလုပ်ငန်းစဉ်တစ်ခုစတင်ခြင်းဖြင့်၊ OS သည် အမှန်တကယ်တွင် ရုပ်ပိုင်းဆိုင်ရာပရိုဆက်ဆာတစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော ပရိုဆက်ဆာများစွာရှိလိမ့်မည်ဟူသောထင်ယောင်ထင်မှားကို OS မှ ထိန်းသိမ်းထားနိုင်သည်။ ဤနည်းပညာကိုခေါ်သည်။ CPU အရင်းအမြစ်များကို အချိန်အားဖြင့် ပိုင်းခြားခြင်း။. ဤနည်းပညာသည် သုံးစွဲသူများအား ၎င်းတို့ဆန္ဒရှိသလောက် တစ်ပြိုင်တည်း လုပ်ငန်းစဉ်များစွာကို လုပ်ဆောင်နိုင်စေပါသည်။ ဤဖြေရှင်းချက်၏ကုန်ကျစရိတ်မှာ စွမ်းဆောင်ရည်ဖြစ်သည် - CPU ကို လုပ်ငန်းစဉ်များစွာဖြင့် မျှဝေပါက၊ လုပ်ငန်းစဉ်တစ်ခုစီသည် ပိုမိုနှေးကွေးသွားမည်ဖြစ်သည်။
CPU virtualization ကိုအကောင်အထည်ဖော်ရန်နှင့် အထူးသဖြင့် ၎င်းကို ကောင်းမွန်စွာလုပ်ဆောင်ရန်၊ OS သည် အဆင့်နိမ့်နှင့် အဆင့်မြင့်ပံ့ပိုးမှုနှစ်ခုစလုံး လိုအပ်ပါသည်။ အဆင့်နိမ့်သော အထောက်အပံ့ဟု ခေါ်သည်။ ယန္တရားများ လုပ်ဆောင်နိုင်စွမ်း၏ လိုအပ်သောအစိတ်အပိုင်းကို အကောင်အထည်ဖော်သည့် အဆင့်နိမ့်နည်းလမ်းများ သို့မဟုတ် ပရိုတိုကောများဖြစ်သည်။ ထိုသို့သောလုပ်ဆောင်နိုင်စွမ်း၏ဥပမာတစ်ခုမှာ context switching ဖြစ်ပြီး OS အား ပရိုဂရမ်တစ်ခုအား ရပ်တန့်စေပြီး ပရိုဆက်ဆာပေါ်တွင် အခြားပရိုဂရမ်တစ်ခုကို လုပ်ဆောင်နိုင်စေပါသည်။ ဤအချိန်ပိုင်းကို ခေတ်မီလည်ပတ်မှုစနစ်အားလုံးတွင် အကောင်အထည်ဖော်သည်။
ဤယန္တရားများ၏ထိပ်တွင် "မူဝါဒများ" ပုံစံဖြင့် OS တွင်တည်ဆောက်ထားသောယုတ္တိဗေဒအချို့ဖြစ်သည်။ မူဝါဒက Operating System အတွက် သေချာသော ဆုံးဖြတ်ချက်ချသည့် algorithm တစ်ခုဖြစ်သည်။ ဥပမာအားဖြင့် အဆိုပါမူဝါဒများသည် မည်သည့်ပရိုဂရမ်ကို စတင်သင့်သည် (အမိန့်တော်စာရင်းမှ) ဦးစွာ ဆုံးဖြတ်ပါ။ ဒါကြောင့် ဥပမာအားဖြင့် ဒီပြဿနာကို ပေါ်လစီလို့ခေါ်တဲ့ အတိုင်း ဖြေရှင်းသွားမယ်။ အချိန်ဇယားဆွဲသူ (အချိန်ဇယားဆွဲခြင်းမူဝါဒ) ဖြေရှင်းချက်တစ်ခုကို ရွေးချယ်သည့်အခါ၊ စတင်မှုမှတ်တမ်း (နောက်ဆုံးမိနစ်တွင် အကြာဆုံးစတင်ခဲ့သည့် ပရိုဂရမ်)၊ ဤလုပ်ငန်းစဉ်တွင် မည်သည့်အရာများပါဝင်သည် (မည်သည့်ပရိုဂရမ်အမျိုးအစားများကို စတင်ခဲ့သည်)၊ စွမ်းဆောင်ရည်မက်ထရစ်များ (စနစ်ရှိမရှိ၊ အပြန်အလှန်အကျိုးသက်ရောက်မှုအတွက် သို့မဟုတ် ဖြတ်သန်းမှုအတွက် ) စသည်တို့ကို ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ထားသည်။

Abstraction: လုပ်ငန်းစဉ်

Operating System မှ လုပ်ဆောင်သော လည်ပတ်နေသော ပရိုဂရမ်တစ်ခု၏ abstraction သည် ကျွန်ုပ်တို့ ခေါ်ဆိုသောအရာ ဖြစ်သည်။ ဖြစ်စဉ်. အစောပိုင်းတွင် ဖော်ပြခဲ့သည့်အတိုင်း၊ လုပ်ငန်းစဉ်သည် ရိုးရှင်းစွာ လည်ပတ်နေသည့် ပရိုဂရမ်တစ်ခုဖြစ်ပြီး အချိန်နှင့်တပြေးညီ အချိန်မရွေး၊ ဤပရိုဂရမ်သည် ၎င်း၏လုပ်ဆောင်မှုအတွင်း ဤပရိုဂရမ်က ဝင်ရောက် သို့မဟုတ် သက်ရောက်မှုရှိသော စနစ်အမျိုးမျိုးမှ အကျဉ်းချုပ်အချက်အလက်များကို ကျွန်ုပ်တို့ ရယူနိုင်သည့် ပရိုဂရမ်တစ်ခုဖြစ်သည်။
လုပ်ငန်းစဉ်၏ အစိတ်အပိုင်းများကို နားလည်ရန်၊ စနစ်၏ အခြေအနေများကို နားလည်ရန် လိုအပ်သည်- ပရိုဂရမ်သည် ၎င်း၏ လုပ်ဆောင်မှုအတွင်း မည်သည့်အရာကို ဖတ်နိုင် သို့မဟုတ် ပြောင်းလဲနိုင်သည်။ မည်သည့်အချိန်၌မဆို၊ ပရိုဂရမ်ကိုလုပ်ဆောင်ရန်အတွက်စနစ်၏အစိတ်အပိုင်းများသည်အရေးကြီးသည်ကိုသင်နားလည်ရန်လိုအပ်သည်။
လုပ်ငန်းစဉ်တွင် ပါဝင်သည့် စနစ်၏ ထင်ရှားသောအချက်များထဲမှ တစ်ခုဖြစ်သည်။ မှတ်ဉာဏ်. ညွှန်ကြားချက်များသည် မှတ်ဉာဏ်ထဲတွင် တည်ရှိနေပါသည်။ ပရိုဂရမ်က ဖတ်သည် သို့မဟုတ် ရေးသည့်ဒေတာသည် မှတ်ဉာဏ်ထဲတွင်လည်း ရှိနေသည်။ ထို့ကြောင့် လုပ်ငန်းစဉ်တစ်ခုမှ ကိုင်တွယ်ဖြေရှင်းနိုင်သော memory (လိပ်စာအာကာသဟုခေါ်သည်) သည် လုပ်ငန်းစဉ်၏ အစိတ်အပိုင်းဖြစ်သည်။
စနစ်အခြေအနေ၏ တစ်စိတ်တစ်ပိုင်းသည်လည်း မှတ်ပုံတင်များဖြစ်သည်။ လမ်းညွှန်ချက်များစွာသည် မှတ်ပုံတင်ခြင်း၏တန်ဖိုးကိုပြောင်းလဲခြင်း သို့မဟုတ် ၎င်းတို့၏တန်ဖိုးကိုဖတ်ရှုခြင်းအတွက် ရည်ရွယ်ပြီး မှတ်ပုံတင်ခြင်းများသည် လုပ်ငန်းစဉ်၏လုပ်ဆောင်မှု၏အရေးကြီးသောအစိတ်အပိုင်းတစ်ခုဖြစ်လာသည်။
စက်အခြေအနေသည် အထူးစာရင်းအင်းအချို့မှလည်း ဖွဲ့စည်းထားကြောင်း သတိပြုသင့်သည်။ ဥပမာအားဖြင့်, IP - ညွှန်ကြားချက်ညွှန်ပြ — ပရိုဂရမ်သည် လက်ရှိလုပ်ဆောင်နေသည့် ညွှန်ကြားချက်ကို ညွှန်ပြသည်။ လည်းရှိတယ်။ pointer stack ၎င်းနှင့်သက်ဆိုင်သည်။ frame pointerစီမံခန့်ခွဲရန်အသုံးပြုသည့်- လုပ်ဆောင်ချက် ကန့်သတ်ချက်များ၊ ဒေသဆိုင်ရာ ကိန်းရှင်များနှင့် ပြန်ပို့လိပ်စာများ။
နောက်ဆုံးတွင်၊ ပရိုဂရမ်များသည် ROM (ဖတ်ရန်သာမန်မိုရီ) ကိုမကြာခဏဝင်ရောက်လေ့ရှိသည်။ ဤ “I/O” (အဝင်/အထွက်) အချက်အလက်များသည် လုပ်ငန်းစဉ်မှ လက်ရှိဖွင့်ထားသော ဖိုင်များစာရင်း ပါဝင်သင့်သည်။

လုပ်ငန်းစဉ် API

လုပ်ငန်းစဉ် မည်သို့အလုပ်လုပ်သည်ကို ကျွန်ုပ်တို့၏နားလည်မှုကို တိုးတက်စေရန်အတွက်၊ မည်သည့် operating system interface တွင်မဆို ထည့်သွင်းသင့်သော စနစ်ခေါ်ဆိုမှုများ နမူနာများကို လေ့လာကြည့်ကြပါစို့။ ဤ API များကို မည်သည့် OS တွင်မဆို ပုံစံတစ်မျိုး သို့မဟုတ် အခြားတစ်မျိုးဖြင့် ရနိုင်ပါသည်။

● ဖန်တီး (ဖန်တီးမှု): OS တွင် လုပ်ငန်းစဉ်အသစ်များကို ဖန်တီးနိုင်စေမည့် နည်းလမ်းအချို့ ပါဝင်ရပါမည်။ သင်သည် terminal ထဲသို့ အမိန့်တစ်ခုထည့်ပါ သို့မဟုတ် အိုင်ကွန်တစ်ခုပေါ်တွင် နှစ်ချက်နှိပ်ခြင်းဖြင့် အက်ပလီကေးရှင်းကိုဖွင့်သောအခါ၊ လုပ်ငန်းစဉ်အသစ်တစ်ခုဖန်တီးပြီးနောက် သတ်မှတ်ထားသောပရိုဂရမ်ကိုစတင်ရန် OS သို့ခေါ်ဆိုမှုတစ်ခုပေးပို့သည်။
● ဖယ်ရှားရေး: လုပ်ငန်းစဉ်တစ်ခုဖန်တီးရန်အတွက် အင်တာဖေ့စ်တစ်ခုရှိသောကြောင့် OS သည် လုပ်ငန်းစဉ်တစ်ခုအား ဖယ်ရှားရန် အတင်းအကြပ်လုပ်ဆောင်နိုင်စွမ်းကို ပေးစွမ်းသင့်သည်။ ပရိုဂရမ်အများစုသည် ၎င်းတို့လုပ်ဆောင်နေစဉ်တွင် ၎င်းတို့ကိုယ်တိုင် သဘာဝအတိုင်း စတင်ပြီး ရပ်စဲသွားမည်ဖြစ်သည်။ မဟုတ်ပါက အသုံးပြုသူက ၎င်းတို့ကို သတ်ပစ်ချင်ပြီး လုပ်ငန်းစဉ်ကို ရပ်တန့်ရန် အင်တာဖေ့စ်တစ်ခုသည် အသုံးဝင်မည်ဖြစ်သည်။
● စောင့် (စောင့်ဆိုင်းခြင်း)- တစ်ခါတစ်ရံတွင် လုပ်ငန်းစဉ်တစ်ခုပြီးမြောက်ရန် စောင့်ရခြင်းသည် အသုံးဝင်သည်၊ ထို့ကြောင့် စောင့်ဆိုင်းနိုင်မှုကို ပေးစွမ်းနိုင်သော အင်တာဖေ့စ်အချို့ကို ပံ့ပိုးပေးထားသည်။
● အထွေထွေထိန်းချုပ်ရေး (အမျိုးမျိုးသောထိန်းချုပ်မှု) - သတ်ဖြတ်ခြင်းနှင့်လုပ်ငန်းစဉ်ကိုစောင့်ဆိုင်းခြင်းအပြင်၊ အခြားသောထိန်းချုပ်မှုနည်းလမ်းများလည်းရှိသေးသည်။ ဥပမာအားဖြင့်၊ လည်ပတ်မှုစနစ်အများစုသည် လုပ်ငန်းစဉ်တစ်ခုကို အေးခဲစေနိုင်စွမ်းကို ပေးစွမ်းနိုင်သည် (၎င်း၏လုပ်ဆောင်မှုကို အချိန်အတိုင်းအတာတစ်ခုအထိ ရပ်တန့်) ပြီးနောက် ၎င်းကို ပြန်လည်စတင်ခြင်း (ဆက်လက်လုပ်ဆောင်ခြင်း)၊
● status (အခြေအနေ)- လုပ်ငန်းစဉ်တစ်ခု၏အခြေအနေနှင့်ပတ်သက်သော အချက်အလက်အချို့ကို ရယူရန်အတွက် အင်တာဖေ့စ်များသည် အမျိုးမျိုးသော အင်တာဖေ့စ်တစ်ခု ရှိသည်

လည်ပတ်မှုစနစ်များ- လွယ်ကူသောအပိုင်းသုံးပိုင်း။ အပိုင်း 2- Abstraction- လုပ်ငန်းစဉ် (ဘာသာပြန်)

လုပ်ငန်းစဉ်ဖန်တီးမှု- အသေးစိတ်

စိတ်ဝင်စားစရာကောင်းသည့်အချက်တစ်ခုမှာ ပရိုဂရမ်များကို လုပ်ငန်းစဉ်များအဖြစ် အတိအကျပြောင်းလဲခြင်းပင်ဖြစ်သည်။ အထူးသဖြင့် OS က ပရိုဂရမ်ကို ကောက်ယူပြီး အလုပ်လုပ်ပုံပါ။ ဖြစ်စဉ်ကို တိတိကျကျ ဘယ်လိုဖန်တီးထားလဲ။
ပထမဦးစွာ OS သည် ပရိုဂရမ်ကုဒ်နှင့် တည်ငြိမ်ဒေတာကို memory (လုပ်ငန်းစဉ်လိပ်စာနေရာ) သို့ တင်ရပါမည်။ ပရိုဂရမ်များသည် အများအားဖြင့် disk သို့မဟုတ် solid-state drive ပေါ်တွင် အချို့သော executable format ဖြင့်တည်ရှိသည်။ ထို့ကြောင့်၊ ပရိုဂရမ်နှင့် static data များကို memory ထဲသို့ loading လုပ်ခြင်းလုပ်ငန်းစဉ်သည် OS သည် ထို bytes များကို disk မှဖတ်နိုင်ပြီး memory တွင် ၎င်းတို့ကို တစ်နေရာရာတွင်ထားရှိရန် လိုအပ်သည်။

အစောပိုင်းလည်ပတ်မှုစနစ်များတွင်၊ တင်ခြင်းလုပ်ငန်းစဉ်ကို စိတ်အားထက်သန်စွာလုပ်ဆောင်ခဲ့ပြီး၊ ဆိုလိုသည်မှာ ပရိုဂရမ်မစတင်မီကုဒ်တစ်ခုလုံးကို memory ထဲသို့ load လုပ်ပြီးသွားပြီဖြစ်သည်။ ခေတ်မီလည်ပတ်မှုစနစ်များသည် ပရိုဂရမ်ကိုလုပ်ဆောင်နေစဉ်အတွင်း ၎င်းတို့ကိုလိုအပ်သည့်အခါမှသာ ကုဒ်အပိုင်းအစများ သို့မဟုတ် ဒေတာများကို တင်ခြင်းအား ပျင်းရိစွာလုပ်ဆောင်သည်။

ကုဒ်နှင့် တည်ငြိမ်ဒေတာကို OS memory ထဲသို့ တင်လိုက်သည်နှင့်၊ လုပ်ငန်းစဉ် မလည်ပတ်မီ နောက်ထပ် လုပ်ဆောင်ရမည့် အရာအချို့ ရှိသေးသည်။ stack အတွက် မမ်မိုရီအချို့ကို ခွဲဝေပေးရပါမည်။ ပရိုဂရမ်များသည် ဒေသတွင်း ကိန်းရှင်များ၊ လုပ်ဆောင်ချက် ကန့်သတ်ချက်များ နှင့် ပြန်ပေးမည့်လိပ်စာများအတွက် stack ကို အသုံးပြုသည်။. OS သည် ဤမှတ်ဉာဏ်ကို ခွဲဝေပေးပြီး ၎င်းကို လုပ်ငန်းစဉ်သို့ ပေးသည်။ stack ကို အချို့သော arguments များဖြင့်လည်း ခွဲဝေပေးနိုင်သည်၊ အထူးသဖြင့်၊ ဥပမာအားဖြင့် main() function ၏ parameters များကို argc နှင့် argv ၏ array တစ်ခုဖြင့် ဖြည့်ပေးပါသည်။

လည်ပတ်မှုစနစ်သည် ပရိုဂရမ်အစုအဝေးသို့ မမ်မိုရီအချို့ကိုလည်း ခွဲဝေပေးနိုင်သည်။ ဒိုင်းနမစ်ဖြင့်ခွဲဝေထားသောဒေတာကို အတိအလင်းတောင်းဆိုရန် ပရိုဂရမ်များမှ အမှိုက်ပုံအား အသုံးပြုသည်။. ပရိုဂရမ်များသည် လုပ်ဆောင်ချက်ကို ခေါ်ဆိုခြင်းဖြင့် ဤနေရာကို တောင်းဆိုသည်။ malloc () လုပ်ဆောင်ချက်ကို ခေါ်ခြင်းဖြင့် ၎င်းကို ရှင်းလင်းပြတ်သားစွာ ရှင်းလင်းပါ။ အခမဲ့(). ချိတ်ဆက်ထားသောစာရွက်များ၊ hash tables၊ သစ်ပင်များနှင့် အခြားအရာများကဲ့သို့သော ဒေတာဖွဲ့စည်းပုံများအတွက် အမှိုက်ပုံသည် လိုအပ်ပါသည်။ အစပိုင်းတွင်၊ မမ်မိုရီပမာဏအနည်းငယ်ကို အမှိုက်ပုံတွင် ခွဲဝေချထားသော်လည်း အချိန်ကြာလာသည်နှင့်အမျှ ပရိုဂရမ်လည်ပတ်လာသည်နှင့်အမျှ၊ ဖိုင်သည် စာကြည့်တိုက် API ခေါ်ဆိုမှု malloc() မှတစ်ဆင့် မှတ်ဉာဏ်ပိုမိုတောင်းခံနိုင်သည်။ ဤခေါ်ဆိုမှုများကို ကျေနပ်စေရန်အတွက် လည်ပတ်မှုစနစ်သည် မန်မိုရီပိုမိုခွဲဝေပေးသည့်လုပ်ငန်းစဉ်တွင် ပါဝင်ပါသည်။

လည်ပတ်မှုစနစ်သည် အထူးသဖြင့် I/O နှင့်ပတ်သက်သည့် ကနဦးလုပ်ဆောင်စရာများကို လုပ်ဆောင်ပေးမည်ဖြစ်သည်။ ဥပမာအားဖြင့်၊ UNIX စနစ်များတွင်၊ ပုံမှန်အားဖြင့် လုပ်ငန်းစဉ်တစ်ခုစီတွင် စံထည့်သွင်းမှု၊ အထွက်နှင့် အမှားအတွက် အဖွင့်ဖိုင်ဖော်ပြချက် ၃ ခုရှိသည်။ ဤလက်ကိုင်များသည် ပရိုဂရမ်များကို terminal မှ ထည့်သွင်းဖတ်ရှုနိုင်သည့်အပြင် ဖန်သားပြင်ပေါ်ရှိ အချက်အလက်များကို ပြသနိုင်စေပါသည်။

ထို့ကြောင့်၊ ကုဒ်နှင့် ပုံသဏ္ဍာန်ဒေတာများကို မမ်မိုရီထဲသို့ သွင်းခြင်း၊ stack ကို ဖန်တီးခြင်းနှင့် စတင်ခြင်း နှင့် I/O လုပ်ဆောင်မှုများ လုပ်ဆောင်ခြင်းနှင့် သက်ဆိုင်သည့် အခြားအလုပ်များကို လုပ်ဆောင်ခြင်းဖြင့် OS သည် လုပ်ငန်းစဉ်အတွက် အဆင့်ကို ပြင်ဆင်ပေးပါသည်။ နောက်ဆုံးတွင်၊ နောက်ဆုံးလုပ်ဆောင်စရာတစ်ခုကျန်သေးသည်- main() function ဟုခေါ်သော ၎င်း၏ entry point မှတဆင့် ပရိုဂရမ်ကို run ပါ။ main() လုပ်ဆောင်ချက်ကို လုပ်ဆောင်ခြင်းဖြင့် OS သည် အသစ်ဖန်တီးထားသော လုပ်ငန်းစဉ်သို့ CPU ထိန်းချုပ်မှုကို လွှဲပြောင်းပေးသည်၊ ထို့ကြောင့် ပရိုဂရမ်သည် စတင်လုပ်ဆောင်ပါသည်။

လုပ်ငန်းစဉ်အခြေအနေ

ယခု ကျွန်ုပ်တို့သည် လုပ်ငန်းစဉ်တစ်ခု ဖြစ်သည်နှင့် ၎င်းကို မည်သို့ဖန်တီးထားသည်ကို နားလည်သဘောပေါက်ထားပြီး၊ ၎င်းတွင် ပါဝင်နိုင်သည့် လုပ်ငန်းစဉ်များကို စာရင်းပြုစုကြပါစို့။ ၎င်း၏ အရိုးရှင်းဆုံးပုံစံဖြင့်၊ လုပ်ငန်းစဉ်သည် ဤပြည်နယ်များထဲမှ တစ်ခုတွင် ဖြစ်နိုင်သည်-
● ပြေး. လုပ်ဆောင်နေစဉ်၊ လုပ်ငန်းစဉ်သည် ပရိုဆက်ဆာပေါ်တွင် အလုပ်လုပ်သည်။ ဆိုလိုတာက ညွှန်ကြားချက်တွေကို အကောင်အထည်ဖော်နေတယ်။
● အဆင်သင့်. အဆင်သင့်အခြေအနေတွင်၊ လုပ်ငန်းစဉ်သည် အဆင်သင့်ဖြစ်နေပြီဖြစ်သော်လည်း အကြောင်းပြချက်အချို့ကြောင့် OS သည် သတ်မှတ်ထားသည့်အချိန်တွင် ၎င်းကိုလုပ်ဆောင်ခြင်းမရှိပါ။
● ပိတ်ဆို့. ပိတ်ဆို့ထားသော အခြေအနေတွင်၊ လုပ်ငန်းစဉ်သည် အချို့သော ဖြစ်ရပ်များ မဖြစ်ပေါ်မချင်း ၎င်းကို လုပ်ဆောင်ရန် အဆင်သင့်မဖြစ်စေရန် တားဆီးသည့် လုပ်ဆောင်ချက်အချို့ကို လုပ်ဆောင်သည်။ အသုံးများသော ဥပမာတစ်ခုမှာ လုပ်ငန်းစဉ်တစ်ခုသည် IO လည်ပတ်မှုကို စတင်သောအခါတွင် အခြားသော လုပ်ငန်းစဉ်အချို့သည် ပရိုဆက်ဆာကို အသုံးပြုနိုင်ရန် ပိတ်ဆို့သွားပါသည်။

လည်ပတ်မှုစနစ်များ- လွယ်ကူသောအပိုင်းသုံးပိုင်း။ အပိုင်း 2- Abstraction- လုပ်ငန်းစဉ် (ဘာသာပြန်)

ဤပြည်နယ်များကို ဂရပ်ပုံစံဖြင့် ပုံဖော်ကြည့်နိုင်သည်။ ပုံတွင်မြင်ရသည့်အတိုင်း၊ OS ၏ဆုံးဖြတ်ချက်အရ ပြေးခြင်းနှင့် အဆင်သင့်ကြားတွင် လုပ်ငန်းစဉ်အခြေအနေသည် ပြောင်းလဲနိုင်သည်။ လုပ်ငန်းစဉ်တစ်ခု၏ အခြေအနေသည် READY မှ RUNNING သို့ ပြောင်းလဲသောအခါ၊ ၎င်းသည် လုပ်ငန်းစဉ်ကို စီစဉ်ထားသည်ဟု ဆိုလိုသည်။ ဆန့်ကျင်ဘက်ဦးတည်ချက်တွင် - အပြင်အဆင်မှဖယ်ရှားပါ။ လုပ်ငန်းစဉ်တစ်ခုပိတ်ဆို့သွားသည့်အချိန်တွင်၊ ဥပမာ၊ IO လုပ်ဆောင်ချက်ကို ကျွန်တော်စတင်လိုက်သည်၊ ဥပမာ IO ပြီးဆုံးသည့်အချိန်အထိ OS သည် ၎င်းကို ဤအခြေအနေတွင် ထိန်းသိမ်းထားမည်ဖြစ်သည်။ ဤအခိုက်အတန့်တွင် OS က ထိုသို့ဆုံးဖြတ်ပါက READY အခြေအနေသို့ ကူးပြောင်းပြီး ပြေးနေသောအခြေအနေသို့ ချက်ခြင်းဖြစ်နိုင်သည်။
ဤအခြေအနေများမှတဆင့် လုပ်ငန်းစဉ်နှစ်ခု ရွေ့လျားပုံဥပမာကို ကြည့်ကြပါစို့။ အစအားဖြင့်၊ လုပ်ငန်းစဉ်နှစ်ခုစလုံးသည် လုပ်ဆောင်နေပြီး တစ်ခုစီသည် CPU ကိုသာ အသုံးပြုနေသည်ဟု စိတ်ကူးကြည့်ကြပါစို့။ ဤအခြေအနေတွင်၊ သူတို့၏ပြည်နယ်များသည် ဤကဲ့သို့ဖြစ်လိမ့်မည်။

လည်ပတ်မှုစနစ်များ- လွယ်ကူသောအပိုင်းသုံးပိုင်း။ အပိုင်း 2- Abstraction- လုပ်ငန်းစဉ် (ဘာသာပြန်)

အောက်ပါဥပမာတွင်၊ ပထမလုပ်ငန်းစဉ်သည် အချိန်အနည်းငယ်ကြာပြီးနောက်၊ IO ကိုတောင်းဆိုပြီး BLOCKED အခြေအနေသို့ဝင်ရောက်ကာ အခြားလုပ်ငန်းစဉ်ကိုလည်ပတ်ခွင့်ပြုသည် (ပုံ ၁.၄)။ လုပ်ငန်းစဉ် 1.4 သည် CPU ကိုအသုံးမပြုကြောင်း OS မှမြင်ရပြီး လုပ်ငန်းစဉ် 0 ကိုစတင်သည်။ လုပ်ငန်းစဉ် 1 လည်ပတ်နေချိန်တွင် IO သည် ပြီးမြောက်ပြီး လုပ်ငန်းစဉ် 1 ၏အခြေအနေသည် READY သို့ပြောင်းလဲသွားသည်။ နောက်ဆုံးတွင်၊ လုပ်ငန်းစဉ် 0 ပြီးသွားသည်၊ ပြီးသောအခါ၊ လုပ်ငန်းစဉ် 1 စတင်သည်၊ လုပ်ဆောင်သည်နှင့် ၎င်း၏အလုပ်ကို အပြီးသတ်သည်။

လည်ပတ်မှုစနစ်များ- လွယ်ကူသောအပိုင်းသုံးပိုင်း။ အပိုင်း 2- Abstraction- လုပ်ငန်းစဉ် (ဘာသာပြန်)

ဒေတာဖွဲ့စည်းပုံ

OS ကိုယ်တိုင်သည် ပရိုဂရမ်တစ်ခုဖြစ်ပြီး အခြားသော ပရိုဂရမ်များကဲ့သို့ပင်၊ သက်ဆိုင်ရာ အချက်အလက် အပိုင်းအစများကို ခြေရာခံနိုင်သော အဓိက ဒေတာဖွဲ့စည်းပုံအချို့ ပါရှိသည်။ လုပ်ငန်းစဉ်တစ်ခုစီ၏ အခြေအနေကို ခြေရာခံရန်၊ OS သည် အချို့ကို ပံ့ပိုးပေးမည်ဖြစ်သည်။ လုပ်ငန်းစဉ်စာရင်း READY အခြေအနေရှိ လုပ်ငန်းစဉ်အားလုံးအတွက် နှင့် လက်ရှိလုပ်ဆောင်နေသော လုပ်ငန်းစဉ်များကို ခြေရာခံရန် နောက်ထပ် အချက်အလက်အချို့။ ထို့အပြင် OS သည် ပိတ်ဆို့ထားသော လုပ်ငန်းစဉ်များကို စောင့်ကြည့်သင့်သည်။ IO ပြီးပါက OS သည် လိုအပ်သောလုပ်ငန်းစဉ်ကို နိုးကြားပြီး လုပ်ဆောင်ရန် အဆင်သင့်ဖြစ်နေသော အခြေအနေတွင် ထည့်သွင်းရပါမည်။

ဥပမာအားဖြင့်၊ OS သည် ပရိုဆက်ဆာ မှတ်ပုံတင်မှုများ၏ အခြေအနေကို ထိန်းသိမ်းထားရမည်။ လုပ်ငန်းစဉ်ရပ်တန့်သွားသည့်အချိန်တွင်၊ လုပ်ငန်းစဉ်၏လိပ်စာနေရာ၌ မှတ်ပုံတင်ထားသောအခြေအနေကို သိမ်းဆည်းထားပြီး ၎င်း၏လုပ်ဆောင်ချက်ကို ဆက်လက်လုပ်ဆောင်နေချိန်တွင်၊ မှတ်ပုံတင်များ၏တန်ဖိုးများကို ပြန်လည်ရရှိပြီး ဤလုပ်ငန်းစဉ်ကို ဆက်လက်လုပ်ဆောင်သွားမည်ဖြစ်သည်။

အဆင်သင့်၊ ပိတ်ဆို့ထားသော၊ လုပ်ဆောင်နေသည့် ပြည်နယ်များအပြင် အခြားပြည်နယ်အချို့လည်း ရှိသေးသည်။ တစ်ခါတစ်ရံ၊ ဖန်တီးချိန်တွင်၊ လုပ်ငန်းစဉ်တစ်ခုသည် INIT အခြေအနေတွင် ရှိနေနိုင်သည်။ နောက်ဆုံးတွင်၊ ၎င်းသည် အပြီးသတ်ပြီးသောအခါတွင် လုပ်ငန်းစဉ်တစ်ခုကို FINAL အခြေအနေတွင် ထားရှိနိုင်သော်လည်း ၎င်း၏အချက်အလက်များကို မရှင်းလင်းရသေးပါ။ UNIX စနစ်များတွင် ဤအခြေအနေကို ခေါ်သည်။ zombie ဖြစ်စဉ်. မိဘလုပ်ငန်းစဥ်သည် ကလေးတစ်ဦး၏ပြန်လာကုဒ်ကို သိလိုသည့်ကိစ္စများအတွက် အသုံးဝင်သည်၊ ဥပမာအားဖြင့်၊ များသောအားဖြင့် 0 သည် အောင်မြင်မှုနှင့် 1 အမှားကို အချက်ပြသော်လည်း ပရိုဂရမ်မာများသည် မတူညီသောပြဿနာများကို အချက်ပြရန် အပိုအထွက်ကုဒ်များကို ထုတ်ပေးနိုင်သည်။ မိဘလုပ်ငန်းစဥ်ကို ရပ်ဆိုင်းသည့်အခါ၊ ကလေးလုပ်ငန်းစဉ်ကို ရပ်ဆိုင်းပြီး ရပ်စဲထားသော လုပ်ငန်းစဉ်နှင့် ဆက်စပ်နေသည့် မည်သည့်ဒေတာကိုမဆို ရှင်းလင်းနိုင်ကြောင်း OS သို့ အချက်ပြရန် wait() ကဲ့သို့သော နောက်ဆုံးစနစ်ခေါ်ဆိုမှုကို ပြုလုပ်သည်။

လည်ပတ်မှုစနစ်များ- လွယ်ကူသောအပိုင်းသုံးပိုင်း။ အပိုင်း 2- Abstraction- လုပ်ငန်းစဉ် (ဘာသာပြန်)

ဟောပြောပွဲ၏ အဓိကအချက်များ

● ဖြစ်စဉ် - OS တွင် လည်ပတ်နေသော ပရိုဂရမ်တစ်ခု၏ အဓိက ရှုမြင်သုံးသပ်ချက်။ မည်သည့်အချိန်တွင်မဆို၊ လုပ်ငန်းစဉ်တစ်ခုအား ၎င်း၏အခြေအနေဖြင့် ဖော်ပြနိုင်သည်- ၎င်း၏လိပ်စာနေရာရှိ မမ်မိုရီအကြောင်းအရာများ၊ ညွှန်ကြားချက်ညွှန်မှတ်နှင့် stack pointer အပါအဝင် ပရိုဆက်ဆာစာရင်းသွင်းအကြောင်းအရာများနှင့် အဖွင့်ဖိုင်များဖတ်ရှုခြင်း သို့မဟုတ် ရေးသားခြင်းကဲ့သို့သော IO အချက်အလက်များ။
● လုပ်ငန်းစဉ် API ပရိုဂရမ်များ လုပ်ဆောင်ရန် လုပ်ဆောင်နိုင်သည့် ခေါ်ဆိုမှုများ ပါဝင်သည်။ ပုံမှန်အားဖြင့် ၎င်းတို့သည် ဖန်တီးခြင်း၊ ဖျက်ခြင်း သို့မဟုတ် အခြားခေါ်ဆိုမှုများဖြစ်သည်။
● လုပ်ငန်းစဉ်သည် လုပ်ဆောင်နေသည်၊ အဆင်သင့်၊ ပိတ်ဆို့ခြင်းအပါအဝင် ပြည်နယ်များစွာထဲမှတစ်ခုတွင်ဖြစ်သည်။ အချိန်ဇယားဆွဲခြင်း၊ အချိန်ဇယားဆွဲခြင်းမှ ခြွင်းချက် သို့မဟုတ် စောင့်ဆိုင်းခြင်းကဲ့သို့သော အမျိုးမျိုးသောဖြစ်ရပ်များသည် လုပ်ငန်းစဉ်တစ်ခုမှတစ်ခုသို့ ပြောင်းလဲနိုင်သည်။
● လုပ်ငန်းစဉ်စာရင်း စနစ်အတွင်းရှိ လုပ်ငန်းစဉ်အားလုံးနှင့် ပတ်သက်သော အချက်အလက် ပါရှိသည်။ ၎င်းတွင်ပါဝင်မှုတစ်ခုစီကို process control block ဟုခေါ်သည်၊ ၎င်းသည် လက်တွေ့တွင် တိကျသောလုပ်ငန်းစဉ်တစ်ခုနှင့်ပတ်သက်သည့် လိုအပ်သောအချက်အလက်အားလုံးပါဝင်သည့်ဖွဲ့စည်းပုံဖြစ်သည်။ 

source: www.habr.com

မှတ်ချက် Add