7. Как мой компьютер делает несколько дел сразу?

На самом деле это не так. В каждый момент времени компьютеры могут выполнять только одну программу или процесс (process). Но компьютеры могут переключаться между программами очень быстро и обманутые медленные люди начинают думать, что они делают нескольок дел одновременно. Это называется разделение времени (timesharing).

Одна из забот ядра это управлять разделением времени. Оно имеет часть называемую планировщиком (scheduler), который хранит в себе информацию о всех других процессах (не ядра) в вашем зоопарке. Каждую 1/60 долю секунды таймер системных часов обращается к ядру генерируя прерывание. Планировщик остонавливает любой выполняющийся в данный момент процесс, оставляет его в подвешеннном состоянии, и передает управление другому процессу.

Может показаться, что 1/60 доля секнды это немного. Но для современных микропроцессоров этого достаточно, чтобы выполнить тысячи машинных инструкций, которые сделают большую часть работы. Таким образом, если у вас запущено много процессов, каждый из них может делать свою работу в отведенные для него отрезки времени.

На практике, программа может даже полностью не использовать целиком отведенный для нее отрезок времени. Если поступит запрос на прерывание от устройства ввода/вывода, ядро полность остановит текущую программу, выполнит обработчик прерывания, и вернется к выполнению прерванной задачи. Шквал прерываний с высоким приоритетом, называемый thrashing (биение, молотьба) может нарушить нормальное выполнение процессов, к счастью современные Unix привести к этому очень тяжело.

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

Поэтому операционная система может запросто поддерживать большое количество одновременно выполняющихся процессов, это называется "многозадачностью" ("multitasking"). В основу создания семейства операционных систем семейства Unix изначально было положена многозадачность и они очень хороши в этом, и гораздо эффективнее чем Windows или старые Mac OS, в которых, мысль втиснуть, худо-бедно, многозадачность пришла уже после разработки. Эффективная, надежная многозадачность это большая часть того, что делает Linux превосходной для работы в сети, решения задач коммуникции и Web-сервисов.