Фарз кардан мантиқ аст, ки равзанаи вақт як параметри хеле муҳим барои RR мебошад; ҳар қадар ки он хурдтар бошад, вақти вокуниш ҳамон қадар зиёд мешавад. Аммо, шумо набояд онро хеле хурд кунед, зеро вақти гузариши контекст низ дар иҷрои умумӣ нақш мебозад. Ҳамин тариқ, интихоби вақти равзанаи иҷро аз ҷониби меъмори ОС муқаррар карда мешавад ва аз вазифаҳое, ки дар он иҷро мешаванд, вобаста аст. Гузариш контексти ягона амалиёти хидматрасоние нест, ки вақтро беҳуда сарф мекунад - барномаи иҷрошаванда дар бисёр чизҳои дигар, масалан, кэшҳои гуногун кор мекунад ва бо ҳар як коммутатор ин муҳити зистро ҳифз ва барқарор кардан лозим аст, ки он метавонад миқдори зиёди вақтро талаб кунад. вақт.
RR як нақшаи олӣ аст, агар мо танҳо дар бораи метрикаи вақти вокуниш сухан ронем. Аммо метрикаи вақти иҷрои вазифа бо ин алгоритм чӣ гуна рафтор хоҳад кард? Мисоли дар боло зикршударо дида бароед, вақте ки вақти кори A, B, C = 5s ва дар як вақт меоянд. Вазифаи А дар соати 13, В соати 14, C дар соати 15 сония ба охир мерасад ва вақти миёнаи коркард 14 сония хоҳад буд. Ҳамин тариқ, RR алгоритми бадтарин барои метрикаи гардиш аст.
Ба ибораи умумӣ, ҳама гуна алгоритми навъи RR одилона аст; он вақти CPU-ро дар байни ҳамаи равандҳо баробар тақсим мекунад. Ва аз ин рӯ, ин нишондиҳандаҳо доимо бо ҳамдигар мухолифанд.
Ҳамин тариқ, мо якчанд алгоритмҳои муқобил дорем ва дар айни замон якчанд фарзияҳо боқӣ мондаанд - ки вақти кор маълум аст ва вазифа танҳо CPU-ро истифода мебарад.
Омехта бо I/O
Пеш аз ҳама, биёед фарзияи 4-ро хориҷ кунем, ки раванд танҳо CPU-ро истифода мебарад; Табиист, ки ин тавр нест ва равандҳо метавонанд ба таҷҳизоти дигар дастрасӣ пайдо кунанд.
Лаҳзае, ки ягон раванд амалиёти вуруд/баро талаб мекунад, раванд ба ҳолати басташуда ворид мешавад ва интизори ба итмом расидани В/Х мешавад. Агар воридот ба диски сахт фиристода шавад, он гоҳ ин гуна амалиёт метавонад то якчанд мс ва бештар аз он вақтро дар бар гирад ва протсессори мазкур дар айни замон бекор мемонад. Дар ин муддат нақшасоз метавонад протсессорро бо ягон раванди дигар ишғол кунад. Қарори навбатӣ, ки нақшасоз бояд қабул кунад, ин аст, ки раванд I/O-ро ба анҷом мерасонад. Вақте ки ин рӯй медиҳад, қатъ мешавад ва ОС равандеро, ки I/O-ро даъват кардааст, ба ҳолати омода мегузорад.
Биёед мисоли якчанд вазифаҳоро дида бароем. Ҳар яке аз онҳо 50ms вақти CPU талаб мекунад. Бо вуҷуди ин, аввалинаш ҳар 10 мс ба воридот / баромад дастрас мешавад (он низ ҳар 10 мс иҷро карда мешавад). Ва раванди B танҳо протсессори 50ms-ро бидуни вуруд / баромад истифода мебарад.
Дар ин мисол мо нақшаи STCF-ро истифода хоҳем бурд. Агар дар он раванд ба монанди A оғоз шавад, нақшасоз чӣ гуна рафтор мекунад? Вай чунин корхоро ичро мекунад: аввал процесси А-ро пурра кор карда мебарояд ва баъд процесси Б.
Усули анъанавии ҳалли ин мушкилот ин аст, ки ҳар як зервазифаи 10 мси раванди А ҳамчун вазифаи алоҳида баррасӣ карда шавад. Ҳамин тариқ, ҳангоми оғоз кардани алгоритми STJF, интихоби байни вазифаи 50 ms ва вазифаи 10 ms аён аст. Сипас, вақте ки зервазифаи A анҷом меёбад, раванди B ва I/O оғоз мешавад. Пас аз ба итмом расидани вуруд/берород, ба ҷои раванди B дубора оғоз кардани раванди 10ms A одат мешавад. Бо ин роҳ метавон такрори такрориро амалӣ кард, ки дар он CPU аз ҷониби як раванди дигар истифода мешавад, дар ҳоле ки протсессори аввал интизори он аст. I/O. Ва дар натиҷа, система беҳтар истифода мешавад - дар айни замон, ки равандҳои интерактивӣ интизори вуруд / баромад мебошанд, дар протсессор равандҳои дигарро иҷро кардан мумкин аст.