ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.12.2023
Просмотров: 36
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Операционная система- комплекс управляющих и обрабатывающих программ, которые, с одной стороны, являются интерфейсом между устройствами вычислительной системы и прикладными программами (виртуальная машина и абстрагирование от «железа»), а с другой стороны- предназначены для управления устройствами и вычислительными процессами, так чтобы вычислительные ресурсы оптимально распределились между процессами (функция планировщика задач).
Виртуальная машина- программная система, эмулирующая реальное аппаратное обеспечение некоторой платформы и исполняющая программы на другой платформе, т.е. это абстрагирование от аппаратного обеспечения с помощью программного интерфейса.
Мультипрограммирование (многозадачность)- организация работы, при которой в памяти находятся несколько задач и система в определённые моменты времени переключает выполнение с одной задачи на другую по некоторому алгоритму.
Место операционной системы в любой вычислительной системе
Программы- приложения (прикладные программы) | ||
Компиляторы– трансляция кода из языка программирования в машинный код | Редакторы (поиск ошибок в коде программы) | Интерпретаторы – механизм выполнения программного кода в режиме онлайн |
Операционная система | ||
Машинный язык –набор команд конкретной вычислительной системы, который интерпретируется непосредственно процессором | ||
Микроархитектура (встроенное программное обеспечение) -содержимое энергонезависимой памяти, позволяющее выполнять простейшие операции над данными на уровне регистров процессора, АЛУ, УУ.. | ||
Физические устройства (контроллеры устройств) |
Состав операционной системы
-
Загрузчик- программа, загружающая модули ОС в память -
Интерпретатор- трансляция команд пользователя и прикладных программ в машинный язык -
Ядро (Kernel, супервизор)- основная программа, управляет файловой системой, планированием процессов, распределением ресурсов… -
Драйверы- программы, обеспечивающие корректную работу устройств -
Интерфейсы- механизмы, обеспечивающие взаимодействие между разнородными объектами
Составляющие операционной системы
Модули – программные части со строго определёнными функциями и правилами их взаимодействия- интерфейсами (исполняемые- exe, com и объектные модули obj стандартных форматов, библиотеки разных типов –dll (Dynamic Link Library), конфигурационные файлы (ini- файлы), загрузчик операционной системы, драйверы…)
2 класса модулей:
1. Модули, выполняющие вспомогательные функции (архивация, дефрагментация диска, работа с реестром, системные обрабатывающие программы- редакторы, компиляторы, библиотеки процедур различного назначения – функции ввода/вывода, математические функции)- загружаются в оперативную память только на время выполнения своих функций- транзитные (транзитивные) программы.
2. Ядро- модули, выполняющие основные функции ОС и находящиеся в памяти постоянно (резидентные программы)
Состав ядра:
- функции, реализующие внутрисистемные задачи организации вычислительного процесса – обработка прерываний (любое вмешательство в работу процессора), переключение работы процессора с выполнения одной задачи на другую. Эти функции недоступны для приложений
if (x!=0) y=1/x;
- функции поддержки приложений- прикладная программная среда. Приложения обращаются к ядру с запросами на выполнение тех или иных действий (открытие и чтение файла, получение системного времени, вывод графической информации на экран)- системные вызовы (System Calls). Системные вызовы образуют интерфейс прикладного программирования – Application Programming Interface- API
f=open(‘C:\\temp\\users\\tt.txt’,’w’)
f.write(‘mama mila ramu’)
f.close()
Pascal: Assign(f,’c:\temp\tt.txt’);
Rewrite(f); - открытие файла в режиме записи
Writeln(f,’mama mila ramu’);
API- набор функций и процедур в ЯП, поддерживаемых конкретной ОС, которые имеют набор формальных параметров, но выполняют системные действия- открытие файла, создание процесса, диалогового окна, выделение памяти (в Windows- ОС называется Win32/64, в Linux/Unix ОС- POSIX)
Функции, выполняемые ядром, являются наиболее часто используемыми функциями, поэтому скорость их выполнения определяет производительность системы в целом.
Прикладные программы обращаются к ОС, когда для выполнения тех или иных действий им требуется особый статус (открытие файла, получение процессорного времени, дискового пространства, памяти..), которым обладает ОС
Можно воспользоваться имеющимся набором сервисных функций – интерфейс прикладного программирования (API).
Для разработчиков прикладных программ все особенности конкретной ОС представлены особенностями API. ОС с
различной внутренней структурой, но с одним и тем же API кажутся одной и той же ОС. Возможность переносить приложения между ОС с различной архитектурой (кроссплатформенность!)
Приложения выполняют обращения к функциям API с помощью системных вызовов (System calls) - создают, удаляют и используют различные объекты (в основном процессы, потоки и файлы). Способы реализации системных вызовов зависят от внутренней структуры ОС связана с особенностями аппаратной платформы
При использовании языка программирования высокого уровня функции, реализующие системные вызовы, вызываются тем же способом, что и функции пользователя с заданием аргументов в особом порядке
Sleep(n);
Типовое строение операционной системы
Пользователь | Прикладные программы |
Графический интерфейс (GUI- Graphical User Interface) Командная оболочка (CLI- Command Line Interface)- cmd, Cygwin,PowerShell.. | Системные вызовы – звено для обслуживания запросов со стороны программ на различные действия с ресурсами и аппаратной частью («железом”) |
Ядро (ntoskrnl.exe) - управление памятью, устройствами, диспетчеризация процессов… | |
Драйверы устройств | |
Уровень абстрагирования от оборудования (HAL- Hardware Abstraction Layer, hal.dll)- скрывает различия в аппаратном обеспечении от основной части ядра, т.е. большая часть кода, работающая в режиме ядра, не должна изменяться при запуске ОС на вычислительных устройствах с разным аппаратным обеспечением | |
Средства аппаратного контроля (контроллеры) | |
Аппаратные устройства («железо») |
Основные модули и подсистемы, входящие в ядро:
1. Диспетчер процессов (Task Manager)- создает и завершает процессы и потоки
Системный сервис winlogon.exe- обрабатывает событие нажатия Ctrl-Alt-Delete
2. Справочный монитор защиты (Security Reference Monitor)- обеспечивает защиту на локальной машине
3. Диспетчер виртуальной памяти (Virtual Memory Manager- VMM)- реализует виртуальную память, при которой каждому процессу предоставляется собственное адресное пространство (один процесс «не мешает» работать остальным задачам)
4. Подсистема ввода- вывода- отвечает за передачу данных от программы к аппаратуре и наоборот- пересылает данные соответствующим драйверам для дальнейшей обработки, поддержка сетевых протоколов
5. Диспетчер электропитания (Advanced Configuration and Power Interface Manager- ACPI- Manager)- управление электропитанием устройств, координация запросов устройств, связанных с изменением режима электропитания
6. Диспетчер Plug-and-Play- обеспечивает распознавание устройств после загрузки и управляет их драйверами
7. Диспетчер окон и интерфейс графических устройств – (GDI- Graphic Device Interface)- управляет отображением окон, обеспечивает прием сигналов от клавиатуры и мыши, распределяя информацию приложениям
8. Защищённые подсистемы – процессы пользовательского режима, создаются ОС во время загрузки и обрабатывают сообщения от прикладных программ и других подсистем (служба рабочей станции, служба сервера, подсистема безопасности)
Общая схема архитектуры ядра
Процесс 1 | Процесс 2 | Процесс 3 |
Интерфейс системных вызовов- приложения обращаются к ядру для выполнения действий, требующих вмешательства ОС | ||
Модули ядра: файловая система, подсистема управления процессами, подсистема ввода/вывода… | ||
Средства аппаратного контроля (обеспечение корректности работы устройств и поддержка интерфейса устройств) | ||
Устройства вычислительной системы |
Архитектуры ядра
1. Монолитное ядро- в основном применяется в UNIX-подобных ОС. Все модули ядра скомпилированы в единый «exe-файл» и представляют собой отдельные подпрограммы (обычные функции и процедуры), работающие внутри основного процесса. Ядро с монолитной архитектурой целиком загружается в оперативную память. Взаимодействие между отдельными модулями осуществляется достаточно быстро
При добавлении дополнительного функционала в ядро (добавление нового модуля) приходится перекомпилировать все ядро
Надежность работы всей вычислительной системы определяется надежностью работы модулей ядра.
По отношению к пользовательским приложениям модули ОС должны иметь определенные привилегии
Аппаратура любой вычислительной системы должна поддерживать два режима работы: пользовательский (Usermode), в котором работают приложения пользователя (в том числе, и системные сервисы и службы, запущенные от имени пользователя), и привилегированный режим (режим ядра, Kernel mode)
Модули ОС, выполняющие вспомогательные функции, оформляются в виде приложений и выполняются в пользовательском режиме вместе с обычными приложениями пользователя
В пользовательском режиме приложениям запрещены некоторые действия (переключение процессора с одной задачи на другую, управление механизмом защиты памяти). Условия выполнения ряда инструкций находятся под контролем ОС.
Привилегии ОС при доступе к памяти выражаются в том, что код ядра имеет доступ к областям памяти всех приложений, но сам полностью защищен от вмешательства в свою работу приложений, работающих в пользовательском режиме. Каждое приложение, работающее в пользовательском режиме, работает в своей отдельной «области» (виртуальное адресное пространство) и защищено от вмешательства каких-либо других приложений.
Взаимодействие между программами пользователя (прикладные программы) и ядром ОС осуществляется с помощью системных вызовов. При системном вызове пользовательский процесс переходит в режим ядра, в этом режиме ядра работает код ядра ОС, который выполняется в адресном пространстве вызвавшей его задачи
Системный вызов реализуется с помощью программного прерывания
2. Микроядерная архитектура- в привилегированном режиме работает только модуль микроядра, который защищен от остальных модулей ОС и приложений (базовые механизмы монолитного ядра), а менеджеры ресурсов выносятся в пользовательский режим как модули, предоставляющие свои ресурсы пользовательским приложениям (серверы ОС) – файловая система, менеджер безопасности, подсистемы управления виртуальной памятью и процессами…
Приложения, выделенные из состава ядра, предназначаются исключительно для обслуживания запросов других приложений (в том числе, специализированных утилит, работающих с ОС)- создание процесса, выделение памяти, проверка прав доступа к ресурсу..- серверы