
- •1. Общие сведения об операционных системах
- •1.1. Назначение и функции
- •1.2. Архитектура
- •1.3. Процессы и потоки
- •1.4. Управление памятью
- •1.5. Ввод-вывод и файловая система
- •2. Установка и работа в Linux
- •2.1. Обзор процесса установки Linux
- •2.2. Использование редактора VI
- •2.3. Управление процессами
- •2.3. Файловые системы и каталоги
- •3. Практические задания
- •3.1. Использование внутренних команд Linux
- •3.2. Работа в текстовом редакторе Pico
- •3.3. Работа с командными файлами
- •3.4. Работа с графическими оболочками kde и gnome
- •3.5. Работа с пакетом офисных приложений StarOffice
- •3.6. Контрольные задания
1.4. Управление памятью
Память (memory) — оперативная память компьютера, жесткий диск (storage) — внешняя память. Особая роль памяти связана с тем, что процессор может выполнять инструкции программы только в случае нахождения их в памяти. Память — важнейший ресурс, требующий тщательного управления. В ранних ОС управление памятью сводилось просто к загрузке программы и ее данных из некоторого внешнего накопителя в память.
Функции ОС по управлению памятью в мультипрограммной ОС:
— отслеживание свободной и занятой памяти;
— выделение памяти процессам и ее освобождение по завершении процессов;
— вытеснение кодов и данных процессов из оперативной памяти на диск (полное или частичное);
— настройка адресов программы на конкретную область физической памяти;
— динамическое распределение памяти;
— дефрагментация памяти, то есть ликвидация неэффективно используемых участков памяти;
— защита памяти — реализуется программными модулями ОС в тесном взаимодействии с аппаратными средствами.
Типы адресов
• Символьные имена присваивает пользователь при написании программы на алгоритмическом языке.
• Виртуальные адреса (математические или логические) вырабатывает транслятор, переводящий программу на машинный язык.
• Физические адреса соответствуют номерам ячеек оперативной памяти.
Совокупность виртуальных адресов процесса называется виртуальным адресным пространством. 0000000016 - FFFFFFFF16 (32-разрядные).
Способы структуризации виртуального адресного пространства:
— непрерывная линейная последовательность виртуальных адресов — плоская (flat) структура (адрес-число m);
— виртуальное адресное пространство делится на части, называемые сегментами (адрес-(n,m)).
Существует два принципиальных подхода к преобразованию виртуальных адресов в физические:
— замена виртуальных адресов на физические выполняется один раз для каждого процесса во время начала загрузки программы в память с помощью специальной системной программы перемещающей загрузчик;
— динамическое преобразование виртуальных адресов.
Необходимо различать: максимально возможное виртуальное адресное пространство процесса (зависит от архитектуры процессора) и назначенное (выделенное) процессу виртуальное адресное пространство.
Алгоритмы распределения памяти
Н
а
схеме изображены алгоритмы (методы)
распределения памяти, принципиально
различающиеся по отношению к использованию
внешней памяти.
Виртуализация оперативной памяти включает решение следующих задач:
— размещение данных в запоминающих устройствах разного типа, например, часть кодов программы — в оперативной памяти, а часть — на диске;
— выбор образов процессов или их частей для перемещения из оперативной памяти на диск и обратно;
— перемещение по мере необходимости данных между памятью и диском;
— преобразование виртуальных адресов в физические.
Виртуализация памяти может быть осуществлена на основе:
— свопинга (swapping) — образы процессов выгружаются на диск и возвращаются в оперативную память целиком;
— виртуальной памяти (virtual memory) — между оперативной памятью и диском перемещаются части (сегменты, страницы и т. п.) образов процессов.
Страничное распределение
Виртуальное адресное пространство каждого процесса делится на части одинакового, фиксированного для данной системы размера — виртуальные страницы (virtual pages).
Вся оперативная память также делится на части такого же размера — физические страницы (блоки, кадры). Размер страницы выбирается равным степени 2: 512, 1024, 4096 байт и т. д.
Сегментное распределение
Виртуальное адресное пространство процесса делится на части — сегменты, размер которых определяется с учетом смыслового значения содержащейся в них информации. Осуществляется компилятором на основе указаний программиста или по умолчанию. Максимальный размер сегмента определяется разрядностью виртуального адреса, например, при 32-разрядной организации процессора он равен 4 Гбайт.
Таблица сегментов процесса включает:
— базовый физический адрес сегмента в оперативной памяти;
— размер сегмента;
— правила доступа к сегменту;
— признаки модификации, присутствия и обращения к данному сегменту.
Виртуальный адрес при сегментной организации памяти может быть представлен парой (g, s), где g — номер сегмента, а s — смещение в сегменте.
Сегментно-страничное распределение
Схема преобразования виртуального адреса в физический:
1. По номеру сегмента, заданному в виртуальном адресе, из таблицы сегментов извлекается физический адрес соответствующей таблицы страниц.
2. По номеру виртуальной страницы, заданному в виртуальном адресе, из таблицы страниц извлекается дескриптор, в котором указан номер физической страницы.
3. К номеру физической страницы пристыковывается младшая часть виртуального адреса — смещение.
Кэш-память
Кэш-память, или просто кэш (cache) — способ совместного функционирования двух типов запоминающих устройств, отличающихся временем доступа и стоимостью хранения данных. За счет динамического копирования в “быстрое” ЗУ наиболее часто используемой информации из “медленного” ЗУ он позволяет, с одной стороны, уменьшить среднее время доступа к данным, а с другой — экономить более дорогую быстродействующую память.
Кэширование — это универсальный метод, пригодный для ускорения доступа к оперативной памяти, к диску и другим видам ЗУ.
Содержимое кэш-памяти представляет собой совокупность записей обо всех загруженных в нее элементах данных из основной памяти.
Каждая запись включает в себя:
1) значение элемента данных;
2) адрес, который этот элемент данных имеет в основной памяти;
3) дополнительную информацию для реализации алгоритма замещения данных в кэше (признак модификации и признак действительности данных).
Кэш-память не является адресуемой, поэтому поиск нужных данных осуществляется по содержимому — взятому из запроса значению поля адреса в оперативной памяти.
Далее возможен один из следующих вариантов:
— если данные обнаруживаются в кэш-памяти — кэш-попадание (cache-hit), то они считываются из нее, и результат передается источнику запроса;
— если нужные данные отсутствуют в кэш-памяти — кэш-промах (cache-miss), то они считываются из основной памяти, передаются источнику запроса и одновременно с этим копируются в кэш-память.
При кэшировании данных из оперативной памяти широко используются две основные схемы отображения: случайное и детерминированное.
При случайном отображении элемент оперативной памяти может быть размещен в произвольном месте кэш-памяти. Чтобы было можно найти нужные данные в кэше, они помещаются туда вместе со своим адресом оперативной памяти.
Детерминированный (прямой) способ отображения предполагает, что любой элемент основной памяти всегда отображается в одно и то же место кэш-памяти. В этом случае кэш-память разделена на строки, имеющие номера.