Все современные операционные системы поддерживают многозадачность. Таким образом, каждое запущенное приложение получит от процессора определенный промежуток времени (в зависимости от требований).

Вопрос в том, что если всегда рассчитывается интервал времени (а это, я полагаю), то почему одно приложение может стагнировать всю ОС (или машину).

Скажем, я играю звуковую дорожку с помощью VLC плеера. Затем я запускаю NetBeans(IDE). Затем звук из плеера VLC начинает заикаться (и продолжается до тех пор, пока NetBeans не станет полностью отзывчивым). Но у VLC плеера всегда должен быть свой временной интервал нетронутым, верно? или это просто перераспределение нового временного интервала для нового программного обеспечения, которое делает сброс необходимого временного интервала для уже работающего приложения?

2 ответа2

2

Почему запуск нового приложения вызывает заикание системы

Тогда звук из VLC плеера начинает заикаться

Вы предоставили только один пример "заикания", и заикается не система , а прикладная программа, чувствительная к задержке ввода-вывода. Короче говоря, ваша система достигла предела пропускной способности ввода / вывода.

Таким образом, каждое запущенное приложение получит от процессора определенный промежуток времени (в зависимости от их требований).

Может быть, а может и нет. Планировщик ОС может использовать временные интервалы для выделения времени ЦП для каждого процесса, или может использоваться приоритетная преимущественная схема. Или, если используется совместное планирование, процессу может быть разрешено загружать процессор, пока он не откажется от управления. "Современная операционная система" предложит системным и прикладным программистам множество возможностей для индивидуального планирования.

Но давайте предположим, что в вашем примере используется циклическое планирование временных интервалов. Проигрыватель VLC должен быть отнесен к категории программ с интенсивным вводом / выводом , а не с интенсивным использованием ЦП. По сути VLC-плеер неоднократно

  • чтение данных (из файла на диске)
  • запись данных (на аудиоустройство)

Проигрыватель VLC не использует свой временной интервал для интенсивных вычислений, но в основном для выполнения операции ввода или вывода, а затем приостанавливается до завершения этой операции ввода / вывода. В зависимости от планировщика ОС, неиспользованная часть временного интервала может быть возвращена процессу за очень длинный временный интервал при следующем цикле, или процесс теряет его, или процесс может перейти к началу очереди готовности как как только ввод / вывод завершится. Что именно произойдет, будет зависеть от того, как реализован планировщик ОС. Например, ядро Linux может быть построено для использования одного из нескольких планировщиков, каждый с различными характеристиками "справедливости" для разных типов процессов.

Затем, когда вы запускаете NetBeans, вы запускаете поток операций чтения с диска, чтобы найти и загрузить код приложения и общие библиотеки. Скорее всего, эта дополнительная активность на диске смешивается с запросами проигрывателя VLC, и каждое чтение VLC занимает больше времени, чем допустимая задержка, поэтому аудиоустройство испытывает недостаток данных и, следовательно, слышимое "заикание".

К сожалению, планировщики, как правило, сосредотачиваются на распределении ресурсов процессора и испытывают трудности (или избегают иметь дело) с непредсказуемыми проблемами ввода-вывода. Вы можете попробовать более быстрый дисковод и / или найти аудиофайл на диске, отличном от диска с программами OS +.

Ваша проблема связана с системами реального времени и почти реального времени , которые имеют дело с надежными и быстрыми / предсказуемыми реакциями на события. Воспроизведение видео и аудио не допускает переменную задержку ввода-вывода и имеет некоторые характеристики почти в реальном времени . Игроки должны использовать методы, используемые в системах, близких к реальному времени, если у ОС есть такие возможности, как приоритеты процессов.

Сеть реагировала на обработку трафика с малой задержкой по сравнению с обычным трафиком, поскольку она должна была решить эту проблему для VoIP. Нечто подобное необходимо для систем хранения данных.

0

Как операционная система может выдавать такое же количество ресурсов ЦП приложению, которое пытается запустить только то же, что и приложение, когда 18 других пытаются запустить? Единственный способ - предоставить приложению лишь небольшую часть доступных ресурсов, даже если это единственный. Это, очевидно, было бы катастрофой.

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

Если это три заявки, они не могут получить больше, чем 1/3.

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

На практике все намного сложнее. Например, если задача не использует свой полный временной интервал, она часто получает повышение приоритета. То же самое может применяться, если задача прерывается системным вводом / выводом. На практике это приводит к большей реакции системы. (Представьте, что вы долго смотрите на веб-страницу, а затем нажимаете кнопку. Поскольку ваш браузер работал хорошо и выдает процессор, пока вы читаете, когда ему вдруг нужен процессор, он вознаграждается за то, что он хороший и улучшает интерактивность.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .