Shift + колёсико

9. Программы, процессы и потоки

Программа — последовательность формализованных инструкций, предназначенная для исполнения устройством управления вычислительной машины, она записана на жестком диске

Процесс – это то, когда мы программу прочитали и разместили в ОП.

С каждым процессом связывается его адресное пространство, из которого он может читать и в которое он может писать данные, пространство содержит: саму программу, данные к программе и стек программы.

Потоки – это выполнение процесса.

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

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

Завершение процесса – это завершение всех его потоков.

  1. Нормальное завершение потока – все сделал

  2. Нормальное завершение по ошибке (из-за невозможности дальше выполняться)

  3. Фатальная ошибка, не предусмотренная программистом

  4. Насильное завершение потока ОС

Один процесс может породить множество потоков, которые будут выполняться параллельно.

Параллельность достигается за счет разделения времени между потоками, это позволяет сделать системный таймер – это некий кварцевый генератор:

Происходит прерывание, попадает в ядро, в обработчик прерываний. В ядре счетчик, когда достигает определенного числа, сохраняет предыдущее состояние и переключается на другой поток.

Разделение времени зависит от приоритета, чем выше приоритет, тем больше времени дается. Кто долго работает должен иметь низкий приоритет.

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

Процесс (поток управления) считается блокированным, если для продолжения его выполнения должно стать истинным некоторое условие, отличное от доступности процессора.