Недавно я начал изучать, как работает ЦП и операционная система, и меня немного смущает работа машины с одним ЦП -и операционной системой, обеспечивающей многозадачность.
Таким образом, если моя машина имеет один ЦП, это будет означать, что в любой момент времени может работать только один процесс.
Теперь я могу только предположить, что планировщик, используемый операционной системой для управления доступом к драгоценному процессорному времени, также является процессом.
Таким образом, на этой машине в любой заданный момент времени выполняется либо пользовательский процесс, либо процесс системы планирования, но не оба одновременно.
Так вот вопрос:
Как только планировщик передает контроль над ЦП другому процессу, как он может восстановить время ЦП, чтобы снова запустить себя для выполнения своей работы по планированию? Я имею в виду, что если какой-либо конкретный запущенный в настоящее время процесс не освобождает (уступает )ЦП, как сам планировщик может когда-либо запускаться снова и обеспечивать надлежащую многозадачность?
До сих пор я думал, что если пользовательский процесс запрашивает операцию ввода-вывода через системный вызов, то в системном вызове мы можем гарантировать, что планировщику снова будет выделено некоторое время процессора. Но я даже не уверен, работает ли это таким образом.
С другой стороны, если рассматриваемый пользовательский процесс по своей природе привязан к ЦП -, то, с этой точки зрения, он мог бы работать вечно, никогда не позволяя другим процессам, даже планировщику, снова запускаться.
Предположим, планирование с разделением по времени -. Я понятия не имею, как планировщик может нарезать время для выполнения другого процесса, когда он даже не запущен?
Я был бы очень признателен за любую информацию или ссылки, которые вы можете предоставить в этом отношении.