- •1. Операционные системы
- •2. Функциональные компоненты локальной ос
- •3. Назначение и функции сетевой ос
- •4. Функциональные компоненты сетевой ос
- •5. Коммуникационные средства
- •6. Классификация ос
- •8. Архитектура ос
- •9. Монолитные и многоярусные ядра
- •10. Функциональные компоненты Linux
- •11. Структура ядра
- •12. Функции слоёв ядра
- •13. Вспомогательные модули
- •14. Микроядерные системы
- •15. Объектная модель функционирования
- •16. Состав исполнительной системы WinNt
- •17. Совместимость
- •18. Множественные прикладные среды. Способы реализации
- •19. Интерфейсы ос
- •20. Файловая система
- •21. Логическая организация файла
- •22. Физическая организация файла
- •23. Общая модель фс
- •Непрерывное
- •2) Цепочечная
- •3) Фиксированный
- •Битовые карты (таблицы) – каждому блоку ставится в соответствие свой бит (1 – занят, 0 – свободен)
- •Цепочки сводных свободных порций
- •Список свободных блоков
- •Индексированный
- •24. Функции фс
- •25. Фс unix-подобных ос
- •26. Структура фс
- •27. Структура фс базовых unix-подобных ос
- •28. Архитектура виртуальной фс
- •29. Последовательность действий при монтировании
- •30. Файловые дескрипторы и трансляция имён
- •31. Физическая организация fat
- •32. Физическая организация ntfs
- •33. Управление процессами
- •34. Контекст и дескриптор
- •35. Структура контекста процесса
- •36. Планирование и диспетчеризация
- •37. Алгоритмы планирования
- •38. Планирование и диспетчеризация в unix системах
- •39. Управление процессами в unix-подобных системах
- •40. Атрибуты, инфраструктура процесса
- •41. Создание процессов
- •42. Этап exec()
- •43. Межпроцессные взаимодействия (ipc)
- •44. Каналы (pipe)
- •45. Fifo
- •46. Пространство имен
- •47. Сообщения
- •48. Семафоры
- •49. Разделяемая память
- •50. Сигналы
- •51. Последовательность событий
- •52. Функции управления процессами
- •53. Сообщения в микроядерных ос.
- •54. Процессы и потоки в WinNt
- •55. Базовая структура процесса, создание процесса в WinNt
- •56. Основные различия управления процессами в различных средах
- •57. Состав потока в WinNt и контекст потока
- •58. Передача сообщений с помощью lpc (локальный вызов процедур)
- •59. Распределенные системы. Удаленный вызов процедур. Rpc (Remote Procedure Call)
- •60. Система ввода-вывода в Win nt
- •61. Реализация свв в Windows nt
- •62. Унифицированная модель драйвера
- •63. Формат пакета irp
- •64. Структура драйвера
- •65. Редиректор и сервер. Встроенные сетевые компоненты
38. Планирование и диспетчеризация в unix системах
Анализ очередей при каждом переключении контекста. Связано с таймерными прерываниями.
Основные методы планирования
- метод карусели – кольцевой буфер. Ядро предоставляет ресурсы процессу на определённый квант времени. Далее выбирается та задача, которая дольше всего была в ожидании. После этого – запись в конец буфера (метод FIFO). Квант регулируется динамически в зависимости от загруженности системы. Очередность регулируется приоритетами. Процесс возобновляется из точки приостанова. Возобновлений может быть много.
Диспетчеризация – реализация решения, принятого на этапе планирования программами и аппаратными средствами.
После переключения контекстов запускается планировщик, который выбирает процесс с наибольшим приоритетом из тех, кто находится в состоянии резервирования (либо из готовых из памяти). Если очереди пусты или выбрать невозможно, то система переводится в режим ожидания до следующего прерывания от таймера.
Параметры диспетчеризации
Существует специальное поле структур, описывающих процессы. Они включают параметры планирования. Есть поле динам/стат приоритетов.
1) приоритет в режиме задачи (user mode)
2) приоритет в режиме ядра (kernel mode)
Приоритет в режиме задачи зависит от того, как этот процесс использовал ресурсы в ранее.
С каждым уровнем приоритетов ассоциируется своя очередь процессов. Приоритеты для (1) оценивается после возвращения процесса из режима ядра в режим задачи. Приоритеты для (2) вычисляются для процессов находящихся в режиме ожидания (останова). Для (1) существует верхнее пороговое значение, для (2) – нижнее пороговое значение
Ядро вычисляет приоритет в следующих случаях:
- непосредственно перед переходом процесса в состояние останова;
- при возвращении процесса из режима ядра в режим задачи;
- в режиме задачи через кванты времени для того чтобы передвигать очереди в процессе.
В течение кванта времени возможно несколько прерываний, отраженных в таблице процессов.
Приоритет процесса в очереди = полураспад + базовое значение.
Существуют алгоритмы, позволяющие динамически менять продолжительность кванта времени = > повышение быстродействия, но и повышение времени переключения при уменьшении кванта.
Все алгоритмы годятся для систем разделения времени и не годятся для систем реального времени, так как не гарантируют запуск процесса в определенный момент времени. Альтернатива: использование микроядерных ОС.
39. Управление процессами в unix-подобных системах
Ядро обеспечивает базовую функциональность ОС, выполняет основные функции, обеспечивает доступ из процесса к файлам и ПУ.
Интерфейс системных вызовов – набор услуг ядра.
Подсистема управления процессами в ядре:
1) 2 типа объектов для использования (во всех ОС):
- файлы (все данные - файлы)
- процессы
2) доступ к ПУ через файлы
3) при запуске программы ядро запускает соответствующий файл, создает образ процесса и передает процессу управление
4) взаимодействие между файлами и процессами, возникающие при функционировании процессов
5) функциональность ОС определяется выполнением соответствующих процессов.
Программа – совокупность файлов, подвергнутых компоновке и выполнению. Чтобы запустить программу нужно создать среду выполнения программы (окружение), это: ресурсы памяти, доступ к системе к ПУ и тд. Это окружение процесс. Процесс – совокупность данных ядра системы, необходимых для описания образа программы в памяти и для управления ее выполнением.
При запуске исполняемого файла может быть создано несколько процессов, но минимум один
Типы процессов в UNIX системах
1) системные процессы
2) демоны
3) прикладные процессы (прикладные)
Системные процессы – часть ядра всегда в ОЗУ (резидентные), не имеют исполняемых файлов, запускаются при инициализации ядра и выполняют функции ядра; доступ фактически ко всем данным (диспетчеры кэша, страничного замещения, swapping памяти ядра)/
init – прародитель всех остальных процессов, запускается (в etc/init ) первым (имеет свой исполнительный файл) (далее - loginshell)
init не является частью ядра, запуск из исполнительного файла, функционирует до выгрузки системы
Демоны - неинтерактивные процессы, запускаемые обычным способом (загрузка кода в ОЗУ исполняемого файла), как правило, выполняются в фоновом режиме. Большинство запускается при инициализации системы. Обеспечивает работу основных подсистем (терминальные доступ, сетевые сервисы). Не связаны напрямую ни с одним пользовательскими процессами. Воспользоваться напрямую ими нельзя. Большую часть времени находятся в режиме ожидания запросов. Время жизни ограничено временем пользовательского сеанса.
Все остальное - прикладные процессы.
Выполняются в режиме задачи. Это все программы, запускаемые через интерпретатор Shell. Имеют исполнительные файлы.
Shell – умолчание записано в файле passwd.
Может быть интерактивным (обязательно владение такими ресурсами, как терминал и консоль) либо фоновым (наоборот).