Үйлдлийн системүүд: Гурван хялбар хэсэг. 5-р хэсэг: Төлөвлөлт: Олон түвшний санал хүсэлтийн дараалал (орчуулга)

Үйлдлийн системийн танилцуулга

Хөөе Хабр! Миний бодлоор OSTEP хэмээх нэгэн сонирхолтой уран зохиолын цуврал нийтлэл-орчуулгыг та бүхэнд хүргэхийг хүсч байна. Энэхүү материал нь орчин үеийн үйлдлийн системийг бүрдүүлдэг процесс, төрөл бүрийн хуваарь, санах ой болон бусад ижил төстэй бүрэлдэхүүн хэсгүүдтэй ажиллах unix-тэй төстэй үйлдлийн системүүдийн ажлыг нэлээд гүнзгий авч үздэг. Та бүх материалын эх хувийг эндээс харж болно энд. Орчуулга нь мэргэжлийн бус (нэлээн чөлөөтэй) хийгдсэн гэдгийг анхаарна уу, гэхдээ би ерөнхий утгыг хадгалсан гэдэгт найдаж байна.

Энэ сэдвээр хийсэн лабораторийн ажлыг эндээс харж болно.

Бусад хэсгүүд:

Та мөн миний сувгийг эндээс үзэж болно цахилгаан утас =)

Төлөвлөлт: Олон түвшний санал хүсэлтийн дараалал

Энэ лекцэнд бид хамгийн алдартай аргуудын нэгийг боловсруулахад тулгардаг асуудлын талаар ярих болно
төлөвлөлт гэж нэрлэдэг Олон түвшний санал хүсэлтийн дараалал (MLFQ). MLFQ хуваарийг анх 1962 онд Фернандо Ж.Корбато нэртэй системээр дүрсэлсэн байдаг.
Тохиромжтой цаг хуваалцах систем (CTSS). Эдгээр бүтээлүүд (үүнд дараа нь хийх ажил орно
Multics) дараа нь Тьюрингийн шагналд нэр дэвшсэн. Төлөвлөгч нь байсан
дараа нь сайжруулж, аль хэдийн олж болох гадаад төрхийг олж авсан
зарим орчин үеийн системүүд.

MLFQ алгоритм нь давхардсан 2 үндсэн асуудлыг шийдэхийг оролддог.
Нэгдүгээрт, энэ нь бид өмнөх лекц дээр ярилцсанчлан, дарааллын эхнээс эхлэх аргыг хамгийн оновчтой болгодог эргэлтийн хугацааг оновчтой болгохыг хичээдэг.
богино даалгавар. Гэсэн хэдий ч үйлдлийн систем нь тодорхой процесс хэр удаан үргэлжлэхийг мэдэхгүй бөгөөд энэ нь
SJF, STCF алгоритмуудыг ажиллуулахад шаардлагатай мэдлэг. Хоёрдугаарт, MLFQ оролдож байна
системийг хэрэглэгчдэд хариу үйлдэл үзүүлэх (жишээ нь, сууж буй хүмүүст).
Даалгавраа дуусгахыг хүлээж байгаа дэлгэц рүү ширтэх) ба ингэснээр цагийг багасгах
хариу үйлдэл. Харамсалтай нь RR гэх мэт алгоритмууд хариу өгөх хугацааг сайжруулдаг, гэхдээ маш их
эргэлтийн хугацааны хэмжигдэхүүнд муугаар нөлөөлдөг. Тиймээс бидний асуудал: Хэрхэн дизайн хийх вэ
юу ч мэдэхгүй бидний шаардлагад нийцэх хуваарь гаргагч
ерөнхийдөө үйл явцын мөн чанар? Төлөвлөгч нь даалгаврын шинж чанарыг хэрхэн сурах вэ?
аль нь эхлүүлж, улмаар илүү сайн төлөвлөлтийн шийдвэр гаргах вэ?

Асуудлын мөн чанар: Төгс мэдлэггүйгээр даалгавраа хэрхэн төлөвлөх вэ?
Хариу өгөх хугацааг нэгэн зэрэг багасгах хуваарийг хэрхэн зохион бүтээх вэ
интерактив даалгавруудыг гүйцэтгэхийн зэрэгцээ өөрийн мэдэлгүйгээр гүйцэтгэх хугацааг багасгадаг
даалгавар гүйцэтгэх хугацааны талаарх мэдлэг?

Жич: Бид өмнөх үйл явдлуудаас суралцаж байна

MLFQ дараалал нь түүнээс суралцдаг системийн гайхалтай жишээ юм
ирээдүйг урьдчилан таамаглах өнгөрсөн үйл явдлууд. Үүнтэй төстэй аргууд ихэвчлэн байдаг
OS (Мөн компьютерийн шинжлэх ухааны бусад олон салбарууд, түүний дотор салбарууд
техник хангамжийн таамаглал ба кэш алгоритмууд). Үүнтэй төстэй аялалууд
Даалгаврууд нь зан үйлийн үе шаттай байх ба ингэснээр урьдчилан таамаглах боломжтой үед өдөөгддөг.
Гэхдээ урьдчилан таамаглах нь маш хялбар тул та энэ техникийг болгоомжтой хийх хэрэгтэй
буруу болж, системийг илүү муу шийдвэр гаргахад хүргэж болзошгүй
огт мэдлэггүй байх болно.

MLFQ: Үндсэн дүрмүүд

MLFQ алгоритмын үндсэн дүрмийг авч үзье. Хэдийгээр энэ алгоритмын хэрэгжилт
Хэд хэдэн байдаг, үндсэн аргууд нь ижил төстэй байдаг.
Бидний авч үзэх хэрэгжилтэд MLFQ хэд хэдэн зүйлтэй байх болно
тусдаа дараалал, тус бүр нь өөр өөр ач холбогдолтой байх болно. Хэзээ ч,
гүйцэтгэхэд бэлэн даалгавар нэг дараалалд байна. MLFQ нь тэргүүлэх чиглэлийг ашигладаг.
ямар ажлыг гүйцэтгэхийг шийдэх, i.e. өндөртэй даалгавар
тэргүүлэх ач холбогдол (хамгийн өндөр ач холбогдол бүхий дарааллын даалгавар) эхлээд эхэлнэ
дараалал.
Мэдээжийн хэрэг, тухайн дараалалд нэгээс олон даалгавар байж болно, тиймээс
тиймээс тэд ижил давуу эрхтэй байх болно. Энэ тохиолдолд механизмыг ашиглах болно
Эдгээр ажлуудын дунд гүйлтийн хуваарь гаргахын тулд RR.
Тиймээс бид MLFQ-ийн хоёр үндсэн дүрэмд хүрнэ:

  • Дүрэм1: Хэрэв тэргүүлэх ач холбогдол (A) > Тэргүүлэх (B) бол А ажлыг эхлүүлэх болно (В ажиллахгүй)
  • Дүрэм2: Хэрэв давуу эрх(A) = Тэргүүлэх (B) бол A&B нь RR-г ашиглаж эхэлнэ

Дээр дурдсан зүйлс дээр үндэслэн MLFQ төлөвлөлтийн гол элементүүд
тэргүүлэх чиглэлүүд юм. Тогтмол давуу эрх олгохын оронд
даалгаврын дагуу MLFQ нь ажиглагдсан зан төлөвөөс хамааран тэргүүлэх чиглэлээ өөрчилдөг.
Жишээлбэл, хэрэв даалгавар нь гарнаас оруулахыг хүлээж байхдаа CPU-д байнга ажил шидэж байвал,
MLFQ нь процессын тэргүүлэх ач холбогдлыг өндөр байлгах болно, учир нь ийм байна
интерактив үйл явц ажиллах ёстой. Хэрэв эсрэгээр, даалгавар нь байнга бөгөөд
CPU-ийг удаан хугацаанд их хэмжээгээр ашигладаг бол MLFQ үүнийг бууруулна
тэргүүлэх чиглэл. Тиймээс MLFQ нь үйл явц ажиллаж байх үеийн зан төлөвийг судлах болно
зан үйлийг ашиглах.
Хэзээ нэгэн цагт дараалал ямар байж болох талаар жишээ татъя
цаг хугацаа, дараа нь та иймэрхүү зүйлийг олж авна:
Үйлдлийн системүүд: Гурван хялбар хэсэг. 5-р хэсэг: Төлөвлөлт: Олон түвшний санал хүсэлтийн дараалал (орчуулга)

Энэ схемд 2 процесс А ба В хамгийн чухал дараалалд байна. Үйл явц
C нь дунд хэсэгт байгаа бөгөөд D процесс нь дарааллын хамгийн төгсгөлд байна. Дээр дурдсанчлан
MLFQ алгоритмын тайлбарын дагуу хуваарь гаргагч нь даалгавруудыг зөвхөн хамгийн өндөр үзүүлэлтээр гүйцэтгэх болно.
RR-ийн дагуу тэргүүлэх ач холбогдол өгөх ба C, D даалгаварууд ажилгүй болно.
Мэдээжийн хэрэг, статик хормын хувилбар нь MLFQ хэрхэн ажилладаг талаар бүрэн дүр зургийг өгөхгүй.
Цаг хугацаа өнгөрөх тусам зураг хэрхэн өөрчлөгдөж байгааг ойлгох нь чухал юм.

1-р оролдлого: тэргүүлэх чиглэлийг хэрхэн өөрчлөх вэ

Энэ үед та MLFQ тэргүүлэх түвшнийг хэрхэн өөрчлөхийг шийдэх хэрэгтэй
Амьдралын мөчлөгийн явцад даалгаврууд (мөн дараалалд байгаа ажлын байр). Учир нь
Энэ нь ажлын урсгалыг санахад зайлшгүй шаардлагатай: тодорхой хэмжээ
Богино хугацаанд ажиллах интерактив ажлууд (тиймээс байнга гаргадаг
CPU) болон CPU-г бүх ажлынхаа цагаар ашигладаг хэд хэдэн урт хугацааны ажлууд
Ийм ажилд хариу өгөх хугацаа чухал биш. Ингэснээр та анхны оролдлогоо хийх боломжтой
MLFQ алгоритмыг дараах дүрмийн дагуу хэрэгжүүлнэ.

  • Дүрэм 3: Даалгавар системд ороход хамгийн өндөртэй дараалалд оруулна
  • тэргүүлэх ач холбогдол.
  • Дүрэм 4a: Хэрэв даалгавар нь түүнд хуваарилагдсан бүх цагийн цонхыг ашигладаг бол энэ нь
  • тэргүүлэх ач холбогдол багассан.
  • Дүрэм 4б: Хэрэв даалгавар нь хугацаа дуусахаас өмнө CPU-г гаргавал тэр
  • ижил тэргүүлэх чиглэлтэй хэвээр байна.

Жишээ 1: Удаан хугацааны нэг ажил

Энэ жишээнээс харахад элсэлтийн даалгаврыг хамгийн өндөр түвшинд тавьдаг
тэргүүлэх ач холбогдол. 10 ms-ийн хугацаа өнгөрсний дараа процессыг давуу эрхээр бууруулна
төлөвлөгч. Дараагийн цонхны дараа даалгавар нь эцэст нь доошилно
систем дэх хамгийн бага тэргүүлэх ач холбогдол, хаана хэвээр байна.
Үйлдлийн системүүд: Гурван хялбар хэсэг. 5-р хэсэг: Төлөвлөлт: Олон түвшний санал хүсэлтийн дараалал (орчуулга)

Жишээ 2: Богино даалгавар өгсөн

Одоо MLFQ нь SJF-д хэрхэн хандахыг оролдох жишээг харцгаая. Тэр нь
Жишээ нь, хоёр даалгавар: А, энэ нь удаан үргэлжилдэг ажил юм
CPU болон B-г эзлэх нь богино интерактив ажил юм. гэж бодъё
Б даалгавар ирэх үед А аль хэдийн хэсэг хугацаанд ажиллаж байсан.
Үйлдлийн системүүд: Гурван хялбар хэсэг. 5-р хэсэг: Төлөвлөлт: Олон түвшний санал хүсэлтийн дараалал (орчуулга)

Энэ график нь хувилбарын үр дүнг харуулж байна. Даалгавар А, ямар ч даалгавар шиг,
CPU-ийн хэрэглээ хамгийн доод хэсэгт байсан. Б даалгавар T=100 цагт ирэх бөгөөд ирнэ
хамгийн чухал дараалалд байрлуулсан. Ашиглалтын хугацаа нь богино учраас
сүүлчийн дараалалд хүрэхээс өмнө дуусгах болно.

Энэ жишээнээс алгоритмын гол зорилгыг ойлгох хэрэгтэй: алгоритм нь тийм биш тул
Даалгавар урт эсвэл богино эсэхийг мэддэг бол эхлээд тэр даалгавар гэж үздэг
товч бөгөөд үүнд хамгийн чухал ач холбогдол өгдөг. Хэрэв энэ үнэхээр богино ажил юм бол
хурдан дуусна, эс бөгөөс урт ажил бол удаан хөдөлнө
тэргүүлэх ач холбогдол өгч, тэр үнэхээр тийм ч урт ажил гэдгийг удахгүй батлах болно
Хариуг шаарддаг.

Жишээ 3: I/O-ийн талаар юу хэлэх вэ?

Одоо I/O жишээг харцгаая. Дүрэм 4б-д заасны дагуу,
хэрэв процесс нь процессорын бүх цагийг ашиглахгүйгээр процессорыг суллавал,
дараа нь тэр тэргүүлэх түвшинд хэвээр байна. Энэ дүрмийн зорилго нь маш энгийн
- хэрэв интерактив ажил нь олон тооны оролт гаралтын үйлдлүүдийг гүйцэтгэдэг бол, жишээлбэл, хүлээх
хэрэглэгчийн товчлуур эсвэл хулгана дарахад ийм даалгавар нь процессорыг суллах болно
хуваарилагдсан цонхны өмнө. Бид ийм ажлын тэргүүлэх чиглэлийг бууруулахыг хүсэхгүй байна,
улмаар энэ нь ижил түвшинд байх болно.
Үйлдлийн системүүд: Гурван хялбар хэсэг. 5-р хэсэг: Төлөвлөлт: Олон түвшний санал хүсэлтийн дараалал (орчуулга)

Энэ жишээ нь алгоритм нь ийм процессуудтай хэрхэн ажиллахыг харуулж байна - интерактив ажил B, гүйцэтгэхээс өмнө зөвхөн CPU-ийн хугацаа 1ms.
CPU-г ашиглах бүх цагаа зарцуулдаг I/O процесс ба урт хугацааны ажил А.
MLFQ үргэлжилсээр байгаа тул В процессыг хамгийн чухалд байлгадаг
CPU-г суллана. Хэрэв B нь интерактив даалгавар бол алгоритм нь хүрсэн гэсэн үг
Таны зорилго бол интерактив ажлуудыг хурдан гүйцэтгэх явдал юм.

Одоогийн MLFQ алгоритмтай холбоотой асуудлууд

Өмнөх жишээнүүдэд бид MLFQ-ийн үндсэн хувилбарыг бүтээсэн. Тэгээд тэр бололтой
Процессорын цагийг хооронд нь шударгаар хуваарилж, ажлаа сайн, шударгаар гүйцэтгэдэг
урт даалгаврууд, богино эсвэл их хэмжээний ажлуудыг зөвшөөрөх
I/O дээр хурдан ажиллана. Харамсалтай нь энэ арга нь хэд хэдэн зүйлийг агуулдаг
ноцтой асуудлууд.
Нэгдүгээрт, өлсгөлөнгийн асуудал: хэрэв систем олон интерактивтэй бол
даалгаврууд, дараа нь тэд процессорын бүх цагийг зарцуулж, тиймээс нэгийг нь ч удаан хугацаанд хийхгүй
даалгаврыг биелүүлэх боломжгүй болно (тэд өлсөж байна).

Хоёрдугаарт, ухаалаг хэрэглэгчид програмаа ингэж бичиж болно
төлөвлөгчийг тэнэг. Хууран мэхлэлт нь ямар нэг зүйлийг хүчээр хийх явдал юм
Төлөвлөгч нь процесст илүү их цаг хугацаа өгдөг. Үүнийг алгоритм
Дээр дурдсан нь ижил төстэй халдлагад нэлээд өртөмтгий байдаг: цаг хугацааны цонх бараг гарахаас өмнө
дууссан бол та I/O үйлдлийг гүйцэтгэх хэрэгтэй (зарим нь ямар ч файл байсан)
Ингэснээр CPU-г суллана. Ийм зан авир нь таныг урьдын адил хэвээр үлдэх боломжийг олгоно
дараалал нь өөрөө дахин CPU-ийн цагийн илүү их хувийг авдаг. Хэрэв тэгвэл
Энэ нь зөв (жишээ нь, CPU-г гаргахаас өмнө цонхны цагийн 99% -ийг гүйцэтгэх),
ийм даалгавар нь процессорыг зүгээр л монополь болгож чадна.

Эцэст нь хэлэхэд, програм нь цаг хугацааны явцад зан төлөвөө өөрчилж чаддаг. Тэр даалгаварууд
CPU-г ашигласан нь интерактив болж чаддаг. Бидний жишээнд ижил төстэй
даалгаврууд нь бусадтай адил хуваарь гаргагчаас зохих эмчилгээг авахгүй
(анхны) интерактив даалгавар.

Үзэгчдэд зориулсан асуулт: орчин үеийн ертөнцөд төлөвлөгч рүү ямар халдлага хийж болох вэ?

2-р оролдлого: тэргүүлэх ач холбогдлыг нэмэгдүүлэх

Дүрмүүдийг өөрчлөхийг хичээцгээе, бэрхшээлээс зайлсхийх боломжтой эсэхийг харцгаая
мацаг барих. Үүнтэй холбоотой байхын тулд бид юу хийж чадах вэ
CPU-ийн даалгаврууд цаг хугацаагаа авах болно (удаан биш ч гэсэн).
Асуудлын энгийн шийдлийн хувьд та үе үе санал болгож болно
систем дэх ийм бүх ажлуудын тэргүүлэх ач холбогдлыг нэмэгдүүлэх. Олон арга бий
Үүнд хүрэхийн тулд жишээ болгон энгийн зүйлийг хэрэгжүүлэхийг хичээцгээе: орчуулах
бүх даалгавар нэн даруй хамгийн чухал ач холбогдолтой тул шинэ дүрэм:

  • Дүрэм5: Тодорхой хугацааны дараа S систем дэх бүх ажлыг хамгийн өндөр дараалалд шилжүүлнэ.

Манай шинэ дүрэм хоёр асуудлыг нэг дор шийддэг. Нэгдүгээрт, процессууд
өлсөхгүй байх баталгаатай: хамгийн чухал ач холбогдолтой ажлуудыг хуваах болно
RR алгоритмын дагуу CPU-ийн хугацаа, ингэснээр бүх процессууд хүлээн авах болно
CPU-ийн цаг. Хоёрдугаарт, хэрэв өмнө нь ашиглаж байсан зарим процесс
зөвхөн процессор интерактив болж, энэ нь хамгийн өндөр дараалалд үлдэх болно
тэргүүлэх зэргийн нэг удаагийн нэмэгдлийг хүлээн авсны дараа тэргүүлэх ач холбогдол.
Нэг жишээ авч үзье. Энэ хувилбарт ашиглах нэг процессыг авч үзье
Үйлдлийн системүүд: Гурван хялбар хэсэг. 5-р хэсэг: Төлөвлөлт: Олон түвшний санал хүсэлтийн дараалал (орчуулга)

CPU болон хоёр интерактив, богино процесс. Зургийн зүүн талд, зураг нь давуу эрх олгохгүйгээр зан төлөвийг харуулсан бөгөөд ингэснээр системд хоёр интерактив даалгавар ирсний дараа удаан үргэлжилсэн ажил өлсөж эхэлдэг. Баруун талд байгаа зурагт 50 мс тутамд давуу эрх нэмэгддэг тул бүх процессууд нь CPU-ийн цагийг хүлээн авах баталгаатай бөгөөд үе үе эхлэх болно. Энэ тохиолдолд 50ms-ийг жишээ болгон авсан бол бодит байдал дээр энэ тоо арай өндөр байна.
Мэдээжийн хэрэг, үечилсэн өсөлтийн хугацааг нэмбэл S хүргэдэг
логик асуулт: ямар утгыг тохируулах ёстой вэ? Гавьяатуудын нэг
системийн инженерүүд Жон Оустерхоут систем дэх ийм хэмжигдэхүүнийг voo-doo гэж нэрлэжээ
тогтмол, учир нь тэд ямар нэг байдлаар зөв хар ид шид шаарддаг
үзэсгэлэн гаргаж байна. Харамсалтай нь S нь ийм үнэртэй байдаг. Хэрэв та мөн утгыг тохируулсан бол
том - урт ажлууд өлсөж эхэлнэ. Хэрэв та хэт бага утгыг тохируулсан бол,
Интерактив даалгавар нь CPU-ийн зохих цагийг хүлээн авахгүй.

3-р оролдлого: Нягтлан бодох бүртгэлийг сайжруулах

Одоо бидэнд шийдэх өөр нэг асуудал байна: яаж болохгүй
Манай төлөвлөгчийг хуурахыг зөвшөөрөх үү? Энэ магадлалд буруутай хүмүүс
4A, 4B дүрмүүд нь даалгаврыг тэргүүлэх ач холбогдол өгөх боломжийг олгодог бөгөөд процессорыг чөлөөлдөг
заасан хугацаа дуусахаас өмнө. Үүнийг хэрхэн шийдвэрлэх вэ?
Энэ тохиолдолд шийдэл нь тус бүр дээр CPU-ийн цагийг илүү сайн бүртгэх гэж үзэж болно
MLFQ түвшин. Програмыг ашигласан цагийг мартахын оронд
хуваарилагдсан хугацаанд процессор, үүнийг анхаарч, хадгалах хэрэгтэй. Дараа нь
процесс нь хуваарилагдсан цагаа дуусгасан тул дараагийн шат руу буулгах хэрэгтэй
тэргүүлэх түвшин. Одоо энэ үйл явц цагаа хэрхэн ашиглах нь хамаагүй
процессор дээр эсвэл хэд хэдэн дуудлагын дагуу байнга тооцоолох. Тиймээс,
4-р дүрмийг дараах хэлбэрээр өөрчлөн найруулна.

  • Дүрэм4: Даалгаврыг одоогийн дараалалд хуваарилсан цаг дууссаны дараа (энэ нь CPU-г хэдэн удаа чөлөөлсөнөөс үл хамааран) тухайн даалгаврын тэргүүлэх ач холбогдол буурна (дараалал руу шилждэг).

Нэг жишээг харцгаая:
Үйлдлийн системүүд: Гурван хялбар хэсэг. 5-р хэсэг: Төлөвлөлт: Олон түвшний санал хүсэлтийн дараалал (орчуулга)»

Хэрэв та төлөвлөгчийг хуурах гэж оролдвол юу болохыг зураг харуулж байна
Хэрэв энэ нь өмнөх дүрмийн 4a, 4b-тэй байсан бол зүүн талд байгаа үр дүн гарах болно. Шинэ аз жаргал
дүрэм нь баруун талд үр дүн юм. Хамгаалалтын өмнө аливаа процесс дуусахаас өмнө I/O-г дуудаж болно
Тиймээс зан төлөвөөс үл хамааран хамгаалалтыг идэвхжүүлсний дараа CPU-г давамгайлдаг
I/O, тэр одоо ч гэсэн дарааллаар доош нүүж, тиймээс шударга бус байх боломжгүй болно
CPU-ийн нөөцийг авах.

MLFQ болон бусад асуудлуудыг сайжруулах

Дээрх сайжруулалтуудын хамт шинэ асуудлууд гарч ирдэг: гол асуудлуудын нэг
Асуултууд - ийм хуваарилагчийг хэрхэн параметржүүлэх вэ? Тэдгээр. Хэр их байх ёстой
дараалал? Дараалал доторх програмын цонхны хэмжээ ямар байх ёстой вэ? Хэрхэн
Өлсгөлөнгөөс зайлсхийхийн тулд хөтөлбөрийн тэргүүлэх чиглэлийг ихэвчлэн нэмэгдүүлэх хэрэгтэй
хөтөлбөрийн зан үйлийн өөрчлөлтийг харгалзан үзэх үү? Эдгээр асуултуудад энгийн хариулт байдаггүй
хариулт ба зөвхөн ачаалал болон дараагийн тохиргоотой туршилтууд
Төлөвлөгч нь хангалттай тэнцвэрт байдалд хүргэж болзошгүй.

Жишээлбэл, ихэнх MLFQ хэрэгжүүлэлт нь танд өөр оноох боломжийг олгодог
янз бүрийн дарааллын цаг хугацааны интервалууд. Ихэвчлэн өндөр ач холбогдол бүхий дараалал үүсдэг
богино интервалыг тогтооно. Эдгээр дараалал нь интерактив ажлуудаас бүрдэнэ.
тэдгээрийн хооронд шилжих нь маш мэдрэмтгий бөгөөд 10 ба түүнээс бага байх ёстой
ms. Үүний эсрэгээр, бага ач холбогдолтой дараалал нь ашигладаг урт хугацааны ажлуудаас бүрддэг
CPU. Мөн энэ тохиолдолд урт хугацааны интервал нь маш сайн тохирдог (100 мс).
Үйлдлийн системүүд: Гурван хялбар хэсэг. 5-р хэсэг: Төлөвлөлт: Олон түвшний санал хүсэлтийн дараалал (орчуулга)

Энэ жишээнд өндөр ач холбогдолтой 2 дугаар дараалалд ажиллаж байсан 20 ажил байна
ms, 10ms цонхонд хуваагдана. Дунд зэргийн дараалалд (40 мс цонх) 20 мс, тэргүүлэх ач холбогдол багатай байна
Даалгаврууд ажлаа дуусгахад дарааллын цагийн цонх 40 мс болсон.

MLFQ-ийн Solaris үйлдлийн систем нь цаг хуваах хуваарийн анги юм.
Төлөвлөгч нь яг хэрэгтэйг нь тодорхойлсон хүснэгтүүдийг өгөх болно
үйл явцын тэргүүлэх чиглэл амьдралынхаа туршид өөрчлөгддөг, хэмжээ нь ямар байх ёстой
Хуваарилагдсан цонх, та ажлын тэргүүлэх чиглэлийг хэр олон удаа нэмэгдүүлэх хэрэгтэй. Администратор
системүүд энэ хүснэгттэй харилцаж, төлөвлөгчийг ажиллахад хүргэж болно
өөрөөр. Анхдагч байдлаар, энэ хүснэгт нь аажмаар нэмэгддэг 60 дараалалтай
цонхны хэмжээ 20 мс (өндөр ач холбогдол) -аас хэдэн зуун мс (бага тэргүүлэх ач холбогдол) хүртэл
мөн бүх ажлыг секундэд нэг удаа нэмэгдүүлнэ.

Бусад MLFQ төлөвлөгчид хүснэгт эсвэл тусгайлсан хүснэгт ашигладаггүй
Энэ лекцэд тайлбарласан дүрмүүд нь эсрэгээрээ тэргүүлэх чиглэлийг ашиглан тооцоолдог
математикийн томьёо. Жишээлбэл, FreeBSD хуваарь нь томъёог ашигладаг
үйл явц хэр удаан үргэлжлэхээс хамаарч тухайн ажлын одоогийн тэргүүлэх ач холбогдлыг тооцоолох
ашигласан CPU. Үүнээс гадна CPU-ийн хэрэглээ цаг хугацааны явцад мууддаг гэх мэт
Тиймээс тэргүүлэх ач холбогдлыг нэмэгдүүлэх нь дээр дурдсанаас арай өөрөөр явагддаг. Энэ бол үнэн
задралын алгоритмууд гэж нэрлэдэг. 7.1 хувилбараас хойш FreeBSD нь ULE төлөвлөгчийг ашигласан.

Эцэст нь, олон төлөвлөгчид өөр онцлог шинж чанартай байдаг. Жишээлбэл, зарим нь
хуваарь гаргагчид үйлдлийн системийн үйл ажиллагааны хамгийн дээд түвшнийг нөөцөлж, улмаар
Тиймээс ямар ч хэрэглэгчийн процесс нь хамгийн чухал ач холбогдолтой байж чадахгүй
систем. Зарим систем нь танд туслах зөвлөгөө өгөх боломжийг олгодог
планировщику корректно выставлять приоритеты. Жишээлбэл, команд ашиглах сайхан
та даалгаврын тэргүүлэх чиглэлийг нэмэгдүүлэх эсвэл багасгах боломжтой бөгөөд ингэснээр нэмэгдүүлэх эсвэл
Програмын CPU-ийн цагийг ашиглах боломжийг багасгах.

MLFQ: Дүгнэлт

Бид MLFQ хэмээх төлөвлөлтийн аргыг тодорхойлсон. Түүний нэр
үйл ажиллагааны зарчимд хаалттай - энэ нь хэд хэдэн дараалалтай бөгөөд санал хүсэлтийг ашигладаг
ажлын тэргүүлэх чиглэлийг тодорхойлох.
Дүрмийн эцсийн хэлбэр нь дараах байдалтай байна.

  • Дүрэм1: Хэрэв тэргүүлэх ач холбогдол (A) > Тэргүүлэх (B) бол А ажлыг эхлүүлэх болно (В ажиллахгүй)
  • Дүрэм2: Priority(A) = Priority(B) бол A&B RR-г ашиглаж эхэлнэ
  • Дүрэм3: Даалгавар системд орох үед хамгийн чухал дараалалд тавигддаг.
  • Дүрэм4: Даалгаврыг одоогийн дараалалд хуваарилсан цаг дууссаны дараа (энэ нь CPU-г хэдэн удаа чөлөөлсөнөөс үл хамааран) тухайн даалгаврын тэргүүлэх ач холбогдол буурна (дараалал руу шилждэг).
  • Дүрэм5: Тодорхой хугацааны дараа S систем дэх бүх ажлыг хамгийн өндөр дараалалд шилжүүлнэ.

MLFQ нь дараах шалтгааны улмаас сонирхолтой байдаг - тухай мэдлэг шаардахын оронд
Даалгаврын мөн чанарыг урьдчилан судалж, алгоритм нь даалгавар, багцын өмнөх үйлдлийг судалдаг
Үүний дагуу тэргүүлэх чиглэлүүд. Тиймээс тэр нэгэн зэрэг хоёр сандал дээр суухыг хичээдэг - жижиг ажлуудыг (SJF, STCF) бүтээмжтэй болгох, үнэнчээр удаан гүйх,
CPU ачаалах ажил. Тиймээс BSD болон тэдгээрийн дериватив зэрэг олон системүүд
Solaris, Windows, Mac нь алгоритмын зарим хэлбэрийг хуваарь болгон ашигладаг
MLFQ нь суурь үзүүлэлт юм.

Дополнительные материалууд:

  1. manpages.debian.org/stretch/manpages/sched.7.en.html
  2. en.wikipedia.org/wiki/Scheduling_(тооцоолох)
  3. pages.lip6.fr/Julia.Lawall/atc18-bouron.pdf
  4. www.usenix.org/legacy/event/bsdcon03/tech/full_papers/roberson/roberson.pdf
  5. chebykin.org/freebsd-process-scheduling

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх