Как ОС управляет запускающими программами

так как окнами является многозадачная ОС, она должна так или иначе переключиться между процессами. Но как это сделано? Окна включают некоторые точки останова в запущение программ, которые должны переключиться на другой процесс? Поскольку, когда программа выполнена, она берет под свой контроль ЦП. Таким образом для включения многозадачной ОС должно включать некоторую инструкцию по повреждению в программу.Я прав?

2
задан 21.09.2016, 01:52

3 ответа

Нет, программа не берет на себя полное управление над ЦП. Если это было бы, то существуют другие вещи, которые прекратили бы работать, как клавиатура, мышь, жесткие диски, et.c..

Существуют линии прерывания, подключенные к ЦП, которые говорят его, когда существует информация, входящая от устройства. Нажатие клавиши, например, вызывает сигнал прерывания, который остановит текущее выполнение и запустит обработчика прерываний.

Существует также внутренний таймер, который подключен как устройство, таким образом, операционная система может настроить таймер для создания сигналов прерывания на определенном уровне. Таким образом операционная система может всегда возвращать управление от рабочего процесса в определенных интервалах.

Обычный процесс при обработке прерывания состоит в том, что управление возвращается к под управлением программе после того, как обработчик прерываний закончен, но планировщик процесса может сохранить состояние одного процесса, восстановить другой процесс и позволить обработчику прерываний возвратиться к тому процессу вместо этого.

Планировщик также имеет другие возможности переключиться между процессами. Например, когда программа делает системный вызов, чтобы сделать диск ввод-вывод, планировщик позволяет вводу-выводу запросить передачу до аппаратных средств и сохраняет процесс в состоянии ожидания. Когда диск готов возвратить данные, это отправляет прерывание, таким образом, планировщик может переключиться назад на процесс, который ожидает данных.

(Я однажды записал программу, которая на самом деле взяла на себя полное управление над компьютером и отключила все прерывания. Я должен был записать свои собственные обработчики для входа клавиатуры и мыши и диск, ввод-вывод не работает вообще в том состоянии.)

3
ответ дан 08.12.2019, 05:57

Нет. Ose (и распараллеливающий в целом) управляет планировщик, который выделяет процессорное время различным потокам (и процессы) по мере необходимости; планировщик может дергать ЦП далеко от процесса везде, где он считает целесообразным.

1
ответ дан 08.12.2019, 05:57

Нет, это сделано при помощи аппаратных функций для возвращения управления к ядру на таймере или некотором другом событии.

Вы описываете 'кооперативную многозадачность', где приложения записаны для давания контроля назад к ОС равномерно. В то время как существует элемент того, что, когда приложения ожидают ввода данных пользователем, сети или дисковых операций для завершения, ОС как Windows может также запустить два приложения, которые ничего не ожидают одновременно.

Аппаратные средства имеют прерывания, которые дают контроль к определенному биту кода в ядре, которое было настроено во время начальной загрузки. Ядро затем решает, что дать контроль к затем; это - задание планировщика.

1
ответ дан 08.12.2019, 05:57

Теги

Похожие вопросы