
- •Системное программное обеспечение
- •Основные понятия теории операционных систем
- •Прерывания
- •Классификация операционных систем
- •Архитектура аппаратных и программных средств персонального компьютера
- •Регистры микропроцессоров Intel 8086/88
- •Формирование физического адреса
- •Прерывания
- •Особенности архитектуры микропроцессоров i80x86
- •Реальный и защищенный режимы работы процессора
- •Новые системные регистры микропроцессоров i80х86
- •Адресация в 32-разрядных микропроцессорах i80х86 при работе в защищенном режиме
- •Система прерываний 32-разрядных микропроцессоров i80х86
- •Управление задачами в операционных системах
- •Планирование процессов и диспетчеризация задач
- •Стратегии планирования (диспетчеризации)
- •Дисциплины диспетчеризации
- •Диспетчеризация задач с использованием динамических приоритетов
- •Управление памятью в операционных системах
- •Память и отображение, виртуальное адресное пространство
- •Простое непрерывное распределение и распределение с перекрытием
- •Распределение статическими и динамическими разделами
- •Разрывные методы распределения памяти
- •Распределение оперативной памяти в современных ос для пк
- •Управление вводом/выводом в операционных системах
- •Основные системные таблицы ввода-вывода
- •Файловая система
- •Структура магнитного диска
- •Файловая система fat
- •Файловая система ntfs
- •Структура тома с файловой системой ntfs
- •Основные отличия fat от ntfs
- •Управление параллельными взаимодействующими вычислительными процессами
- •Использование блокировки памяти при синхронизации параллельных процессов.
- •Синхронизация процессов посредством операции «проверка и установка»
- •Семафорные примитивы Дейкстры
- •Мониторы Хоара
- •Почтовые ящики
- •Конвейеры (программные каналы)
- •Очереди сообщений
- •Проблема тупиков и методы борьбы с ними
- •Предотвращение тупиков
- •Обход тупиков
- •Распознавание тупика
- •Современные операционные системы
- •Семейство операционных систем unix
- •Основные понятия системы unix
- •Функционирование системы unix
- •Файловая система
- •Межпроцессорные коммуникации
-
Функционирование системы unix
Процесс может выполняться в одном из двух состояний: пользовательском (выполняет пользовательскую программу) и системном (выполняет программы ядра и имеет доступ к системному сегменту данных).
Когда пользовательскому процессу требуется выполнить системную функцию, он создает системный вызов. Фактически происходит вызов ядра системы как подпрограммы. С этого момента процесс считается системным.
В UNIX- системах используется разделение времени, т.е. каждому процессу выделяется квант времени. Процессам, которые получили большое количество процессорного времени, назначают более низкие приоритеты, а процессам с небольшим процессорным временем – повышают приоритет. Все системные процессы имеют более высокие приоритеты по сравнению с пользовательскими процессами.
Функции ввода/вывода задаются в основном с помощью пяти системных вызовов:
-
open – открыть файл;
-
close – закрыть файл;
-
read – чтение;
-
write – запись;
-
seek – операция поиска.
Механизм перенаправления ввода/вывода является одним из наиболее элегантных, мощных и одновременно простых механизмов OC UNIX.
Реализация этого механизма основывается на следующих свойствах OC UNIX:
-
любой ввод/вывод трактуется как ввод из некоторого файла и вывод в некоторый файл;
-
клавиатура и экран также интерпретируются как файлы (первый можно только читать, а во второй – только писать);
-
доступ к любому файлу производится через его дескриптор (положительное целое число). Файл с дескриптором 1 – файл стандартного ввода (stdin), 2 – файл стандартного вывода (stdout) и 3 – файл стандартного вывода диагностического сообщения (stderr);
-
программа, запущенная в некотором процессе, «наследует» от породившего процесса все дескрипторы открытых файлов.
Файлом стандартного ввода является клавиатура, а файлом стандартного вывода и вывода диагностических сообщений – экран. Однако при запуске любой команды можно сообщить какой файл или вывод какой программы должен служить соответствующим файлом. Тогда интерпретатор перед выполнением системного вызова exec открывает указанные файлы, подменяя смысл дескрипторов 1, 2, 3.
Функция printf неявно использует stdout, функция scan – stdin, функция error – stderr. Т.е. указывать дескриптор при использовании этих функций не надо.
-
Файловая система
Файл в UNIX представляет собой множество символов с произвольным доступом. Рассмотрим организацию файлов на диске.
Информация на диске размещается поблочно, по 512 байт в каждом блоке. Диск разбивается на области (см. рис.1):
-
неиспользуемый блок;
-
управляющий блок (суперблок), в котором содержится размер диска и границы других областей;
-
i-ый список, состоящий из описаний файлов, называемых i-узлами;
-
область для хранения содержимого файлов.
Каждый i-ый узел содержит:
-
идентификацию владельца;
-
идентификацию группы владельца;
-
биты защиты;
-
физические адреса на диске, где находится содержимое файла;
-
размер файла;
-
время создания файла;
-
время последнего использования файла;
-
время последнего изменения атрибутов;
-
число связей-ссылок, указывающих на файл;
-
индикацию, является ли файл директорией, обычным файлом или специальным файлом.
Следом за i-м списком идут блоки, предназначенные для хранения содержимого файлов. Пространство, оставшееся свободным от файлов, образует связанный список свободных блоков.
Рис.1. Организация файлов в UNIX на диске.
Каждый файл однозначно идентифицируется:
-
старшим номером устройства (определяет массив входных точек в драйверы):
-
младшим номером устройства (для выбора устройства из группы идентичных физических устройств):
-
i-м номером ( индекс i-узла данного файла в массиве i-узлов).