Про часы, таймеры и прерывания.
Когда-нибудь задумывались про устройство многозадачности в ОС?
Допустим на одноядерном процессоре в текущем потоке исполнения работает какая-то программа. В этой программе происходит бесконечный цикл в котором ничего не происходит - просто трата ресурсов процессора.
Если это ядро - единственный ресурс, то как ОС сможет переключится на другую программу?
С помощью планировщика, но как именно - ведь ядро то одно и оно занято, а работу планировщика тоже нужно где-то выполнить.
Здесь и помогают таймеры и прерывания. Таймер с определенной периодичностью шлет сигналы (тики). Когда сигналов накопилось некоторое N число (прошло N времени) - вызывается прерывание. Прерывание - специальный интерфейс (регистры), с помощью которого можно прервать текущий поток исполнения процессора чтобы решить что делать дальше. Когда поток был прерван, выполниться процедура ОС и планировщика - посмотреть не слишком ли много циклов процессора потратила текущая программа, надо ли дать время поработать другой.
Когда-нибудь задумывались про устройство многозадачности в ОС?
Допустим на одноядерном процессоре в текущем потоке исполнения работает какая-то программа. В этой программе происходит бесконечный цикл в котором ничего не происходит - просто трата ресурсов процессора.
Если это ядро - единственный ресурс, то как ОС сможет переключится на другую программу?
С помощью планировщика, но как именно - ведь ядро то одно и оно занято, а работу планировщика тоже нужно где-то выполнить.
Здесь и помогают таймеры и прерывания. Таймер с определенной периодичностью шлет сигналы (тики). Когда сигналов накопилось некоторое N число (прошло N времени) - вызывается прерывание. Прерывание - специальный интерфейс (регистры), с помощью которого можно прервать текущий поток исполнения процессора чтобы решить что делать дальше. Когда поток был прерван, выполниться процедура ОС и планировщика - посмотреть не слишком ли много циклов процессора потратила текущая программа, надо ли дать время поработать другой.
🔥5❤1👍1
tgoop.com/beard_programmer_lounge/11
Create:
Last Update:
Last Update:
Про часы, таймеры и прерывания.
Когда-нибудь задумывались про устройство многозадачности в ОС?
Допустим на одноядерном процессоре в текущем потоке исполнения работает какая-то программа. В этой программе происходит бесконечный цикл в котором ничего не происходит - просто трата ресурсов процессора.
Если это ядро - единственный ресурс, то как ОС сможет переключится на другую программу?
С помощью планировщика, но как именно - ведь ядро то одно и оно занято, а работу планировщика тоже нужно где-то выполнить.
Здесь и помогают таймеры и прерывания. Таймер с определенной периодичностью шлет сигналы (тики). Когда сигналов накопилось некоторое N число (прошло N времени) - вызывается прерывание. Прерывание - специальный интерфейс (регистры), с помощью которого можно прервать текущий поток исполнения процессора чтобы решить что делать дальше. Когда поток был прерван, выполниться процедура ОС и планировщика - посмотреть не слишком ли много циклов процессора потратила текущая программа, надо ли дать время поработать другой.
Когда-нибудь задумывались про устройство многозадачности в ОС?
Допустим на одноядерном процессоре в текущем потоке исполнения работает какая-то программа. В этой программе происходит бесконечный цикл в котором ничего не происходит - просто трата ресурсов процессора.
Если это ядро - единственный ресурс, то как ОС сможет переключится на другую программу?
С помощью планировщика, но как именно - ведь ядро то одно и оно занято, а работу планировщика тоже нужно где-то выполнить.
Здесь и помогают таймеры и прерывания. Таймер с определенной периодичностью шлет сигналы (тики). Когда сигналов накопилось некоторое N число (прошло N времени) - вызывается прерывание. Прерывание - специальный интерфейс (регистры), с помощью которого можно прервать текущий поток исполнения процессора чтобы решить что делать дальше. Когда поток был прерван, выполниться процедура ОС и планировщика - посмотреть не слишком ли много циклов процессора потратила текущая программа, надо ли дать время поработать другой.
BY Кальянная программиста


Share with your friend now:
tgoop.com/beard_programmer_lounge/11