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

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

Модель процессов позволяет выполнять несколько задач благодаря реализации контекста выполнения (execution context). В Linux каждый процесс работает так, как будто он единственный. Операционная система управляет контекстами, назначая им процессорное время в соответствии с определенным набором правил. Эти правила назначает и выполняет планировщик (scheduler). Планировщик отслеживает продолжительность выполнения процесса и выключает его для того, чтобы ни одни из процессов не занимал все процессорное время. Именно таким образом работает система на хостинге — это делается для экономии ресурсов

Контекст выполнения состоит изо всего, что связано с программой, т. е. ее данных (и доступного для нее пространства адресов в памяти), ее регистров, стека, указателя стека и значения счетчика программы. За исключением данных и адресации памяти остальные компоненты процесса являются прозрачными для программиста. Тем не менее операционной системе требуется управлять стеком, указателем стека, счетчиком программы и машинными регистрами. В многопроцессорной системе операционная система должна дополнительно отвечать за переключение контекстов (context switch) между процессами и распределять между этими процессами ресурсы системы.

Понравилось? Поделись с друзьями!