
- •Операционные системы. Определение, назначение, функции.
- •Види ос. Характеристика наиболее распространенных систем.
- •Структурная схема ос. Основные компоненты.
- •Загрузчик ос. Этапы загрузки на примере Lilo и grub
- •Характеристики ядра ос. Назначения и функции ядра.
- •Способы организации памяти. Достоинаства и недостатки каждого способоа.
- •Способы и средства организации виртуальной памяти.
- •Основные принципы и характеристики защищенного режима Intel x86
- •Физическая и виртуальная раскладка памяти в Linux.
- •Понятие задачи и процесса. Контекст процесса.
- •Диаграмма состояний процесса. Характеристика и назначение состояний.
- •Режим пользователя и режим ядра в контексте процессов ос.
- •Переключение процессора между процессами.
- •Понятие прерывания. Принцип работы программируемого контроллера прерывания.
- •Планировщик процессов. Основные способы и алгоритмы планирования процессов.
- •Требования к аппаратным средствам для современных ос.
- •Основные структуры данных для реализации процессов в Linux
- •Буферизация ввода-вывода. Принципы работы cash буферов.
- •Основы организации дискового пространства на внешних носителях.
- •Принцип отложенной записи для буферов ввода-вывода.
Основы организации дискового пространства на внешних носителях.
Принцип отложенной записи для буферов ввода-вывода.
Изначально все заголовки буферов помещаются в список свободных буферов. Если процесс намеревается прочитать или модифицировать блок, то он выполняет следующий алгоритм:
пытается найти в хеш-таблице заголовок буфера с заданным номером;
в случае, если полученный буфер занят, ждёт его освобождения;
в случае, если буфер не найден в хеш-таблице, берёт первый буфер из хвоста списка свободных;
в случае, если список свободных буферов пуст, то выполняется алгоритм вытеснения (см. ниже);
в случае, если полученный буфер помечен как «грязный», выполняет асинхронную запись содержимого буфера во внешнюю память.
удаляет буфер из хеш-таблицы, если он был помещён в неё;
помещает буфер в хеш-таблицу с новым номером.
Процесс читает данные в полученный буфер и освобождает его. В случае модификации процесс перед освобождением помечает буфер как «грязный». При освобождении буфер помещается в голову списка свободных буферов.
Таким образом:
если процесс прочитал некоторый блок в буфер, то велика вероятность, что другой процесс при чтении этого блока найдёт буфер в оперативной памяти;
запись данных во внешнюю память выполняется только тогда, когда не хватает «чистых» буферов, либо по запросу.