- •1 Ядро. Модули ос
- •Функции ядра
- •2 Ядро в привилегированном режиме
- •3 Процесс. Модель процесса
- •Создание процессов
- •Состояния процессов
- •4 Завершение процесса
- •5 Иерархия процессов
- •6 Структура ядра
- •7 Переключение процессов
- •Содержимое таблицы процессов (ее столбцы)
- •8 Потоки. Модель потока
- •9 Межпроцессорное взаимодействие. Состояние состязания
- •10 Критические области
- •11 Запрещения прерываний и переменные блокировки Попытка аппаратного решения проблемы
- •Рассмотрим программные решения
- •12 Алгоритм петерсона. Команда tsl
- •Примитивы межпроцессорного взаимодействия
- •13 Семафоры
- •14 Мьютексы
- •15 Функции ос по управлению памятью
- •16 Типы адресов
- •17 Образ процесса. Виртуальное адресное пространство
- •18 Методы распределения памяти
- •Распределение памяти фиксированными разделами
- •Распределение памяти динамическими разделами
- •Перемещаемые разделы
- •19 Swopping и виртуальная память
- •Включает решение следующих задач
- •20 Страничное распределение памяти
- •22 Сегментное распределение памяти
- •24 Кэш память
- •Принцип действия кэш памяти
- •25 Устройство ввода-вывода
- •Контроллеры внешних устройств
- •1 Способ. Раздельные адресные пространства
- •2 Способ. Одно адресное пространство
- •3 Способ. Гибридный
- •27 Использование нескольких шин для ввода-вывода
- •28 Прямой доступ к памяти. Direct Memory Access (dma)
- •29 Процедура прерываний. Контроллер прерываний
- •30 Принципы программного обеспечения ввода-вывода
- •31 Программный ввод-вывод
- •31 Управляемый прерываниями ввод-вывод. Использование дма
- •32 Программные уровни ввода-вывода
- •Обработка прерываний и драйверы
- •Программные уровни ввод-вывод
- •33 Независимое от устройств программное обеспечение ввода-вывода Единообразный интерфейс для устройств
- •Единообразный интерфейс драйверов устройств
- •34 Структура и функции драйверов
- •35 Буферизация ввода-вывода
- •36 Юникс подобные ос
- •37 Структура ядра ос юникс
- •38 Загрузка юникс подобной ос
- •39 Процессы в системе юникс
- •40 Управление процессами ядром юникс
- •41 Системные вызовы управления процессами
- •42 Системные вызовы управления потоками
- •43 Сигналы
- •44 Файловая система и иерархия данных
- •45 Файловая система fat
39 Процессы в системе юникс
Процесс в системах ЮНИКС – это процесс, в классическом понимании этого термина, то есть это программа, выполняемая в собственном виртуальном адресном пространстве.
Когда пользователь входит в систему, автоматически создается процесс, в котором выполняется программа командного интерпретатора. Если командному интерпретатору встречается команда, соответствующая выполняемому файлу, то он создает новый процесс и запускает в нем соответствующую программу, начиная с функции main. Эта запущенная программа, в свою очередь, может создать процесс и запустить в нем другую программу(та тоже должна содержать функциюmain) и так далее. Для образования нового процесса и запуска в нем программы используются 2 системных вызоваAPI–fork() &exec(имя_выполняемого_файла). Системный вызовfork() приводит к созданию нового адресного пространства , состояние которого абсолютно идентично состоянию адресного пространства основного процесса(то есть в нем содержатся те же программы и данные). Для дочернего процесса заводятся копии всех сегментов данных.
Процесс – объект, создаваемый в результате выполнения функции fork(). Каждый процесс имеет одного родителя, но может породить много процессов. Начальный процесс является особенным процессом, который создается в результате загрузки системы. После порождения нового процесса с идентификатором 1 начальный процесс становится процессом подкачки и реализует механизм виртуальной памяти.
40 Управление процессами ядром юникс
Процесс может выполняться в одном из двух состояний, пользовательском или системном. В пользовательском состоянии процесс выполняет пользовательскую программу и имеет доступ к пользовательскому сегменту данных.
В системном состоянии процесс выполняет программы ядра и имеет доступ к системному сегменту данных. Когда пользовательскому процессу требуется выполнить системную функцию, он делает системный вызов. Происходит вызов ядра системы как подпрограммы. С момента системного вызова процесс считается системным. Пользовательский и системный процессы являются двумя фазами одного и того же процесса, но они никогда не пересекаются между собой. Каждая фаза пользуется своим собственным стеком. Стек задачи содержит аргументы, локальные переменные и другую информацию относительно функций, выполняемых в режиме задачи.
41 Системные вызовы управления процессами
В системном состоянии процесс выполняет программы ядра и имеет доступ к системному сегменту данных. Когда пользовательскому процессу требуется выполнить системную функцию, он делает системный вызов. Происходит вызов ядра системы как подпрограммы. С момента системного вызова процесс считается системным. Пользовательский и системный процессы являются двумя фазами одного и того же процесса, но они никогда не пересекаются между собой. Каждая фаза пользуется своим собственным стеком. Стек задачи содержит аргументы, локальные переменные и другую информацию относительно функций, выполняемых в режиме задачи.
42 Системные вызовы управления потоками
Сюда ХЗ!
43 Сигналы
Если рассматривать выполнение процесса на виртуальном компьютере, который предоставляется каждому пользователю, то в такой системе должна существовать система прерываний, отвечающая стандартным требованиям(обработка исключительных ситуаций, средства обработки внешних и внутренних прерываний, средства управления системой прерываний – маскирование и демаскирование). Всем этим требованиям в ЮНИКСе отвечает механизм сигналов, который позволяет не только воспринимать и обрабатывать сигналы, но и порождать их и посылать на другие процессы. Сигналы могут быть синхронными, когда инициатор сигнала – сам процесс, и асинхронным, когда инициатор сигнала – интерактивный пользователь, сидящий за терминалом. Источником асинхронных сигналов может быть также ядро, когда оно контролирует определенные состояния аппаратуры, рассматриваемые как ошибочные. Сигналы – простейшая форма взаимодействия между процессами. Они используются для передачи от одного процесса другому или от ядра ОС какому-либо процессу уведомления о возникновении определенного события.