![Почему переключение процессов не делает нашу работу с компьютером прерывистой](https://rvso.com/image/1416705/%D0%9F%D0%BE%D1%87%D0%B5%D0%BC%D1%83%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D0%B2%20%D0%BD%D0%B5%20%D0%B4%D0%B5%D0%BB%D0%B0%D0%B5%D1%82%20%D0%BD%D0%B0%D1%88%D1%83%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%83%20%D1%81%20%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BE%D0%BC%20%D0%BF%D1%80%D0%B5%D1%80%D1%8B%D0%B2%D0%B8%D1%81%D1%82%D0%BE%D0%B9.png)
Мы все знаем, что ЦП переключается между запущенными процессами, но почему мы никогда не сталкиваемся с прерываниями работы, пока ЦП переключается, а мы используем приложения?
Я бы сказал, что это происходит из-за огромной скорости переключения между процессами, но мне интересно, какое количество процессов действительно повлияет на производительность ЦП до такой степени, что люди столкнутся с перебоями (или сбоями) в работе одного приложения, и как это проявится в современных операционных системах?
решение1
Я бы сказал, что это происходит из-за невероятной скорости переключения между процессами.
Вы правы. Но все же операции, выполняемые микропроцессором, выполняются дискретными шагами, а не непрерывно. Каждый такт заставляет ЦП извлекать содержимое памяти, на которую указывает счетчик программ. В следующем такте он декодирует инструкцию и так далее. Если вы сможете стать достаточно быстрыми (чтобы заметить), вы сможете заметить, что музыка, которую вы считаете непрерывной, на самом деле играет некоторое время, а затем останавливается, затем играет снова и так далее.
Быстрый и сложный зверькоторый делает процесс переключения молниеносно быстрым, называется Краткосрочным планировщиком (планировщик ЦП). Он должен быть быстрым, потому что вызывается каждые несколько миллисекунд и не выполняет никакой полезной работы (с точки зрения пользователя). Хотя разные реализации могут иметь небольшие различия, почти все планировщики поддерживают приоритетные очереди для разных классов процессов, таких как активные, фоновые и т. д.
Таким образом, даже если бы на компьютере работали тысячи процессов, только несколько из них напрямую взаимодействовали бы с пользователем. Планировщики учитывают эту информацию при переключении процессов. Потому что процесс проверки обновлений может подождать, а потоковая передача музыки в реальном времени — нет.
Но мне интересно, сколько процессов действительно повлияют на производительность процессора до такой степени, что люди столкнутся с прекращением работы.
Нет никакого магического числа, и есть так много других факторов, которые влияют на производительность (скорость памяти, размер и т. д.). Я думаю, что у вас закончится память, прежде чем производительность планировщика станет какой-либо проблемой. Одна вещь, которая может проявляться как прорывы, это когда вызывается некая высокоприоритетная процедура прерывания и она выполняется в течение длительного времени.
Интересный факт: - Чтобы улучшить взаимодействие пользователя с системой (я забыл), Стив Джобс поручил инженерам Apple назначить прерываниям мыши наивысший приоритет, чтобы указатель не запаздывал во время движения.