SkillGridИзучай computer science на практике

Процессы и потоки

Что такое процесс на самом деле, чем он отличается от потока и что происходит при переключении CPU.

11 мин · 35 XP

Программа на диске — это просто байты. Процесс — это та же программа в исполнении: своя память, свои файловые дескрипторы, своё место в очереди CPU. Два экземпляра одной программы — это два разных процесса, которые просто делят один код.

Процесс почти никогда не бывает просто «выполняется». Он готов (ждёт CPU), выполняется (прямо сейчас на ядре) или заблокирован (ждёт ввод-вывод или блокировку). Большую часть жизни процесс проводит в состояниях «готов» или «заблокирован», а не «выполняется».

ReadyRunningWaitingTerminatedscheduler picks itneeds I/OI/O donetime slice overexit()

ОС отслеживает каждый процесс через блок управления процессом (PCB): идентификатор, состояние, где начинается память, какие файлы открыты и сохранённые регистры CPU. Для ядра PCB — это и есть процесс.

/* PCB — то, что ОС помнит о процессе, пока он не на CPU. */
struct pcb {
  int   pid;             /* кто это                     */
  int   state;           /* READY / RUNNING / WAITING    */
  void *page_table;      /* где лежит его память        */
  struct regs saved;     /* PC, SP — где он остановился */
  int   open_files[16];  /* что он открыл               */
};

Практика

  1. Расставь состояния процесса в порядке, в котором программа обычно проходит через них.

    Подсказки
    • Процесс не начинает выполняться сразу после создания.
    • Ждать чтения с диска — не то же самое, что ждать CPU.

    12 XP

  2. Два потока в одном процессе увеличивают один счётчик без блокировки. Что скорее всего получится?

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

    12 XP

  3. Объясни, почему переключение контекста — это накладные расходы и когда ОС вынуждена их платить.

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

    15 XP