- •Лекция №1
- •История операционных систем.
- •Управление памятью.
- •Однозадачные системы.
- •Лекция №2
- •Способы учета участков памяти.
- •2 Алгоритм (наиболее подходящий).
- •3 Алгоритм (наименее подходящий).
- •4 Алгоритм (алгоритм двоичного разбиения).
- •Лекция №4
- •Принципы
- •Лекция №5
- •Лекция №6 Управление процессами.
- •Алгоритмы планирования системы.
- •Лекция №7
- •Два подхода к планированию.
- •Синхронизация.
- •Лекция №8
- •Тупики.
- •Способы взаимодействия между процессами.
- •Лекция №9 Управление процессами в среде Window’s.
- •Лекция №10
- •Волокна
- •Лекция №11 Синхронизация процессов.
- •Ссобытия
- •Способы взаимодействия процессов.
- •Серверная сторона
- •Второй семестр Управление процессами в среде unix Лекция №1
- •Лекция №2
- •Сигналы.
- •Способ взаимодействия общая память.
- •Лекция №3
- •Семафоры.
- •Лекция №4 Файлы как средства сообщения.
- •Файловыe системы.
- •Примеры файловых систем
- •Лекция № 6
- •Система ext 2
- •Лекция № 7
- •Лекция № 8 Функции работы с файлами в unix.
- •Лекция № 9 Java — скрипт.
- •Лекция № 10
- •Лекция № 11
Лекция №4
Алгоритмы выгружения страниц из ОЗУ.
Циклический алгоритм
Случайная страница
Выгружается страница, к которой было меньше всего обращений
Выгружается страница, к которой было меньше всего обращений за последнее время.
Выгружается страница, к которой дольше всего не обращались
Принцип SWAP
a |
m |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
.
Принципы
принцип рабочего набора.
По горизонтальной оси : количество страниц процесса, находящихся в ОЗУ.
По вертикальной оси: Вероятность отказа страницы.
Принцип: операционная система не должна выгружать из памяти страницы, которые относятся к рабочему набору процесса.
Принцип локальности-глобальности.
УПРАВЛНИЕ ПАМЯТЬЮ В WINDOW’S
В Window’s каждому процессу выделяется 4Gb адресного пространства.
лог. уровень – адреса
физ. уровень – память
Они распределяются следующим образом
Причем 2 страничных Gb одинаковы у всех процессов, ни читать, ни писать мы туда не можем.
64к адресов, доступ к которым закрыт для всех, включая OS и необходимы для того, чтобы не писать сложных алгоритмов анализа.
Виртуальная память страничная.
ФУНКЦИИ
Вспомогательные
/* типы данных:
BOOL
DWORD (0…232)
SIZE_T (0…232 or 0… 264)
LP… - указатель на то, что дальше написано.
P… - указатель на то, что дальше написано.
HANOLE – описывает любой системный объект
LP…STR – указатель на строку
__ /\__
С , W , T – тип строки зависит от режима компиляции
*/
1) Функция GetSystemInfo возвращает информацию относительно текущей системы.
VOID GetSystemInfo(
LPSYSTEM_INFO lpSystemInfo // адрес структуры информации системы
);
Параметры: LpSystemInfo
Указатель на структуру SYSTEM_INFO, которая будет заполнена этой функцией.
Структура SYSTEM_INFO содержит следующие поля:
DWORD dwPageSize; // размер строки
LPVOID lpMinimumApplicationAddress; // указатель на самую первую ячейку, которая доступна программе
LPVOID lpMaximumApplicationAddress; // указатель на самую старшую ячейку, которая доступна программе
DWORD dwActiveProcessorMask; //Возвращает маску, представляющую набор процессоров, конфигурированных в систему. Бит 0 - процессор 0; бит 31 - процессор 31.
DWORD dwNumberOfProcessors; //количество процессоров в системе
DWORD dwProcessorType;
DWORD dwAllocationGranularity; //размер адресов, кратных которому разрешается выделять виртуальную память
WORD wProcessorLevel;
WORD wProcessorRevision;
Структура SYSTEM_INFO содержит информацию относительно текущей компьютерной системы. Она включает тип процессора, размер страницы, первоначальный изготовитель оборудования (OEM) идентификатор, и другая подобная информация.
2)Функция ZeroMemory заполняет блок памяти с нулями.
VOID ZeroMemory(
PVOID Destination // адрес блока, заполняемого нулями
DWORD Length // размер, в байтах, блока, заполняемого нулями
);
Функция CopyMemory копирует блок памяти от одного местоположения до другого.
VOID CopyMemory (
PVOID Destination, // // адрес адресата копии
CONST VOID * Source, // адрес блока для копирования
DWORD Length // размер, в байтах, блока для копирования
);
BOOL IsBad[Read/Write]Ptr(
LPVOID Ptr,
SIZE_T bytes);
можно/ нельзя писать/читать в участок, указанный в скобках