Контекст процесса может быть перемещен из оперативной памяти
Обновлено: 21.11.2024
В операционной системе бывают случаи, когда вам нужно вернуть процесс, находящийся в состоянии выполнения, в какое-либо другое состояние, например состояние готовности или состояние ожидания/блокировки. Если работающий процесс хочет выполнить какую-либо операцию ввода-вывода, вам необходимо вывести процесс из состояния выполнения, а затем поместить процесс в очередь ввода-вывода. Иногда процесс может использовать циклический алгоритм планирования, при котором после каждого фиксированного кванта времени процесс должен возвращаться в состояние готовности из рабочего состояния. Таким образом, эти переключения процессов выполняются с помощью переключения контекста. В этом блоге мы узнаем о концепции переключения контекста в операционной системе, а также узнаем о преимуществах и недостатках переключения контекста. Итак, приступим.
Что такое переключение контекста?
Переключение контекста — это процесс, который включает переключение ЦП с одного процесса или задачи на другой. В этом случае выполнение процесса, находящегося в состоянии выполнения, приостанавливается ядром, а другой процесс, находящийся в состоянии готовности, выполняется ЦП.
Это одна из важнейших функций многозадачной операционной системы. Процессы переключаются так быстро, что у пользователя создается иллюзия, что все процессы выполняются одновременно.
Но процесс переключения контекста включает ряд шагов, которые необходимо выполнить. Вы не можете напрямую переключить процесс из состояния выполнения в состояние готовности. Вы должны сохранить контекст этого процесса. Если вы не сохраняете контекст какого-либо процесса P, то через какое-то время, когда процесс P снова придет в CPU для выполнения, процесс начнет выполняться с самого начала. Но на самом деле он должен продолжаться с того места, где он оставил ЦП в своем предыдущем выполнении. Таким образом, контекст процесса должен быть сохранен перед переводом любого другого процесса в состояние выполнения.
Контекст – это содержимое регистров ЦП и счетчика программ в любой момент времени. Переключение контекста может происходить по следующим причинам:
- Когда процесс с высоким приоритетом переходит в состояние готовности. В этом случае выполнение запущенного процесса должно быть остановлено, а процессу с более высоким приоритетом должен быть предоставлен центральный процессор для выполнения.
- Когда происходит прерывание, процесс в запущенном состоянии должен быть остановлен, и ЦП должен обработать прерывание, прежде чем делать что-то еще.
- Когда требуется переход между режимом пользователя и режимом ядра, необходимо выполнить переключение контекста.
Этапы переключения контекста
Процесс переключения контекста состоит из нескольких шагов. На следующей диаграмме показан процесс переключения контекста между двумя процессами P1 и P2.
На приведенном выше рисунке видно, что изначально процесс P1 находится в состоянии выполнения, а процесс P2 — в состоянии готовности. Теперь, когда происходит некоторое прерывание, вы должны переключить процесс P1 из состояния выполнения в состояние готовности после сохранения контекста и процесса P2 из состояния готовности в состояние выполнения. Будут выполнены следующие шаги:
- Во-первых, контекст процесса P1, т. е. процесс, находящийся в состоянии выполнения, будет сохранен в блоке управления процессом процесса P1, т. е. PCB1.
- Теперь вам нужно переместить плату PCB1 в соответствующую очередь, т. е. в очередь готовности, очередь ввода-вывода, очередь ожидания и т. д.
- В состоянии готовности выберите новый процесс, который необходимо выполнить, т. е. процесс P2.
- Теперь обновите блок управления процессом процесса P2, т. е. PCB2, установив состояние процесса на выполнение. Если процесс P2 ранее выполнялся процессором, то вы можете получить позицию последней выполненной инструкции, чтобы возобновить выполнение P2.
- Аналогичным образом, если вы хотите снова выполнить процесс P1, вам необходимо выполнить те же шаги, что и упомянутые выше (с шага 1 по 4).
Чтобы произошло переключение контекста, в общем случае требуется как минимум два процесса, а в случае циклического алгоритма переключение контекста можно выполнять только с помощью одного процесса.
Время, затрачиваемое на переключение контекста одного процесса другим, называется временем переключения контекста.
Преимущество переключения контекста
Переключение контекста используется для достижения многозадачности, т. е. многозадачности с разделением времени (узнайте больше о многозадачности здесь). Многозадачность создает у пользователей иллюзию, что одновременно выполняется более одного процесса. Но на самом деле в конкретный момент времени процессором выполняется только одна задача.Здесь переключение контекста происходит настолько быстро, что пользователю кажется, что ЦП одновременно выполняет более одной задачи.
Недостаток переключения контекста
Недостаток переключения контекста заключается в том, что для переключения контекста требуется некоторое время, то есть время переключения контекста. Требуется время, чтобы сохранить контекст одного процесса, который находится в состоянии выполнения, а затем получить контекст другого процесса, который вот-вот перейдет в состояние выполнения. В течение этого времени ЦП не выполняет никакой полезной работы с точки зрения пользователя. Таким образом, в этом случае переключение контекста — это накладные расходы.
Это все для этого блога. Надеюсь, вам понравился этот блог.
Делитесь этим блогом со своими друзьями, чтобы распространять информацию. Посетите наш канал YouTube, чтобы увидеть больше контента.
Управление памятью — это функциональность операционной системы, которая обрабатывает или управляет основной памятью и перемещает процессы туда и обратно между основной памятью и диском во время выполнения. Управление памятью отслеживает каждую ячейку памяти, независимо от того, выделена ли она для какого-либо процесса или свободна. Он проверяет, сколько памяти должно быть выделено процессам. Он решает, какой процесс получит память в какое время. Он отслеживает каждый раз, когда часть памяти освобождается или освобождается, и соответственно обновляет статус.
Это руководство научит вас основным понятиям, связанным с управлением памятью.
Адресное пространство процесса
Адресное пространство процесса — это набор логических адресов, на которые процесс ссылается в своем коде. Например, когда используется 32-битная адресация, адреса могут находиться в диапазоне от 0 до 0x7ffffffff; то есть 2^31 возможных чисел для общего теоретического размера 2 гигабайта.
Операционная система заботится о сопоставлении логических адресов с физическими во время выделения памяти программе. Есть три типа адресов, используемых в программе до и после выделения памяти —
Символические адреса
Адреса, используемые в исходном коде. Имена переменных, константы и метки инструкций являются основными элементами символьного адресного пространства.
Относительные адреса
Во время компиляции компилятор преобразует символические адреса в относительные адреса.
Физические адреса
Загрузчик генерирует эти адреса во время загрузки программы в основную память.
Виртуальные и физические адреса одинаковы в схемах привязки адресов во время компиляции и во время загрузки. Виртуальные и физические адреса отличаются схемой привязки адресов во время выполнения.
Набор всех логических адресов, сгенерированных программой, называется логическим адресным пространством. Набор всех физических адресов, соответствующих этим логическим адресам, называется физическим адресным пространством.
Преобразование виртуального адреса в физический во время выполнения выполняется блоком управления памятью (MMU), который является аппаратным устройством. MMU использует следующий механизм для преобразования виртуального адреса в физический адрес.
Значение в базовом регистре добавляется к каждому адресу, сгенерированному пользовательским процессом, который обрабатывается как смещение во время его отправки в память. Например, если базовое значение регистра равно 10000, то попытка пользователя использовать адрес 100 будет динамически перераспределена на адрес 10100.
Программа пользователя имеет дело с виртуальными адресами; он никогда не видит реальных физических адресов.
Статическая и динамическая загрузка
Выбор между статической или динамической загрузкой должен быть сделан во время разработки компьютерной программы. Если вам нужно загрузить вашу программу статически, то во время компиляции полные программы будут скомпилированы и скомпонованы, не оставляя никакой зависимости от внешней программы или модуля. Компоновщик объединяет объектную программу с другими необходимыми объектными модулями в абсолютную программу, которая также включает логические адреса.
Если вы пишете динамически загружаемую программу, ваш компилятор скомпилирует программу, и для всех модулей, которые вы хотите включить динамически, будут предоставлены только ссылки, а остальная работа будет выполнена во время выполнения.
Во время загрузки при статической загрузке абсолютная программа (и данные) загружаются в память, чтобы начать выполнение.
Если вы используете динамическую загрузку, динамические подпрограммы библиотеки хранятся на диске в перемещаемом виде и загружаются в память только тогда, когда они нужны программе.
Статическая и динамическая привязка
Как объяснялось выше, когда используется статическая компоновка, компоновщик объединяет все другие модули, необходимые программе, в одну исполняемую программу, чтобы избежать какой-либо зависимости во время выполнения.
При использовании динамической компоновки не требуется связывать фактический модуль или библиотеку с программой, вместо этого во время компиляции и компоновки предоставляется ссылка на динамический модуль.Библиотеки динамической компоновки (DLL) в Windows и общие объекты в Unix — хорошие примеры динамических библиотек.
Обмен
Подкачка — это механизм, с помощью которого процесс может быть временно выгружен из основной памяти (или перемещен) во вторичное хранилище (диск) и сделать эту память доступной для других процессов. Через некоторое время система переключает процесс обратно из вторичного хранилища в основную память.
Хотя процесс подкачки обычно влияет на производительность, он помогает выполнять несколько больших процессов параллельно, поэтому подкачка также известна как метод сжатия памяти.
Общее время, затрачиваемое процессом подкачки, включает время, необходимое для перемещения всего процесса на дополнительный диск и последующего копирования процесса обратно в память, а также время, необходимое процессу для восстановления основной памяти.
Предположим, что пользовательский процесс имеет размер 2048 КБ и скорость передачи данных на стандартном жестком диске, где будет происходить подкачка, составляет около 1 МБ в секунду. Фактическая передача процесса 1000 КБ в память или из памяти займет
Теперь, учитывая время входа и выхода, потребуется полных 4000 миллисекунд плюс другие накладные расходы, когда процесс конкурирует за восстановление основной памяти.
Распределение памяти
Основная память обычно состоит из двух разделов —
Недостаточно памяти — операционная система находится в этой памяти.
Высокая память — пользовательские процессы хранятся в верхней памяти.
Операционная система использует следующий механизм выделения памяти.
Выделение одного раздела
В этом типе распределения схема перемещения-регистра используется для защиты пользовательских процессов друг от друга, а также от изменения кода и данных операционной системы. Регистр перемещения содержит значение наименьшего физического адреса, тогда как регистр ограничения содержит диапазон логических адресов. Каждый логический адрес должен быть меньше регистра ограничения.
Выделение нескольких разделов
При таком типе распределения основная память делится на несколько разделов фиксированного размера, каждый из которых должен содержать только один процесс. Когда раздел свободен, процесс выбирается из входной очереди и загружается в свободный раздел. Когда процесс завершается, раздел становится доступным для другого процесса.
Фрагментация
Когда процессы загружаются и удаляются из памяти, свободное место в памяти разбивается на маленькие кусочки. Бывает и так, что процессы не могут быть размещены в блоках памяти из-за их небольшого размера, и блоки памяти остаются неиспользованными. Эта проблема известна как фрагментация.
Фрагментация бывает двух типов —
Внешняя фрагментация
Общего объема памяти достаточно, чтобы удовлетворить запрос или разместить в нем процесс, но он не является непрерывным, поэтому его нельзя использовать.
Внутренняя фрагментация
Блок памяти, назначенный процессу, больше. Некоторая часть памяти остается неиспользованной, так как ее не может использовать другой процесс.
На следующей диаграмме показано, как фрагментация может привести к нерациональному использованию памяти, а метод уплотнения может использоваться для создания большего объема свободной памяти из фрагментированной памяти.
Внешняя фрагментация может быть уменьшена путем сжатия или перемешивания содержимого памяти, чтобы поместить всю свободную память в один большой блок. Чтобы сделать уплотнение возможным, перемещение должно быть динамическим.
Внутреннюю фрагментацию можно уменьшить, эффективно назначив наименьший раздел, но достаточно большой для процесса.
Пейджинг
Компьютер может адресовать больше памяти, чем физически установлено в системе. Эта дополнительная память на самом деле называется виртуальной памятью, и это часть жесткого диска, настроенная для эмуляции оперативной памяти компьютера. Метод пейджинга играет важную роль в реализации виртуальной памяти.
Пейджинг — это метод управления памятью, при котором адресное пространство процесса разбивается на блоки одинакового размера, называемые страницами (размер равен степени 2, от 512 до 8192 байт). Размер процесса измеряется количеством страниц.
Аналогичным образом основная память делится на небольшие блоки (физической) памяти фиксированного размера, называемые фреймами, а размер фрейма остается таким же, как у страницы, чтобы обеспечить оптимальное использование основной памяти и избежать внешней фрагментации. .
Перевод адреса
Адрес страницы называется логическим адресом и представлен номером страницы и смещением.
Адрес кадра называется физическим адресом и представлен номером кадра и смещением.
Структура данных, называемая таблицей сопоставления страниц, используется для отслеживания связи между страницей процесса и фреймом в физической памяти.
Когда система выделяет фрейм какой-либо странице, она преобразует этот логический адрес в физический адрес и создает запись в таблице страниц, которая будет использоваться во время выполнения программы.
Когда процесс должен быть выполнен, соответствующие ему страницы загружаются в любые доступные фреймы памяти. Предположим, у вас есть программа размером 8 КБ, но ваша память может вместить только 5 КБ в данный момент времени, тогда концепция пейджинга появится на картинке. Когда на компьютере заканчивается оперативная память, операционная система (ОС) перемещает незанятые или ненужные страницы памяти во вторичную память, чтобы освободить оперативную память для других процессов, и возвращает их, когда это необходимо программе.
Этот процесс продолжается в течение всего выполнения программы, когда ОС продолжает удалять незанятые страницы из основной памяти, записывать их во вторичную память и возвращать их обратно, когда это требуется программе.
Преимущества и недостатки пейджинга
Вот список преимуществ и недостатков пейджинга —
Пейджинг уменьшает внешнюю фрагментацию, но по-прежнему страдает от внутренней фрагментации.
Пейджинг прост в реализации и считается эффективным методом управления памятью.
Благодаря одинаковому размеру страниц и фреймов, обмен становится очень простым.
Таблица страниц требует дополнительного места в памяти, поэтому может не подойти для системы с небольшим объемом оперативной памяти.
Сегментация
Сегментация – это метод управления памятью, при котором каждое задание делится на несколько сегментов разного размера, по одному на каждый модуль, содержащий части, выполняющие связанные функции. Каждый сегмент фактически представляет собой отдельное логическое адресное пространство программы.
Когда процесс должен быть выполнен, его соответствующая сегментация загружается в несмежную память, хотя каждый сегмент загружается в непрерывный блок доступной памяти.
Управление памятью сегментации очень похоже на подкачку, но здесь сегменты имеют переменную длину, тогда как страницы подкачки имеют фиксированный размер.
Программный сегмент содержит основную функцию программы, служебные функции, структуры данных и т. д. Операционная система поддерживает таблицу карт сегментов для каждого процесса и список свободных блоков памяти вместе с номерами сегментов, их размером и соответствующими ячейками памяти в основной памяти. Для каждого сегмента в таблице хранится начальный адрес сегмента и длина сегмента. Ссылка на ячейку памяти включает значение, идентифицирующее сегмент и смещение.
Планирование процессов — это действия диспетчера процессов, которые обрабатывают удаление запущенного процесса из ЦП и выбор другого процесса на основе определенной стратегии.
Планирование процессов является неотъемлемой частью мультипрограммных операционных систем. Такие операционные системы позволяют одновременно загружать в исполняемую память более одного процесса, а загруженный процесс разделяет ЦП с помощью временного мультиплексирования.
Обработка очередей планирования
Операционная система поддерживает все платы PCB в очередях планирования процессов. ОС поддерживает отдельную очередь для каждого из состояний процесса, и платы всех процессов в одном и том же состоянии выполнения помещаются в одну и ту же очередь. Когда состояние процесса изменяется, его плата отключается от текущей очереди и перемещается в новую очередь состояния.
Операционная система поддерживает следующие важные очереди планирования процессов —
Очередь заданий — в этой очереди хранятся все процессы в системе.
Очередь готовности — в этой очереди хранится набор всех процессов, находящихся в основной памяти, готовых и ожидающих выполнения. В эту очередь всегда ставится новый процесс.
Очереди устройств — процессы, заблокированные из-за недоступности устройства ввода-вывода, составляют эту очередь.
Операционная система может использовать разные политики для управления каждой очередью (FIFO, Round Robin, Priority и т. д.). Планировщик ОС определяет, как перемещать процессы между очередями готовности и выполнения, которые могут иметь только одну запись на ядро процессора в системе; на приведенной выше диаграмме он был объединен с ЦП.
Модель процесса с двумя состояниями
Модель процесса с двумя состояниями относится к работающим и неработающим состояниям, которые описаны ниже —
Когда создается новый процесс, он входит в систему как в запущенном состоянии.
Не работает
Процессы, которые не запущены, остаются в очереди, ожидая своей очереди на выполнение. Каждая запись в очереди является указателем на определенный процесс. Очередь реализована с использованием связанного списка. Использование диспетчера заключается в следующем. Когда процесс прерывается, этот процесс передается в очередь ожидания. Если процесс завершен или прерван, он отбрасывается.В любом случае диспетчер затем выбирает процесс из очереди для выполнения.
Планировщики
Планировщики — это специальное системное программное обеспечение, которое различными способами обрабатывает планирование процессов. Их основная задача — выбрать задания для отправки в систему и решить, какой процесс запускать. Планировщики бывают трех типов —
- Долгосрочный планировщик
- Краткосрочный планировщик
- Среднесрочный планировщик
Долгосрочный планировщик
Его также называют планировщиком заданий. Долговременный планировщик определяет, какие программы допускаются к обработке системой. Он выбирает процессы из очереди и загружает их в память для выполнения. Процесс загружается в память для планирования ЦП.
Основная цель планировщика заданий – обеспечить сбалансированное сочетание заданий, например заданий, связанных с вводом-выводом и с привязкой к процессору. Он также контролирует степень мультипрограммирования. Если степень мультипрограммирования стабильна, то средняя скорость создания процессов должна быть равна средней скорости отправления процессов, покидающих систему.
В некоторых системах долгосрочный планировщик может быть недоступен или может быть минимальным. Операционные системы с разделением времени не имеют долгосрочного планировщика. Когда процесс меняет состояние с нового на готовое, используется долгосрочный планировщик.
Краткосрочный планировщик
Его также называют планировщиком ЦП. Его основная цель — повысить производительность системы в соответствии с выбранным набором критериев. Это изменение состояния готовности на состояние выполнения процесса. Планировщик ЦП выбирает процесс среди процессов, готовых к выполнению, и выделяет ЦП одному из них.
Краткосрочные планировщики, также известные как диспетчеры, принимают решение о том, какой процесс выполнять следующим. Краткосрочные планировщики работают быстрее, чем долгосрочные.
Среднесрочный планировщик
Среднесрочное планирование является частью обмена. Он удаляет процессы из памяти. Это снижает степень мультипрограммирования. Среднесрочный планировщик отвечает за обработку выгруженных процессов.
Выполняемый процесс может быть приостановлен, если он делает запрос ввода-вывода. Приостановленные процессы не могут продвигаться к завершению. В этом состоянии, чтобы удалить процесс из памяти и освободить место для других процессов, приостановленный процесс перемещается во вторичное хранилище. Этот процесс называется свопингом, а сам процесс называется свопингом или развертыванием. Замена может потребоваться для улучшения сочетания процессов.
Сравнение Планировщика
SN | Долгосрочный планировщик | Краткосрочный планировщик | Среднесрочный планировщик |
---|---|---|---|
1 | Это планировщик заданий | Это планировщик ЦП | Это планировщик переключения процессов. |
2 | Скорость меньше, чем у краткосрочного планировщика | Скорость самая высокая среди двух других | Скорость находится между краткосрочным и долгосрочным планировщиком. |
3 | Он контролирует степень мультипрограммирования | Он обеспечивает меньший контроль над степенью мультипрограммирования | Это уменьшает степень мультипрограммирования.< /td> |
4 | Практически отсутствует или минимален в системе разделения времени | В системе разделения времени также минимален | Это часть систем разделения времени. |
5 | Он выбирает процессы из пула и загружает их в память для выполнения | <тд >Он выбирает те процессы, которые готовы к выполнениюОн может повторно ввести процесс в память, и выполнение может быть продолжено. |
Переключение контекста
Переключение контекста — это механизм для сохранения и восстановления состояния или контекста ЦП в блоке управления процессом, чтобы выполнение процесса можно было возобновить с той же точки в более позднее время. Используя этот метод, переключатель контекста позволяет нескольким процессам совместно использовать один ЦП. Переключение контекста — важная часть функций многозадачной операционной системы.
Когда планировщик переключает ЦП с выполнения одного процесса на выполнение другого, состояние текущего запущенного процесса сохраняется в блоке управления процессом. После этого состояние следующего процесса загружается из его собственной платы и используется для установки ПК, регистров и т. д. В этот момент второй процесс может начать выполняться.
Переключение контекста требует значительных вычислительных ресурсов, поскольку необходимо сохранять и восстанавливать состояние регистров и памяти. Чтобы избежать времени переключения контекста, некоторые аппаратные системы используют два или более набора регистров процессора. При переключении процесса следующая информация сохраняется для последующего использования.
Управление памятью — это процесс контроля и координации памяти компьютера, назначение частей, известных как блоки, различным запущенным программам для оптимизации общей производительности системы.
Это самая важная функция операционной системы, управляющая основной памятью. Это помогает процессам перемещаться вперед и назад между основной памятью и исполняемым диском. Это помогает ОС отслеживать каждую ячейку памяти, независимо от того, выделена ли она для какого-либо процесса или остается свободной.
Из этого руководства по операционной системе вы узнаете:
Зачем использовать управление памятью?
Вот причины для использования управления памятью:
- Он позволяет проверить, сколько памяти нужно выделить процессам, которые решают, какой процессор должен получить память в какое время.
- Отслеживает каждый раз, когда инвентарь освобождается или освобождается. По нему будет обновляться статус.
- Он выделяет место для подпрограмм приложений.
- Это также гарантирует, что эти приложения не мешают друг другу.
- Помогает защитить разные процессы друг от друга
- Он помещает программы в память, чтобы память использовалась в полной мере.
Методы управления памятью
Вот некоторые наиболее важные методы управления памятью:
Одно непрерывное выделение
Это самый простой метод управления памятью. В этом методе для одного приложения доступны все типы памяти компьютера, кроме небольшой части, которая зарезервирована для ОС. Например, операционная система MS-DOS таким образом распределяет память. Встроенная система также работает в одном приложении.
Раздельное размещение
Он делит основную память на различные разделы памяти, которые в основном представляют собой смежные области памяти. Каждый раздел хранит всю информацию для конкретной задачи или задания. Этот метод заключается в выделении раздела для задания при его запуске и освобождении при его завершении.
Управление страничной памятью
Этот метод делит основную память компьютера на блоки фиксированного размера, известные как страничные фреймы. Этот аппаратный блок управления памятью отображает страницы во фреймы, которые должны распределяться постранично.
Управление сегментированной памятью
Сегментированная память — это единственный метод управления памятью, который не предоставляет программе пользователя линейное и непрерывное адресное пространство.
Сегменты нуждаются в аппаратной поддержке в виде таблицы сегментов. Он содержит физический адрес раздела в памяти, размер и другие данные, такие как биты защиты доступа и состояние.
Что такое обмен?
Подкачка — это метод, при котором процесс должен временно перемещаться из основной памяти в резервное хранилище. Позже он будет возвращен в память для продолжения выполнения.
Резервное хранилище – это жесткий диск или другое вторичное запоминающее устройство, которое должно быть достаточно большим для размещения копий всех образов памяти для всех пользователей. Он также может предлагать прямой доступ к этим образам памяти.
Преимущества замены
Вот основные преимущества/плюсы обмена:
- Он предлагает более высокий уровень мультипрограммирования.
- Разрешает динамическое перемещение. Например, если используется привязка адреса во время выполнения, то процессы можно поменять местами в разных местах. В противном случае в случае привязки времени компиляции и загрузки процессы должны быть перемещены в одно и то же место.
- Помогает лучше использовать память.
- Минимальная потеря процессорного времени при завершении, поэтому его можно легко применить к методу планирования на основе приоритетов для повышения его производительности.
Что такое выделение памяти?
Распределение памяти — это процесс, посредством которого компьютерным программам выделяется память или пространство.
Здесь основная память разделена на два типа разделов
- Недостаточно памяти. Операционная система находится в этом типе памяти.
- Высокая память: пользовательские процессы хранятся в верхней памяти.
Распределение разделов
Память разделена на разные блоки или разделы. Каждый процесс распределяется в соответствии с требованием. Распределение разделов — идеальный способ избежать внутренней фрагментации.
Ниже приведены различные схемы распределения разделов:
- Первая подгонка: при подгонке этого типа выделяется раздел, который является первым достаточным блоком от начала основной памяти.
- Наилучшее соответствие: процесс распределяется по разделу, который является первым наименьшим разделом среди свободных разделов.
- Наихудшее соответствие: процесс распределяется по разделу, который является самым большим и достаточно свободно доступным разделом в основной памяти.
- Следующая подгонка: она в основном похожа на первую подгонку, но в этой подгонке выполняется поиск первого подходящего раздела из последней точки размещения.
Что такое пейджинг?
Пейджинг — это механизм хранения, который позволяет ОС извлекать процессы из вторичного хранилища в основную память в виде страниц. В методе пейджинга основная память делится на небольшие блоки физической памяти фиксированного размера, которые называются фреймами. Размер фрейма должен быть таким же, как у страницы, чтобы максимально использовать основную память и избежать внешней фрагментации. Пейджинг используется для более быстрого доступа к данным, и это логичная концепция.
Что такое фрагментация?
Процессы сохраняются и удаляются из памяти, что создает свободное пространство памяти, которое слишком мало для использования другими процессами.
После того, что иногда процессы не могут выделить блоки памяти из-за ее небольшого размера и блоков памяти всегда остаются неиспользованными, это называется фрагментацией. Этот тип проблемы возникает в системе динамического выделения памяти, когда свободные блоки довольно малы, поэтому она не может выполнить ни один запрос.
- Внешняя фрагментация
- Внутренняя фрагментация
- Внешнюю фрагментацию можно уменьшить, переупорядочив содержимое памяти, чтобы поместить всю свободную память в один блок.
- Внутреннюю фрагментацию можно уменьшить, назначив наименьший раздел, который по-прежнему достаточно хорош для выполнения всего процесса.
Что такое сегментация?
Метод сегментации работает почти так же, как пейджинг. Единственная разница между ними заключается в том, что сегменты имеют переменную длину, тогда как в методе подкачки страницы всегда имеют фиксированный размер.
Сегмент программы включает в себя основную функцию программы, структуры данных, служебные функции и т. д. ОС поддерживает таблицу сопоставления сегментов для всех процессов. Он также включает список свободных блоков памяти вместе с их размером, номерами сегментов и их расположением в основной памяти или виртуальной памяти.
Что такое динамическая загрузка?
Динамическая загрузка — это процедура программы, которая не загружается до тех пор, пока программа не вызовет ее. Все подпрограммы должны храниться на диске в перемещаемом формате загрузки. Основная программа будет загружена в память и будет выполнена. Динамическая загрузка также обеспечивает лучшее использование памяти.
Что такое динамическое связывание?
Связывание — это метод, который помогает ОС собирать и объединять различные модули кода и данных в один исполняемый файл. Файл может быть загружен в память и выполнен. ОС может связать библиотеки системного уровня с программой, которая объединяет библиотеки во время загрузки. В методе динамического связывания библиотеки связываются во время выполнения, поэтому размер кода программы может оставаться небольшим.
Читайте также: