mirror of
https://github.com/MPSU/APS.git
synced 2025-09-15 17:20:10 +00:00
КЛ16-17. Исправление ссылок и правки текста
* Правка картинок * Правка текста * Правка текста Л16 * Правки текста Л17 * Правки картинок в Л16
This commit is contained in:
@@ -35,11 +35,11 @@
|
||||
|
||||
## Виртуальная память
|
||||
|
||||
**Виртуальная память** – это способ автоматического управления иерархической памятью, при котором для нескольких ее уровней организуется единое адресное пространство. Благодаря этому можно создать для программиста видимость памяти большого объема. При этом, при перемещении данных между уровнями для большинства обращений к памяти обеспечивается скорость доступа, равная скорости более быстрых типов памяти (благодаря такому свойству как **локальность по обращению**).
|
||||
**Виртуальная память** – это способ автоматического управления иерархической памятью, при котором для нескольких ее уровней организуется единое адресное пространство. Благодаря этому можно создать для программиста видимость памяти большего объема. При этом при перемещении данных между уровнями для большинства обращений к памяти обеспечивается скорость доступа, равная скорости более быстрых типов памяти (благодаря такому свойству, как **локальность по обращению**).
|
||||
|
||||
Когда основная (оперативная) память переполняется, операционная система переносит часть данных во вторичную память (hdd/sdd), освобождая основную память для других задач.
|
||||
|
||||
Виртуальная память разделяет "виртуальные" адреса, используемые приложениями, и "физические" адреса, по которым хранятся данные в реальности *(рис. 1)*. Соответствие между виртуальными и физическими адресами хранится в памяти: когда процессор запрашивает виртуальный адрес, ему предоставляется соответствующий физический адрес. Ячейка памяти может физически располагаться либо во внешней памяти (**Secondary Memory**), либо в оперативной (**Physical Memory**). Во время взаимодействия пользователя с приложением, оно подгружается в оперативную память, а неактивные части выгружаются во внешнюю память.
|
||||
Виртуальная память разделяет "виртуальные" адреса, используемые приложениями, и "физические" адреса, по которым хранятся данные в реальности *(рис. 1)*. Соответствие между виртуальными и физическими адресами хранится в памяти: когда процессор запрашивает виртуальный адрес, ему предоставляется соответствующий физический адрес. Ячейка памяти может физически располагаться либо во внешней памяти (**Secondary Memory**), либо в оперативной (**Physical Memory**). Во время взаимодействия пользователя с приложением оно подгружается в оперативную память, а неактивные части выгружаются во внешнюю память.
|
||||
|
||||

|
||||
|
||||
@@ -69,13 +69,13 @@
|
||||
|
||||
## Реализация виртуальной памяти в процессоре
|
||||
|
||||
На *(рис. 3)* представлен пример процессора с модифицированной гарвардской архитектурой без виртуальной памяти
|
||||
На *(рис. 3)* представлен пример процессора с модифицированной гарвардской архитектурой без виртуальной памяти.
|
||||
|
||||

|
||||
|
||||
*Рис. 3. Процессор на базе модифицированной гарвардской архитектуры без использования виртуальной памяти.*
|
||||
|
||||
На *(рис. 4)* представлен пример архитектуры того же процессора, но с использованием виртуальной памяти, в котором добавляется дополнительный блок **MMU (Memory Management Unit)** - устройство управление памятью, он преобразует **ФА** (Физические адреса) в **ВА** (Виртуальные Адреса)
|
||||
На *(рис. 4)* представлен пример архитектуры того же процессора, но с использованием виртуальной памяти, в котором добавляется дополнительный блок **MMU (Memory Management Unit)** — устройство управление памятью, он преобразует **ФА** (Физические адреса) в **ВА** (Виртуальные Адреса).
|
||||
|
||||

|
||||
|
||||
@@ -91,16 +91,16 @@
|
||||
|
||||
При работе с виртуальной памятью данные могут быть организованы двумя способами:
|
||||
|
||||
- **Страничная организация памяти**: Данные разбиваются на блоки одинакового размера, называемые страницами. В каждой странице смещение данных идентично, что соответствует смещению внутри виртуального адреса. Это можно сравнить с работой кэш-памяти.
|
||||
- **Сегментная организация памяти**: Данные разделяются на сегменты разного размера, в зависимости от их характера и назначения.
|
||||
- **Страничная организация памяти**: данные разбиваются на блоки одинакового размера, называемые страницами. В каждой странице смещение данных идентично, что соответствует смещению внутри виртуального адреса. Это можно сравнить с работой кэш-памяти.
|
||||
- **Сегментная организация памяти**: данные разделяются на сегменты разного размера, в зависимости от их характера и назначения.
|
||||
|
||||
Рассмотрим компьютерную систему с 128 МБ физической памяти и поддержкой виртуальной памяти размером 2 ГБ. На (рис. 6) представлена страничная таблица. В этой системе вся память поделена на равные блоки, обычно размером 4 КБ, которые называются страницами.
|
||||
|
||||

|
||||
|
||||
*Рис. 6. Как адреса из виртуальной памяти, ссылаются на адреса в физической памяти.*
|
||||
*Рис. 6. Как адреса из виртуальной памяти ссылаются на адреса в физической памяти.*
|
||||
|
||||
В памяти системы находится часть страничной таблицы *(рис. 7)*. Каждая ячейка этой таблицы содержит число, указывающее на определенный блок физической памяти. В этой таблице также присутствует бит `V`. Если значение бита `V` равно **1**, это указывает, что страница находится в основной памяти. Если значение равно **0**, страница располагается во внешней памяти.
|
||||
В памяти системы находится часть страничной таблицы *(рис. 7)*. Каждая ячейка этой таблицы содержит число, указывающее на определенный блок физической памяти. В этой таблице также присутствует бит `V`. Если значение бита `V` равно **1**, это указывает на то, что страница находится в основной памяти. Если значение равно **0**, страница располагается во внешней памяти.
|
||||
|
||||

|
||||
|
||||
@@ -134,7 +134,7 @@
|
||||
|
||||
- Цена виртуализации – это трансляция каждого обращения к памяти.
|
||||
> Эта дополнительная операция добавляет некоторую задержку, что делает доступ к виртуальной памяти медленнее по сравнению с прямым доступом к физической памяти.
|
||||
Однако, существуют специализированные методы и технологии, призванные минимизировать эту задержку и оптимизировать процесс трансляции. Одним из таких методов является использование **Буфера Ассоциативной Трансляции или TLB**.
|
||||
Однако существуют специализированные методы и технологии, призванные минимизировать эту задержку и оптимизировать процесс трансляции. Одним из таких методов является использование **Буфера Ассоциативной Трансляции или TLB**.
|
||||
|
||||
## Буфер ассоциативной трансляции (TLB)
|
||||
|
||||
@@ -154,9 +154,9 @@
|
||||
|
||||
Буфер ассоциативной трансляции играет ключевую роль в современной системе управления памятью. Обычный TLB может содержать от 32 до 128 входов с степенью ассоциативности между 4 и 8. Современные процессоры часто используют иерархическую структуру TLB, что может включать в себя комбинацию, например, L1 TLB с 128 входами и L2 TLB с 2K входами.
|
||||
|
||||
Переключение между процессами является дорогостоящей операцией, главным образом из-за необходимости очистки TLB. Тем не менее можно включить ID процесса в TLB для предотвращая потребность в очистке *(рис. 10.)*.
|
||||
Переключение между процессами является дорогостоящей операцией, главным образом из-за необходимости очистки TLB. Тем не менее можно включить ID процесса в TLB для предотвращения потребности в очистке *(рис. 10.)*.
|
||||
|
||||
При промахе TLB, система обращается к страничной таблице в основной памяти. Если требуемая страница присутствует в основной памяти, система выполняет преобразование виртуального номера страницы (VPN) в физический номер страницы (PPN) и обновляет TLB. В противном случае происходит страничный сбой, который всегда обрабатывается программно.
|
||||
При промахе TLB система обращается к страничной таблице в основной памяти. Если требуемая страница присутствует в основной памяти, система выполняет преобразование виртуального номера страницы (VPN) в физический номер страницы (PPN) и обновляет TLB. В противном случае происходит страничный сбой, который всегда обрабатывается программно.
|
||||
|
||||
Для навигации по страничной таблице обычно используется специальное аппаратное устройство, называемое блоком управления памятью (**MMU**). Некоторые популярные архитектуры, такие как `RISC-V` и `x86`, реализуют страничную таблицу на аппаратном уровне.
|
||||
|
||||
@@ -170,7 +170,7 @@ VPN (номер виртуальной страницы) – указывает
|
||||
|
||||
### Метод ключей защиты
|
||||
|
||||
Рассмотрим *(рис. 11)*. Ключ защиты программы представляет собой уникальный ID, который хранится в специальном регистре. Операционная система, работая в привилегированном режиме, имеет возможность управлять данным регистром. При формировании адреса программой, часть этого адреса сравнивается с текущим ключом защиты. Если совпадение найдено, то обращение к памяти разрешено. В противном случае, доступ к памяти блокируется.
|
||||
Рассмотрим *(рис. 11)*. Ключ защиты программы представляет собой уникальный ID, который хранится в специальном регистре. Операционная система, работая в привилегированном режиме, имеет возможность управлять данным регистром. При формировании адреса программой часть этого адреса сравнивается с текущим ключом защиты. Если совпадение найдено, то обращение к памяти разрешено. В противном случае доступ к памяти блокируется.
|
||||
|
||||

|
||||
|
||||
@@ -178,7 +178,7 @@ VPN (номер виртуальной страницы) – указывает
|
||||
|
||||
## Использование кэш и виртуальной памяти
|
||||
|
||||
Для того чтобы использовать кэш память и виртуальную память одновременно есть несколько вариантов *(рис. 12.)*
|
||||
Для того чтобы использовать кэш память и виртуальную память одновременно, существует несколько вариантов *(рис. 12.)*
|
||||
|
||||

|
||||
|
||||
@@ -248,9 +248,9 @@ LRU вытесняет страницы, которые не использов
|
||||
|
||||
Благодаря этому легко реализуется **приватное адресное пространство** *(рис. 15)* между процессами, где:
|
||||
|
||||
- Каждый процесс имеет собственную страничную таблицу
|
||||
- Страничная таблица включает в себя все страницы процесса
|
||||
- Страничные таблицы позволяют хранить страницы процесса не непрерывно
|
||||
- каждый процесс имеет собственную страничную таблицу
|
||||
- страничная таблица включает в себя все страницы процесса
|
||||
- страничные таблицы позволяют хранить страницы процесса не непрерывно
|
||||
|
||||

|
||||
|
||||
@@ -258,9 +258,9 @@ LRU вытесняет страницы, которые не использов
|
||||
|
||||
## Метод граничных регистров
|
||||
|
||||
Существует так же другой подход - **сегментная реализация памяти**. В сегментной памяти вся память делится не на одинаковые страницы, а на сегменты разной величины. Для того чтобы операционная система могла регулировать чтобы процесс не выходил за свои сегменты используется подход который называется **метод граничных регистров** *(рис. 16)*.
|
||||
Существует также другой подход — **сегментная реализация памяти**. В сегментной памяти вся память делится не на одинаковые страницы, а на сегменты разной величины. Для того чтобы операционная система могла регулировать, чтобы процесс не выходил за свои сегменты, используется подход, который называется **метод граничных регистров** *(рис. 16)*.
|
||||
|
||||
При каждом обращении процесса к памяти операционная система проверяет, чтобы адрес был между значениями регистров базы и границы. Если адрес находится за пределами этого диапазона, генерируется ошибка, и процесс не может получить доступ к памяти вне своего выделенного блока.
|
||||
При каждом обращении процесса к памяти операционная система проверяет, чтобы адрес был между значениями регистров базы и границы. Если адрес находится за пределами этого диапазона, генерируется ошибка и процесс не может получить доступ к памяти вне своего выделенного блока.
|
||||
|
||||

|
||||
|
||||
@@ -281,21 +281,21 @@ LRU вытесняет страницы, которые не использов
|
||||
- Программа – это набор инструкций (только ее код)
|
||||
- **Процесс** – это экземпляр программы, которая выполняется
|
||||
- Состоит из **кода программы** и **контекста** (регистры, содержимое памяти и другие ресурсы)
|
||||
- Ядро операционной системы **(OS Kernel)** это привилегированный процесс
|
||||
- Ядро операционной системы **(OS Kernel)** — это привилегированный процесс
|
||||
|
||||
### Цели операционной системы
|
||||
|
||||
1. **Защита и приватность**: Операционная система обеспечивает строгую изоляцию между процессами, чтобы гарантировать, что один процесс не может вмешиваться в работу другого или получать доступ к его данным. Это обеспечивает безопасность данных и предотвращает возможные ошибки или злонамеренные действия. Процесс может взаимодействовать только со своим выделенным адресным пространством и ресурсами, исключая возможность несанкционированного доступа к данным других процессов.
|
||||
1. **Защита и приватность**: операционная система обеспечивает строгую изоляцию между процессами, чтобы гарантировать, что один процесс не может вмешиваться в работу другого или получать доступ к его данным. Это обеспечивает безопасность данных и предотвращает возможные ошибки или злонамеренные действия. Процесс может взаимодействовать только со своим выделенным адресным пространством и ресурсами, исключая возможность несанкционированного доступа к данным других процессов.
|
||||
|
||||
2. **Абстракция**: Предоставление удобного и понятного интерфейса для работы с аппаратными ресурсами. Она скрывает сложные детали реализации аппаратного обеспечения, позволяя программам и пользователю взаимодействовать с системой на более высоком, абстрактном уровне. Это облегчает разработку приложений, так как разработчикам не нужно знать о всех нюансах работы аппаратуры.
|
||||
2. **Абстракция**: предоставление удобного и понятного интерфейса для работы с аппаратными ресурсами. Она скрывает сложные детали реализации аппаратного обеспечения, позволяя программам и пользователю взаимодействовать с системой на более высоком, абстрактном уровне. Это облегчает разработку приложений, так как разработчикам не нужно знать о всех нюансах работы аппаратуры.
|
||||
|
||||
3. **Управление ресурсами**: Действует как посредник между аппаратными ресурсами компьютера и запущенными на нем процессами. Она определяет, какие процессы будут выполняться, когда и сколько ресурсов (CPU, память или внешние устройства) они будут использовать. Этот контроль необходим для оптимизации производительности, обеспечения справедливого доступа к ресурсам и предотвращения конфликтов.
|
||||
3. **Управление ресурсами**: действует как посредник между аппаратными ресурсами компьютера и запущенными на нем процессами. Она определяет, какие процессы будут выполняться, когда и сколько ресурсов (CPU, память или внешние устройства) будет использоваться. Этот контроль необходим для оптимизации производительности, обеспечения справедливого доступа к ресурсам и предотвращения конфликтов.
|
||||
|
||||
### Управление процессами и ресурсами в ядре операционной системы
|
||||
|
||||
Основная задача ядра операционной системы – это управление ресурсами компьютера и обеспечение стабильного взаимодействия между аппаратной и программной частями. **Каждому процессу** выделяется **приватное адресное пространство** в физической памяти, гарантируя, что процессы не могут вмешиваться в память друг друга. Этим обеспечивается **безопасность и изоляция** при выполнении приложений.
|
||||
Основная задача ядра операционной системы – это управление ресурсами компьютера и обеспечение стабильного взаимодействия между аппаратной и программной частями. **Каждому процессу** выделяется **приватное адресное пространство** в физической памяти, при этом гарантируется, что процессы не могут вмешиваться в память друг друга. Этим обеспечивается **безопасность и изоляция** при выполнении приложений.
|
||||
|
||||
В области управления процессами, ядро операционной системы **планирует доступ к CPU**. Каждому процессу выделяется определенное **время работы на процессоре**, и приложение не может использовать больше этого времени.
|
||||
В области управления процессами ядро операционной системы **планирует доступ к CPU**. Каждому процессу выделяется определенное **время работы на процессоре**, и приложение не может использовать больше этого времени.
|
||||
|
||||
Помимо управления ресурсами, ядро ОС также предоставляет интерфейс для взаимодействия программ с аппаратной частью. Этот интерфейс, известный как **системные вызовы (system calls)**, позволяет процессам получать доступ к таким службам, как файловая система или сетевое оборудование.
|
||||
|
||||
@@ -313,7 +313,7 @@ LRU вытесняет страницы, которые не использов
|
||||
|
||||
### Прерывания и исключения
|
||||
|
||||
**Исключение** – событие которое требует обработки операционной системой (неподдерживаемая инструкция, системный вызов, деление на ноль…) *(рис. 19)*
|
||||
**Исключение** – событие, которое требует обработки операционной системой (неподдерживаемая инструкция, системный вызов, деление на ноль…) *(рис. 19)*
|
||||
|
||||

|
||||
|
||||
@@ -331,13 +331,13 @@ LRU вытесняет страницы, которые не использов
|
||||
|
||||
В архитектуре `RISC-V` системные вызовы осуществляются с помощью инструкции `ecall`, которая инициирует исключение, устанавливая регистр `mcause` в специфическое значение. Этот механизм позволяет программам взаимодействовать напрямую с операционной системой.
|
||||
|
||||
Для успешного выполнения системного вызова необходимо следовать соглашению **ABI (Application Binary Interface)**. Этот интерфейс определяет, как именно аргументы и результаты будут передаваться между процессом и ядром. Это соглашение в многом напоминает тот механизм, который используется при вызове обычных подпрограмм.
|
||||
Для успешного выполнения системного вызова необходимо следовать соглашению **ABI (Application Binary Interface)**. Этот интерфейс определяет, как именно аргументы и результаты будут передаваться между процессом и ядром. Это соглашение во многом напоминает тот механизм, который используется при вызове обычных подпрограмм.
|
||||
|
||||
На практике это выглядит следующим образом:
|
||||
|
||||
- **Номер системного вызова** помещается в регистр `a7`.
|
||||
- Аргументы для этого вызова размещаются в регистрах `a0` до `a6`.
|
||||
- После выполнения системного вызова, результаты будут находиться в регистрах `a0` и `a1` (или в основной памяти)
|
||||
- После выполнения системного вызова результаты будут находиться в регистрах `a0` и `a1` (или в основной памяти)
|
||||
|
||||
- Все регистры в этом контексте сохраняют свое состояние, что гарантирует безопасное выполнение и возврат из системных вызовов.
|
||||
|
||||
|
Reference in New Issue
Block a user