Кой планира графика в OS - Не е ли сценарий с кокошка и яйце?

Кой планира графика?

Коя е първата създадена задача и как се създава тази първа задача? Не се ли изисква някакъв ресурс или памет за това? не е като сценарий с кокошка и яйце?

Планировчикът не е ли задача? Получава ли CPU в края на всеки отрязък от време, за да провери на коя задача трябва да бъде даден CPU?

Има ли някакви добри връзки, които карат човек да мисли и да разбира дълбоко всички тези концепции, вместо да разпръсква някаква теория, която трябва да бъде запомнена?


person aks    schedule 12.02.2010    source източник
comment
Всъщност няма общ отговор. Ще трябва да разгледате конкретна реализация на ОС. Отговорът на @Ira обаче вероятно е приложим за повечето операционни системи.   -  person Benoit    schedule 29.04.2010


Отговори (2)


Планировчикът е планиран от

  • (външно) събитие като прекъсване, (дискът е готов, щракване с мишката, отметка на таймера)
  • или вътрешно събитие (като завършване на нишка, сигнализиране от нишка, че трябва да изчака нещо, или сигнализиране на нишка, че е освободила ресурс, или капан, причинен от нишка, която прави нещо незаконно като деление на нула)

Накратко, той се задейства от всяко събитие, което може да изисква набор от задачи, които трябва да бъдат изпълнени, и/или приоритетите на тези задачи да бъдат преоценени. Планировчикът решава коя задача(и) да се изпълни следваща и предава контрола на следващата задача.

Обикновено това "планиране" на планировчика се причинява от кода, свързан с хардуерно прекъсване, или кода, свързан със системно повикване.

Въпреки че можете да мислите за планировчика като за истинска нишка, на практика не е необходимо да се прилага по този начин... защото се изпълнява с по-висок приоритет от всяка друга задача. Сложните операционни системи могат всъщност да отделят специална нишка, която е планировчикът, и да я маркират като заета, когато планировчикът получи контрол. Това го прави доста, но фалшивата нишка не е планирана от планировчика

Човек може да има множество планировчици: този с най-висок приоритет (напр. този, който току-що описахме) и други планировчици, които наистина са нишки и се изпълняват като други потребителски задачи. Такива планировчици с по-нисък приоритет обикновено се използват за управление на действия, които се случват на много по-дълги интервали, като фонови задачи.

person Ira Baxter    schedule 12.02.2010
comment
Съгласен: Планировчикът не е задача, това е процедура, която се извиква в „точки за планиране“. - person Clifford; 12.02.2010
comment
Използвах прекъсването на хардуерния таймер като основен източник за задействане на функцията за планиране. Функцията Schuduler е отговорна за всички подробности за превключване на задачи, като превключване на контекста и настройка на приоритета. Но сега откривам, че това би означавало, че времето за превключване на задачи е предвидимо. Отговорът на Ира е много добър. - person smwikipedia; 26.02.2010

обикновено се извиква периодично от времево прекъсване на процесора

person R. Marcos    schedule 28.02.2018
comment
Не съм сигурен дали това наистина добавя към въпроса... вече има отговор, в който се споменават прекъсвания и въпросът е от 2010 г. - person Thomas Flinkow; 28.02.2018