Очки знаний по операционной системе

Операционная система

Управление процессом

В чем разница между процессом и потоком?

  • Процесс является независимой единицей для распределения ресурсов и планирования в системе, и он может иметь свое собственное адресное пространство; процесс вводится для обеспечения одновременного выполнения нескольких программ для улучшения использования ресурсов и пропускной способности системы.
  • Поток — это сущность процесса и основная единица планирования ЦП. Это единица меньше, чем процесс, который может выполняться независимо. Потоки вводятся для уменьшения накладных расходов программ в параллельном процессе и повышения эффективности ОС.

Какая разница между двумя?

  • Процесс — это наименьшая единица распределения ресурсов, а поток — наименьшая единица планирования;
  • Поток может принадлежать только одному процессу, а процесс может иметь несколько потоков, но по крайней мере один поток;
  • Сам процесс сохраняет ресурсы, в то время как поток содержит только некоторые ресурсы, необходимые для поддержания деятельности, и не владеет системными ресурсами.

Почему планирование потоков имеет меньше накладных расходов, чем процесс?

  • Так как процесс является владельцем ресурса, то в процессе создания или отзыва процесса система должна создавать или освобождать блоки управления процессом, выделять или освобождать память для него, в то же время при переключении процессов системе необходимо сохранить ЦП текущей среды процесса, а затем установить среду ЦП вновь выбранного процесса, поэтому планирование процесса относительно сложно и требует много процессорного времени.
  • Хотя потоки обладают многими характеристиками традиционных процессов, сами они не сохраняют ресурсы, а поскольку ресурсы в одном и том же процессе совместно используются всеми потоками, потоки могут более удобно и быстро обмениваться данными через эти данные, тем самым снижая некоторые системные накладные расходы. Следовательно, по сравнению с процессом поток может иметь более высокую скорость планирования, также известную как «легкий процесс».

Каковы состояния процесса?

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

Какие есть способы синхронизации потоков?

  • Мьютекс: при использовании механизма объекта мьютекса только поток, которому принадлежит объект мьютекса, имеет право доступа к общедоступным ресурсам. Поскольку существует только один объект мьютекса, можно гарантировать, что общие ресурсы не будут доступны нескольким потокам одновременно; но это может легко вызвать взаимоблокировку (
  • Семафор: он позволяет нескольким потокам получать доступ к одному и тому же ресурсу одновременно, но должен контролировать максимальное количество потоков, которые одновременно обращаются к этому ресурсу; когда требуется счетчик для ограничения количества общих ресурсов, которые могут быть использованы. , можно использовать объект «семафор».
  • Событие (сигнал): многопоточная синхронизация поддерживается с помощью операции уведомления, также может быть легко реализована многопоточная операция сравнения приоритетов, то есть механизм событий позволяет одному потоку активно пробуждать другой поток для выполнения задача после обработки задачи.

Каковы классические проблемы синхронизации процессов?

  • Проблема производитель-потребитель
    • Описание проблемы: Группа процессов-производителей и группа процессов-потребителей совместно используют буфер, изначально пустой и определенного размера.Только когда буфер не заполнен, процесс-производитель может помещать сообщения в буфер, в противном случае Ждать; только когда буфер не пуст, процесс-потребитель может получить из него сообщение, в противном случае он будет ждать; доступ к буферу может получить только один процесс за раз.
    • Анализ проблемы: доступ процессов производителя и потребителя к буферу является взаимоисключающим, а сами производитель и потребитель имеют синхронные отношения, то есть сообщения должны быть созданы до того, как их можно будет использовать. Следовательно, для доступа к буферу может быть установлен мьютекс, а также могут быть установлены два семафора: один записывает свободную единицу буфера, а другой записывает полную единицу буфера, чтобы реализовать синхронизацию между производителем и потребителем.
  • Обеденная проблема философа
    • Описание задачи: Пять философов сидят за круглым столом, между двумя философами находится палочка для еды.Философ может есть, только взяв левую и правую палочки одновременно.После того, как трапеза завершена, положите палочки вернуться на свои прежние места.
    • Анализ проблемы: чтобы предотвратить тупиковые ситуации, возникающие из-за того, что философы берут палочки для еды, необходимо добавить определенные ограничения.
    • Несколько решений заключаются в следующем:
      • Ограничение одновременного использования левой палочки для еды не более чем четырьмя философами гарантирует, что по крайней мере один философ в конечном итоге сможет поесть и освободить свои использованные палочки для еды, когда они будут готовы, чтобы больше философов могли есть.
      • Ограничение разрешать есть палочками только тогда, когда левая и правая руки философа доступны; т. е. использовать семафорный механизм И для решения задачи
  • проблема чтения-записи
    • Описание проблемы: Есть два параллельных процесса, читатель и писатель, совместно использующие данные. Несколько процессов чтения могут обращаться к данным одновременно, но доступ к данным процесса записи является взаимоисключающим с другими процессами.
    • Анализ проблемы: Читатели и писатели исключают друг друга, писатели и писатели исключают друг друга, а читатели делятся с читателями. Поэтому мьютекс необходим для реализации взаимного исключения между процессом чтения-записи и процессом записи-записи.Кроме того, нужно ввести счетчик для подсчета потоков чтения, чтобы чтение и чтение синхронизировались, а чтение и запись являются взаимоисключающими.
    • Несколько решений заключаются в следующем:
      • Читатели в первую очередь: но пока есть постоянный поток читателей, писатели не будут получать ресурсы, что может легко заставить писателей голодать.
      • Справедливость чтения и записи: читатели и писатели честно конкурируют за ресурсы, но пока есть читатели, которые были поставлены в очередь раньше, даже если писатели получают ресурсы, они должны ждать завершения всех потоков чтения.
      • Сначала модуль записи: несмотря на то, что читатели, которые были поставлены в очередь раньше, могут получить доступ к ресурсам первыми, читатели после этого должны дождаться завершения процесса записи. Пока есть постоянный поток писателей, следующие читатели не получат ресурсов, что легко вызовет голод у читателей.

Какие существуют способы связи между процессами?

  • Процессная коммуникация относится к обмену информацией между процессами. Поэтому за взаимное исключение и синхронизацию между процессами с семафорами относят к низкоуровневой связи из-за малого объема обмениваемой информации.
  • Так называемая высокоуровневая связь между процессами означает, что пользователи могут использовать набор коммуникационных команд, предоставляемых операционной системой, для передачи большого объема данных, в то время как операционная система скрывает детали реализации процесса связи, т. процесс прозрачен для пользователя.
  • Расширенные коммуникационные механизмы можно разделить на три широкие категории:
    • Конвейерная связь: конвейерная связь — это полудуплексный метод связи, и данные могут передаваться между процессами только в одном направлении; среди них тот, который отправляет сообщения, называется процессом записи, а тот, который получает сообщение, называется процессом чтения. . Каналы в основном делятся на обычные каналы и именованные каналы.Разница между ними заключается в том, что обычные каналы могут проходить только между процессами с родством (например, родительским и дочерним процессами), тогда как именованные каналы позволяют взаимодействовать процессам без сходства.
    • Связь с буферизацией сообщений: несколько независимых процессов могут взаимодействовать друг с другом через механизм буферизации сообщений. Реализация этого вида связи использует буфер сообщений в качестве промежуточного механизма. Операции отправки и получения обеих сторон связи основаны на сообщениях. В памяти буферы сообщений организованы в очереди, часто называемые очередями сообщений; однажды созданные очереди сообщений могут совместно использоваться несколькими потоками.
    • Связь с общей памятью: поскольку буферизация сообщений должна занимать центральный процессор для копирования сообщений, ОС предоставляет метод связи, который позволяет осуществлять прямой обмен данными между процессами, то есть общую память. Он может напрямую отображать страницу общей памяти в виртуальное адресное пространство сетки процессов, которые взаимодействуют друг с другом без использования промежуточного механизма, так что несколько процессов могут напрямую обращаться к одной и той же странице физической памяти, как если бы они обращались к своему личному пространству. Однако, поскольку объект памяти существует в компьютерной системе, он может совместно использоваться только процессами в той же компьютерной системе, что неудобно для сетевого взаимодействия.

Планирование процессора и взаимоблокировки

Каковы алгоритмы планирования процессов в операционной системе?

  • Алгоритм планирования «первым пришел – первым обслужен»: каждый раз выбирайте первый процесс, который будет входить в очередь.
  • Алгоритм планирования с коротким приоритетом задания: каждый раз выбирать процесс с наименьшим ожидаемым временем выполнения.
  • Алгоритм планирования с высоким приоритетом:
    • Алгоритм невытесняющего приоритета: как только процессор назначается процессу с наивысшим приоритетом в очереди готовности, процесс будет продолжать выполняться до тех пор, пока выполнение не будет завершено или процесс добровольно не покинет процессор; этот алгоритм планирования в основном используется для пакетной обработки. обработка Его также можно использовать в некоторых системах реального времени, которые не имеют строгих требований к реальному времени.
    • Алгоритм планирования с упреждающим приоритетом: он также назначает процессор текущему процессу с наивысшим приоритетом, но если во время выполнения появляется процесс с более высоким приоритетом, выполнение текущего процесса будет немедленно остановлено, а процессор будет переназначен новому процессу. y процесс с наивысшим приоритетом. Обычно используется в системах реального времени со строгими требованиями, а также в пакетных системах и системах с разделением времени с высокими требованиями к производительности.

Что такое тупик?

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

Каковы условия тупиковой ситуации?

В основном есть следующие четыре условия, пока одно из них не выполняется, взаимоблокировки не будет:

  • Условие взаимного исключения: ресурс может быть вызван только одним процессом за раз.
  • Условия запроса и удержания: когда процесс блокируется из-за запроса ресурсов, он будет удерживать полученные ресурсы.
  • Неотъемлемое условие: ресурс, полученный процессом, не будет принудительно лишен до тех пор, пока он не будет полностью израсходован.
  • Условие ожидания цикла: между несколькими процессами формируется отношение ожидания цикла.

Каковы основные методы решения взаимоблокировок?

  • Предотвратить взаимоблокировку:
    • Одноразовое выделение ресурсов: (уничтожение условий запроса и удержания)
    • Выгружаемые ресурсы: когда новые ресурсы процесса не удовлетворяются, освобождайте уже занятые ресурсы (нарушайте неотъемлемое условие).
    • Упорядоченное распределение ресурсов: система присваивает номер каждому типу ресурса, и каждый процесс запрашивает ресурсы в порядке возрастания номеров, а освобождение происходит в обратном порядке (разрушает условие ожидания цикла)
  • Избегайте взаимоблокировок:
    • Алгоритм банкира: Начиная с текущего состояния, проверьте количество ресурсов, которые должен применить каждый процесс, один за другим в соответствии с оставшимся количеством различных ресурсов в системе, найдите процесс P1, у которого количество приложений различных ресурсов не превышает количество оставшихся ресурсов в системе, а затем выделить ему ресурсы, предполагая, что P1 вернет все ресурсы, которые он занимает после завершения своей работы, обновить статус оставшихся ресурсов системы и удалить P1 в списке процессов, а затем продолжить найти следующий процесс, удовлетворяющий условиям. Банкир (ОС) находится в безопасности, если находит последовательность, позволяющую всем клиентам (процессам) выполнять работу.
  • Обнаружить взаимоблокировку:
    • Присвойте уникальный номер каждому процессу, каждому ресурсу
    • Настройте таблицу распределения ресурсов для записи взаимосвязи между каждым процессом и занятыми ресурсами.
    • Настройте представителя, такого как процесс, для записи взаимосвязи между каждым процессом и ресурсом, для которого будет применяться.
    • Проверяйте занятость ресурса и ситуацию с запросом по очереди, если есть петля, значит, произошла взаимоблокировка.
  • Разблокировать тупик:
    • Использование ресурсов: использование достаточного количества ресурсов из других процессов для заблокированного процесса, чтобы выйти из тупика.
    • Отмена процесса: самый простой способ отзыва — убить все заблокированные процессы; чуть более мягкий способ — отозвать процессы один за другим в определенном порядке, пока не будет доступно достаточно ресурсов для устранения заблокированного состояния.

управление памятью

Каковы алгоритмы динамического непрерывного распределения?

Динамическое выделение разделов, также известное как переменное выделение разделов, представляет собой метод разбиения на разделы для динамического планирования памяти. Этот метод не разделяет память заранее, а динамически устанавливает раздел в соответствии с размером процесса, когда процесс загружается в память, и делает размер раздела просто подходящим для нужд процесса. Поэтому размер и количество разделов в системе могут варьироваться. Динамическое непрерывное размещение в основном включает следующие алгоритмы:

  • Алгоритм первого подбора: свободные разделы связаны в порядке возрастания адресов. Поиск последовательно при выделении памяти, чтобы найти первый свободный раздел, размер которого соответствует требованиям
  • Алгоритм оптимальной адаптации: свободные разделы образуют цепочку разделов с возрастающей емкостью и находят первый свободный раздел, отвечающий требованиям.
  • Алгоритм наихудшей адаптации: также известный как алгоритм максимальной адаптации, свободные разделы связываются в порядке уменьшения емкости, и находится первый свободный раздел, который может соответствовать требованиям, то есть выбирается самый большой раздел.

В чем разница между пейджинговым и сегментированным управлением хранилищем?

  • Страница — это физическая единица информации, а подкачка предназначена для достижения дискретного распределения, чтобы уменьшить «фрагментацию» памяти и улучшить использование памяти для удовлетворения потребностей системы. Сегмент — это логическая единица информации, которая содержит набор относительно полной информации, способной лучше удовлетворить потребности пользователей.
  • Размер страницы фиксирован и определяется системой, а длина сегмента не фиксирована и зависит от программы, написанной пользователем.
  • Рабочее адресное пространство подкачки является одномерным, т. е. единым линейным пространством. Программисту нужно использовать мнемонику только для представления сегмента адреса; сегментированное рабочее адресное пространство является двумерным. Когда программист идентифицирует адрес, То есть необходимо указать имя сегмента и адрес внутри сегмента.

Что такое виртуальная память?

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

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

Каковы характеристики виртуальной памяти?

  • Несколько раз: задание может быть загружено в память несколько раз. Повторяемость — это свойство, специфичное для виртуальной памяти.
  • Возможность замены: Относится к процессу замены и замены во время работы задания.
  • Виртуальность: Относится к его логически расширенному объему памяти. Виртуальность — самая важная особенность виртуальной памяти и ее конечная цель; она основана на множественности и возможности замены, которая, в свою очередь, основана на дискретном распределении.

Каковы наиболее часто используемые алгоритмы замены страниц?

  • Алгоритм наилучшей замены: Алгоритм, который существует только в теории, предпочтительно заменяет страницы, которые не будут доступны в самом долгом будущем мире.
  • Алгоритм «первым пришел — первым вышел»: замена самых ранних страниц, загруженных первыми.
  • Последний неиспользованный алгоритм: попытка оптимального алгоритма замены, который предпочтительно заменяет последние неиспользованные страницы. Алгоритм назначает каждой странице поле доступа, которое используется для записи времени t, прошедшего с момента обращения к последней странице, и каждый раз заменяется страница с наибольшим значением t. Замените. Это лучший алгоритм, но он требует большей аппаратной поддержки, такой как регистры и стеки.
  • Алгоритм часов: также известный как недавно неиспользованный алгоритм, это приблизительный алгоритм, который не использовался в течение длительного времени; этот алгоритм устанавливает бит доступа для страницы и связывает страницу в циклическую очередь, а поток будет обращаться к бит в 1 при доступе к странице. Когда страница заменяется, если бит доступа страницы, на которую указывает текущий указатель, равен 0, замените его, в противном случае замените его на 0, а затем продолжайте оценивать следующую, пока не встретится страница, чей бит доступа равен 0. .
  • Улучшите алгоритм синхронизации: добавьте бит модификации на основе алгоритма синхронизации и при замене сделайте исчерпывающую оценку на основе бита доступа и бита модификации. Приоритет отдается замене страниц, у которых бит доступа и бит модификации равны 0. Фактически это страница, бит доступа которой равен 0, а бит модификации равен 1.


Я реорганизую других, когда подумаю о них (`・ω・´)