- •1945 Джон фон нейман
- •3. Назначение
- •4. Классификация ос
- •6 Ядро операционной системы
- •7. Ядро состоит из трех основных подсистем:
- •8 Прцесс загрузки программ
- •9 Стек, куча, Статическая память
- •10 Виртуальная память
- •Функции для управления памятью
- •Приоритеты
- •15. Параллельная обработка
- •16. Проблема тупиков
- •Нарушение условия кругового ожидания
- •19. Классификация внешних устройств
- •Драйверы внешних устройств.
- •Файлы, каталоги и файловые системы.
- •24. Виды атак на ос.
- •Иерархия классов безопасных ос:
6 Ядро операционной системы
Ядро-часть ос, которая работает в пивелигерованном режиме.
Там находятся: 1. все, что связано в вводом, выводом
команды прерываний
команды системного управления процессором
Все операции, связанные с процессами, выполняются под управлением той части ОС, которая называется ядро.
Ядро обычно размещается в оперативной памяти, в то время как другие части ОС перемещаются во внешнюю память и обратно по мере необходимости.
Функции ядра
Ядро ОС, как правило, должно содержать программы для реализации следующих функций:
обработка прерываний;
операции над процессами;
синхронизация процессов;
организация взаимодействия между процессами;
манипулирование блоками управления процессами;
поддержка операций ввода-вывода;
поддержка работы файловой системы;
поддержка механизма вызова-возврата при обращении к процедурам;
ряд учетных функций.
7. Ядро состоит из трех основных подсистем:
файловая подсистема;
Файловая подсистема контролирует права доступа к файлу, выполняет операции размещения и удаления файла, а также выполняет запись/чтение данных файла. Поскольку большинство прикладных функций выполняется через интерфейс файловой системы, права доступа к файлам определяют привилегии пользователя в системе.
Файловая подсистема обеспечивает перенаправление запросов, адресованных периферийным устройствам, соответствующим модулям подсистемы ввода/вывода.
подсистема управления процессами и памятью;
создание и удаление процессов;
распределение системных ресурсов (памяти, вычислительных ресурсов) между процессами;
синхронизация процессов;
межпроцессное взаимодействие.
подсистема ввода/вывода.
Подсистема ввода/вывода выполняет запросы файловой подсистемы и подсистемы управления процессами для доступа к периферийным устройствам (дискам, терминалам и т.п.). Она обеспечивает необходимую буферизацию данных и взаимодействует с драйверами устройств - специальными модулями ядра, непосредственно обслуживающими внешние устройства.
8 Прцесс загрузки программ
Прога – файл, лежащий на диске
Процесс – это файл, лежащий в исполнении
Файл
процесс
Все современные системы имеют позиционно независимую загрузку
MOV R[1500] переслать регистр R в ячейку 1500
Таблица постройки адресов
dll(библиотеки)
exe и dll внутренни почти одинаковы различие состовляет лишь то что у exe есть точта в хода в прогу а dll – библиотека подпрограмм
Цель создания dll экономия exe кода
9 Стек, куча, Статическая память
Стек (англ. stack — стопка) — структура данных с методом доступа к элементам LIFO (Last In — First Out, последним пришел — первым вышел). Чаще всего принцип работы стека сравнивают со стопкой тарелок: чтобы взять вторую сверху, нужно взять верхнюю.
Добавление элемента, называемое также проталкиванием (push), возможно только в вершину стека (добавленный элемент становится первым сверху), выталкивание (pop) — также только из вершины стека, при этом второй сверху элемент становится верхним.
Стек широко используется в программировании на низком уровне (то есть, как правило, на языке ассемблера) и является неотъемлемой частью архитектуры современных процессоров. Компиляторы языков программирования высокого уровня используют стек для передачи параметров при вызове подпрограмм, процессоры — для хранения адреса возврата из подпрограмм.
Куча (англ. heap) — в информатике и программировании регион зарезервированного адресного пространства, условное название структуры данных, поверх которой реализована динамическая память приложения.
Память, которую программа запрашивает и возвращает в процессе работы.(около 2-х гб)
Реализовывается как связанный список свободных блоков: адрес, размер, следующий.
Проблема – фрагментация памяти.
Стратегия «подходящий» - вся инф. Засовывается в первый найденный блок, подходящий по размеру.
Слияние соседних свободных блоков, список которых отсортирован по адресам.
Утечка памяти – когда память захватывается но не возвращается.
garbage collection (сборка мусора) – когда память заполняется происходит упорядочивание кучи.
все, на что есть указатель – полезно, остальное – мусор.
Mark&sweap – подметание мусора. Сбор свободных блоков, передвижение блоков вверх.
java,dopnet – автоматическая сборка мусора.
Проблема – сборка мусора не умеет собирать циклические ссылки.
Сборка мусора: автомат(java), ручной (с++), подсчет ссылок.
Организация
Куча использует память, выделенную статически или запрошенную динамически у операционной системы. Эта память используется для размещения объектов, динамически созданных программой.
В любой момент времени существования кучи вся память, на которой работает куча, разделена на занятую и свободную. Занятая память использована под размещение объектов, уже созданных и ещё не освобождённых к этому моменту времени. Из объёма свободной памяти примитивы работы с кучей могут выделять память под новые объекты.
Для хранения данных о принадлежности памяти к занятой или свободной обычно используется дополнительная область памяти.