![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Особенности реализации в UNIX
В UNIXсистемах последовательность запуска процессов, следующая: процесс 0 - это свопер процесс 1 - это init процесс 2 - это страничный демон Страничный демон просыпается каждые 250мс, и проверяет количество свободных страничных блоков, если их меньше 1/4 памяти, то он начинает выгружать страницы на диск. Он использует модифицированный алгоритм часов, и он является глобальным (т.е. он не различает, какому процессу принадлежит страница). Каждые несколько секунд свопер проверяет, есть ли на диске готовые процессы для загрузки в память для выполнения. При этом сам код программы в своп-файле не сохраняется, а подкачивается непосредственно из файла программы. В LUNIXсистеме нет предварительной загрузки страниц и концепции рабочего набора. Тексты программ и отображаемые файлы подгружаются прямо из файлов расположенных на диске. Все остальное выгружается в раздел свопинга или файлы свопинга (их может быть от 0 до 8). Алгоритм выгрузки страниц основан на страничном демоне (kswapd), он активизируется раз в секунда и проверяет достаточно ли свободных страниц. Демон может быть активизирован и принудительно, при не хватке памяти. Демон состоит из трех процедур: o В первой используется алгоритм часов, она ищет редко используемые страницы страничного кэша и буферного кэша файловой системы. o Вторая процедура ищет совместно редко используемые страницы. o Третья ищет редко используемые страницы одиночных пользователей. Сначала сканируются страницы у того процесса, у которого их больше всего. В LINUX есть еще один демон - bdflush. Он регулярно просыпается и проверяет, не превысило ли определенное значение количество измененных страниц, если да то он начинает их принудительно сохранять на диск. 7.4 Особенности реализации в Windows В Windows системах сегментация (следующая лекция) не поддерживается. Поэтому каждому процессу выделяется виртуальное адресное пространство в 4 Гбайт (ограничение 32 разрядов). Нижние 2 Гбайт доступны для процесса, а верхние 2 Гбайт отображаются на память ядра. В Advanced server и Datacenter server процесс может использовать до 3 Гбайт. Страницы имеют фиксированный размер (на процессорах Pentium 4 Кбайт, на Itanium 8 или 16 Кбайт) и подгружаются по требованию. Конфигурация виртуального адресного пространства Windows Белым цветом выделены области приватных данных процесса. Затемнены области, совместно используемые всеми процессами. Области в 64 Кбайт в начале и в конце, используются для защиты виртуального адресного пространства процесса, при попытке чтения или записи в эти области будет вызвано прерывание. Системные данные содержат указатели и таймеры, доступные на чтение другим процессам. Отображение верхней части на память ядра, позволяет при переключении потока в режим ядра не менять карту памяти. У страниц есть три состояния: o свободное - не используется o фиксированное - данные отображены в странице o зарезервированное - зарезервировано, но не занято данными (при создании потока) Файлы свопинга может быть до 16, разделов свопинга нет. В файлах свопинга хранятся только изменяемые страницы. Опережающая подкачка в Windows не используется. В Windows используется понятие рабочий набор. Страничный демон в Windows состоит из: o менеджера балансового множества - проверяет, достаточно ли свободных страниц. o менеджера рабочих наборов - который исследует рабочие наборы и освобождает страницы. Также в Windows есть следующие демоны: o свопер-демон o демон записи отображенных страниц - запись в отображенные файлы o демон записи модифицированных страниц
|