Системийн дуудлагаар процесс удирдах

Чөлөөт нэвтэрхий толь — Википедиагаас
Jump to navigation Jump to search

Процесс удирдах ерөнхий дуудлагууд

  • Дуусгах, зогсоох
  • Унших, гүйцэтгэх
  • Процесс үүсгэх, процесс таслах
  • Процессын аттрибутуудын утгыг авах, утга өгөх
  • Хүлээлт үүсгэх(хугацаагаар)
  • Хүлээлт үүсгэх(дохио сигналаар)
  • Санах ой хувиарлах, чөлөөлөх[1]

Биелэгдэж буй програм өөрийгөө энгийнээр(normal) эсвэл энгийн бусаар(abort) зогсоож чаддаг байх шаардлагатай. Тухайн биелэгдэж буй програмыг энгийн бусаар зогсоох хүсэлт ирсэн тохиолдолд аль эсвэл програм ажиллах явцдаа алдаа заасан тохиолдолд үндсэн санах ойд байгаа тухайн програмын мэдээллийг демп(dump)хийж алдааны мэссэжийг боловсруулна. Демп файл дискэнд бичигдэж үлдэх ба ямар шалтгаанаас алдаа үүссэн болохыг системийн алдаа хянагч(debuger) хянана. Програм энгийнээр дууссан ч, энгийн бусаар дууссан ч үйлдлийн систем удирдлагыг Интерпретатор руу шилжүүлнэ. Коммандын интерпретатор нь дараагийн коммандыг уншина. Хэрэглэгч алдааны мэдээлэл бүрт тодорхой хариу авахыг шаардах ба хэрэглэгчийн интерфэйс(UI) бүхий системд поп-ап цонх алдааны анхааруулга өгч, цааш хэрхэх тухай хэрэглэгчээс асуудаг. Харин бач(batch) системд коммандын интерпретатор нь ихэвчлэн алдаа заасан програмыг бүхлээр нь зогсоож орхиод дараагийн ажилд шилждэг. Зарим систем алдаа гарсан тохиолдолд удирдлагын картнаас програмын урьдчилан хадгалагдсан хувилбарыг санах ойд ачаалж шинээр эхлэх боломж олгодог. Удирдлагын карт гэдэг нь бач системийн ойлголт. Процессын гүйцэтгэлийг хянах нэгэн төрлийн комманд юм.

Яг одоо биелэгдэж буй процесс эсвэл ажил нь өөр нэгэн програмыг дуудах хүсэлт ирүүлж болно. Ийм үе тохиолдвол зориулалтын системийн дуудлагууд дуудагдана.(create pocess / submit process). Шинэ процесс эсвэл олон процессын дараалал дуудаж ажиллуулах үедээ бид тэдгээрийн биелэлтийг хянаж чаддаг байх ёстой. Өөрөөр хэлбэл процесс бүрийн аттрибут, давуу эрх, биелэгдэх цагийн хязгаар зэргийг хянахыг хэлж байгаа ба үүний тулд ч мөн зориулалтын системийн дуудлагуудыг(get process attributes / set process attributes) хэрэглэнэ. Хэрэгцээгүй гэж үзвэл тухайн процессыг тасалж ч (terminate process) болно. Эхлүүлсэн процессоо бид биелэгдэж дуусахыг хүлээдэг. Магадгүй тодорхой хугацаанд (wait time) магадгүй ямар нэг үзэгдэл тохиох хүртэл (wait event)ч хүлээж болно. Нөхцөл нь биелэх юм уу, үзэгдэл нь тохиох үед процессоос дохио илгээнэ. Програмын алдааг хянахад зориулсан тусгай системийн дуудлагын багц бий. Ихэнх системүүдэд процессын ашиглаж байсан санах ойг демп хийх бломжтой байдаг. Ингэснээр алдааг хянахад маш дөхөм болдог.

Нэг ба олон бодлогын горим[засварлах | edit source]

Ихэнх үйлдлийн системүүд тодорхой хугацааны интервалаар ямар нэг програм биелэгдэхдээ санах ойн яг аль хэсэгт хир их хугацаа зарцуулсныг харуулах боломж олгодог. Цагийн интервал тохиох бүрт програмын тоолуурын утга хадгалагдана. Ийнхүү хангалттай тооны удаа тоолуурын утга хуримтлагдсанаар програмын тодорхой хэсгүүдэд зарцуулагдсан хугацааг харж болно.

Жишээ нь ганц бодлогын горим(single-tasking)-той үйлдлийн систем болох MS-DOS.Компьютер асах үед коммандын интерпретатор ажиллагаанд орох ба ганц бодлогын горимт систем учраас шинэ процесс үүсгэлгүйгээр нэг л процесс дангаараа ажиллана. Үйлдлийн систем санах ойд програм ачаалахдаа санах ойд байгаа өөрийнхөө эзэлж буй хэсгүүдийг шинээр ачаалж, програмд аль болох их зай гаргаж өгнө. Дараа нь програмын тоолуурыг эхний команд руу зааж өгнө. Програм ажиллах явцад алдаа гарвал процессыг таслах системийн дуудлага хийнэ. Үүний дараа санах ойд шинээр ачаалагдаагүй үлдсэн коммандын интерпретатор ажиллаж эхлэх ба эхлээд өөрөө өөрийгөө дискнээс сэргээнэ. Дараа нь өмнө нь тасарсан програмын алдааны кодыг боловсруулна эсвэл дараагийн програмд шилжинэ.

Олон бодлогын горимт үйлдлийн системийн жишээгээр FreeBSD-г авч үзье. Хэрэглэгч системд нэвтэрсны дараа хөтөч програм ажиллаж эхэлнэ. Энэхүү хөтөч нь MS-DOS-ынхтой төстэй боловч FreeBSD нь олон бодлогын горимт үйлдлийн систем учраас өөр програмтай зэрэг интерпретатор давхар ажиллах боломжтой. Шинэ процесс үүсгэхийн тулд хөтөч програм системийн дуудлага fork() гүйцэтгэх ба сонгогдсон програмыг exec() системийн дуудлагаар санах ойд ачаална. Биелүүлэх команд хэрхэн өгөгдсөнөөс шалтгаалж нэг бол биелэгдэж дуустал нь хүлээнэ, аль эсвэл давхар ажиллуулна(in background). Энэ хооронд оролт/гаралт хөтөч програмд шилжих ба давхар ажиллаж байгаа програмд зөвхөн хэрэглэгчийн интерфэйсээр дамжуулан хандаж болно. Процесс дуусмагц exit() системийн дуудлага ашиглан зогсооно.[2]

Эх сурвалж[засварлах | edit source]

  1. [1]Operating System Concepts - 7th edition, Page 47-52
  2. [2]FreeBSD syscalls.c, the list of syscall names and IDs

Бусад холбоотой сэдвүүд[засварлах | edit source]