Современные операционные системы UNIX UNIX Linux Linux QNX QNX.

Презентация:



Advertisements
Похожие презентации
Современные операционные системы UNIX UNIX Linux Linux QNX QNX.
Advertisements

1 Современные системы программирования. Часть 2. Системное и прикладное программное обеспечение Малышенко Владислав Викторович.
Современные операционные системы UNIX UNIX Linux Linux QNX QNX.
Раздел 3 Сетевые модели. Тема 3.1 Понятие сетевой модели. Архитектура сети определяет основные элементы сети, характеризует ее общую логическую организацию,
Прерывания Определение прерывания Прерывания представляют собой механизм, позволяющий координировать параллельное функционирование отдельных устройств.
Лекция 6 Понятие операционных систем Учебные вопросы: 1. Характеристики ОС 2. Свободные и проприетарные ОС.
Процессы и потоки. Процессы В общем представлении, процесс - это программа, выполняющаяся в оперативной памяти компьютера. Реально, все гораздо сложней.
Сетевые службы Для конечного пользователя сеть это не компьютеры, кабели и концентраторы и даже не информационные потоки, для него сеть это, прежде всего,
Операционная система. Базовые понятия Операционная система – это комплекс программ, обеспечивающий контроль за существованием, распределением и использованием.
Лекция 4. Режимы работы микропроцессора. Взаимодействие микропроцессора с остальными устройствами Взаимодействие МП с остальными устройствами МПС происходит.
- система взаимосвязанных технических устройств, выполняющих ввод, хранение, обработку и вывод информации.
1. Теоретические основы операционных систем (планирование заданий и использования процессора, обеспечение программ средствами коммуникации и синхронизации,
Системы реального времени Лекция 4: процессы. Понятие процесса Процесс - фундаментальное понятие любой операционной системы С помощью процессов происходит.
Тема 3.3 Сетевая модель OSI и другие сетевые модели. Семиуровневая модель OSI. Для единого представления данных в сетях с неоднородными устройствами и.
Конфигурация ЛВС (локальные сети одноранговые и с выделенным сервером) По административным отношениям между узлами можно выделить сети с централизованным.
Архитектура операционных систем Семестр 2, Лекция 1.
Информатика в школе Операционная система Программное обеспечение.
Архитектура операционных систем. Архитектура ОС Состав модулей (компонент) ОС Структура связей между отдельными модулями ОС Принципы взаимодействия модулей.
Программное обеспечение компьютера. Совокупность программ, хранящихся в долговременной памяти компьютера, составляют программное обеспечение (ПО) компьютера.
Управление процессами. Определение процесса. Основные понятия Процесс совокупность машинных команд и данных, которая обрабатывается в рамках вычислительной.
Транксрипт:

Современные операционные системы UNIX UNIX Linux Linux QNX QNX

Основные понятия ОС UNIX Виртуальная машина Виртуальная машина Пользователь Пользователь Интерфейс пользователя Интерфейс пользователя Привилегированный пользователь Привилегированный пользователь Команды и командный интерпретатор Команды и командный интерпретатор Процессы Процессы

Процессы Процесс в ОС UNIX - это программа, выполняемая в собственном виртуальном адресном пространстве. Процесс в ОС UNIX - это программа, выполняемая в собственном виртуальном адресном пространстве. Когда пользователь входит в систему, автоматически создается процесс, в котором выполняется программа командного интерпретатора. Когда пользователь входит в систему, автоматически создается процесс, в котором выполняется программа командного интерпретатора. Если командному интерпретатору встречается команда, соответствующая выполняемому файлу, то он создает новый процесс и запускает в нем соответствующую программу. Если командному интерпретатору встречается команда, соответствующая выполняемому файлу, то он создает новый процесс и запускает в нем соответствующую программу.

Процессы Эта запущенная программа, в свою очередь, может создать процесс и запустить в нем другую программу и т. д. Эта запущенная программа, в свою очередь, может создать процесс и запустить в нем другую программу и т. д. Для образования нового процесса и запуска в нем программы используются два системных вызова API fork() и ехес (). Для образования нового процесса и запуска в нем программы используются два системных вызова API fork() и ехес (). Системный вызов fork приводит к созданию нового адресного пространства, состояние которого абсолютно идентично состоянию адресного пространства основного процесса. Для дочернего процесса заводятся копии всех сегментов данных. Системный вызов fork приводит к созданию нового адресного пространства, состояние которого абсолютно идентично состоянию адресного пространства основного процесса. Для дочернего процесса заводятся копии всех сегментов данных.

Процессы Сразу после выполнения системного вызова fork основной и порожденный процессы являются близнецами: управление и в том и в другом находится в точке, непосредственно следующей за вызовом fork. Сразу после выполнения системного вызова fork основной и порожденный процессы являются близнецами: управление и в том и в другом находится в точке, непосредственно следующей за вызовом fork. Чтобы программа могла разобраться, в каком процессе она теперь работает в основном или порожденном, функция fork возвращает разные значения: 0 в порожденном процессе и целое положительное число (идентификатор порожденного процесса PID) в основном процессе. Чтобы программа могла разобраться, в каком процессе она теперь работает в основном или порожденном, функция fork возвращает разные значения: 0 в порожденном процессе и целое положительное число (идентификатор порожденного процесса PID) в основном процессе.

Процессы Для запуска новой программы в порожденном процессе, нужно обратиться к системному вызову exec, указав в качестве аргументов имя файла, содержащего новую выполняемую программу, и текстовые строки, которые будут переданы в качестве аргументов новой программы. Для запуска новой программы в порожденном процессе, нужно обратиться к системному вызову exec, указав в качестве аргументов имя файла, содержащего новую выполняемую программу, и текстовые строки, которые будут переданы в качестве аргументов новой программы. Выполнение exec приводит к тому, что в адресное пространство порожденного процесса загружается новая выполняемая программа и запускается с адреса, соответствующего входу в функцию main. Выполнение exec приводит к тому, что в адресное пространство порожденного процесса загружается новая выполняемая программа и запускается с адреса, соответствующего входу в функцию main.

Процессы Другими словами, это приводит к замене текущего программного сегмента и текущего сегмента данных, которые были унаследованы при выполнении вызова fork, на новые соответствующие сегменты, заданные в файле. Другими словами, это приводит к замене текущего программного сегмента и текущего сегмента данных, которые были унаследованы при выполнении вызова fork, на новые соответствующие сегменты, заданные в файле. Прежние сегменты теряются. Это эффективный метод смены выполняемой процессом программы, но не самого процесса. Файлы, уже открытые до выполнения exec, остаются открытыми после его выполнения. Прежние сегменты теряются. Это эффективный метод смены выполняемой процессом программы, но не самого процесса. Файлы, уже открытые до выполнения exec, остаются открытыми после его выполнения.

Процессы В примере пользовательская программа, вызываемая как команда shell, выполняет в отдельном процессе стандартную команду shell ls, которая выдает на экран содержимое текущего каталога файлов. В примере пользовательская программа, вызываемая как команда shell, выполняет в отдельном процессе стандартную команду shell ls, которая выдает на экран содержимое текущего каталога файлов. #include #include main() {if(fork()==0) wait(0); /* родительский процесс */ else execl("/bin/ls", "", NULL): /* порожденный процесс */ }

Процессы Каждый процесс, за исключением начального, порождается в результате запуска другим процессом операции fork(). Каждый процесс имеет одного родителя, но может породить много процессов. Каждый процесс, за исключением начального, порождается в результате запуска другим процессом операции fork(). Каждый процесс имеет одного родителя, но может породить много процессов. Начальный процесс создается в результате загрузки системы. После порождения процесса с идентификатором 1 ( init ) начальный процесс становится процессом подкачки и реализует механизм виртуальной памяти. Начальный процесс создается в результате загрузки системы. После порождения процесса с идентификатором 1 ( init ) начальный процесс становится процессом подкачки и реализует механизм виртуальной памяти. Процесс init, является предком любого другого процесса в системе и связан с каждым процессом особым образом. Процесс init, является предком любого другого процесса в системе и связан с каждым процессом особым образом.

Функционирование ОС UNIX Выполнение процессов Выполнение процессов Подсистема ввода/вывода Подсистема ввода/вывода Перенаправление ввода/вывода Перенаправление ввода/вывода Файловая система Файловая система Структура файловой системы Структура файловой системы Защита файлов Защита файлов Межпроцессные коммуникации в UNIX Межпроцессные коммуникации в UNIX

Выполнение процессов Процесс может выполняться в одном из двух состояний: пользовательском и системном. В пользовательском состоянии процесс выполняет пользовательскую программу и имеет доступ к пользовательскому сегменту данных. В системном состоянии процесс выполняет программы ядра и имеет доступ к системному сегменту данных. Процесс может выполняться в одном из двух состояний: пользовательском и системном. В пользовательском состоянии процесс выполняет пользовательскую программу и имеет доступ к пользовательскому сегменту данных. В системном состоянии процесс выполняет программы ядра и имеет доступ к системному сегменту данных. Когда пользовательскому процессу требуется выполнить системную функцию, он создает системный вызов. Фактически происходит вызов ядра системы как подпрограммы. Когда пользовательскому процессу требуется выполнить системную функцию, он создает системный вызов. Фактически происходит вызов ядра системы как подпрограммы.

Выполнение процессов С момента появления системного вызова процесс считается системным. Таким образом, пользовательский и системный процессы являются двумя фазами одного и того же процесса, но они никогда не пересекаются между собой. С момента появления системного вызова процесс считается системным. Таким образом, пользовательский и системный процессы являются двумя фазами одного и того же процесса, но они никогда не пересекаются между собой. Каждая фаза пользуется своим собственным стеком. Стек задачи содержит аргументы, локальные переменные и другую информацию относительно функций, выполняемых в режиме задачи. Диспетчерский процесс не имеет пользовательской фазы. Каждая фаза пользуется своим собственным стеком. Стек задачи содержит аргументы, локальные переменные и другую информацию относительно функций, выполняемых в режиме задачи. Диспетчерский процесс не имеет пользовательской фазы.

Выполнение процессов В UNIX-системах используется разделение времени: каждому процессу выделяется квант времени. Либо процесс завершается сам до истечения отведенного ему кванта времени, либо он откладывается по истечении кванта. В UNIX-системах используется разделение времени: каждому процессу выделяется квант времени. Либо процесс завершается сам до истечения отведенного ему кванта времени, либо он откладывается по истечении кванта. Механизм диспетчеризации характеризуется достаточно справедливым распределением процессорного времени между всеми процессами. Пользовательским процессам приписываются приоритеты в зависимости от количества получаемого ими процессорного времени. Механизм диспетчеризации характеризуется достаточно справедливым распределением процессорного времени между всеми процессами. Пользовательским процессам приписываются приоритеты в зависимости от количества получаемого ими процессорного времени.

Выполнение процессов Процессам, которые получили большое количество процессорного времени, назначают более низкие приоритеты, а процессам, которые получили лишь небольшое количество процессорного времени повышают приоритет. Такой метод диспетчеризации обеспечивает хорошее время реакции для всех пользователей системы. Процессам, которые получили большое количество процессорного времени, назначают более низкие приоритеты, а процессам, которые получили лишь небольшое количество процессорного времени повышают приоритет. Такой метод диспетчеризации обеспечивает хорошее время реакции для всех пользователей системы. Все системные процессы имеют более высокие приоритеты по сравнению с пользовательскими и поэтому всегда обслуживаются в первую очередь. Все системные процессы имеют более высокие приоритеты по сравнению с пользовательскими и поэтому всегда обслуживаются в первую очередь.

Межпроцессные коммуникации в UNIX Сигналы Сигналы Программные каналы Программные каналы Семафоры Семафоры Очереди сообщений Очереди сообщений Разделяемая память Разделяемая память Вызовы удаленных процедур (RPC) Вызовы удаленных процедур (RPC)

Сигналы Если рассматривать выполнение процесса в виртуальном компьютере, который предоставляется каждому пользователю, то в такой системе должна существовать система прерываний, отвечающая стандартным требованиям: Если рассматривать выполнение процесса в виртуальном компьютере, который предоставляется каждому пользователю, то в такой системе должна существовать система прерываний, отвечающая стандартным требованиям: обработка исключительных ситуаций; обработка исключительных ситуаций; средства обработки внешних и внутренних прерываний; средства обработки внешних и внутренних прерываний; средства управления системой прерываний (маскирование и демаскирование). средства управления системой прерываний (маскирование и демаскирование). Всем этим требованиям в UNIX отвечает техника сигналов, которая может не только воспринимать и обрабатывать сигналы, но и порождать их и посылать на другие машины (процессы). Всем этим требованиям в UNIX отвечает техника сигналов, которая может не только воспринимать и обрабатывать сигналы, но и порождать их и посылать на другие машины (процессы).

Сигналы Сигналы могут быть синхронными, когда инициатор сигнала сам процесс, и асинхронными, когда инициатор возникновения сигнала интерактивный пользователь за терминалом. Источником асинхронных сигналов может быть также ядро, когда оно контролирует определенные состояния аппаратуры, рассматриваемые как ошибочные. Сигналы могут быть синхронными, когда инициатор сигнала сам процесс, и асинхронными, когда инициатор возникновения сигнала интерактивный пользователь за терминалом. Источником асинхронных сигналов может быть также ядро, когда оно контролирует определенные состояния аппаратуры, рассматриваемые как ошибочные. Сигналы можно рассматривать как простейшую форму межпроцессного взаимодействия, которое используется для передачи от одного процесса другому или от ядра ОС какому-либо процессу уведомления о возникновении определенного события. Сигналы можно рассматривать как простейшую форму межпроцессного взаимодействия, которое используется для передачи от одного процесса другому или от ядра ОС какому-либо процессу уведомления о возникновении определенного события.

Совместное использование информации процессами В традиционной модели программирования Unix в системе могут одновременно выполняться несколько процессов, каждому из которых выделяется собственное адресное пространство. Это иллюстрирует рис. 1. В традиционной модели программирования Unix в системе могут одновременно выполняться несколько процессов, каждому из которых выделяется собственное адресное пространство. Это иллюстрирует рис. 1. Два процесса в левой части совместно используют информацию, хранящуюся в одном из объектов файловой системы. Для доступа к этим данным каждый процесс должен обратиться к ядру (используя функции read, write, lseek и аналогичные). Два процесса в левой части совместно используют информацию, хранящуюся в одном из объектов файловой системы. Для доступа к этим данным каждый процесс должен обратиться к ядру (используя функции read, write, lseek и аналогичные).

Совместное использование информации процессами

Некоторая форма синхронизации требуется при изменении файла, для исключения помех при одновременной записи в файл несколькими процессами и для защиты процессов, читающих из файла, от тех, которые пишут в него. Некоторая форма синхронизации требуется при изменении файла, для исключения помех при одновременной записи в файл несколькими процессами и для защиты процессов, читающих из файла, от тех, которые пишут в него. Два процесса в середине рисунка совместно используют информацию, хранящуюся в ядре. Примерами являются канал, очередь сообщений или семафор. Для доступа к совместно используемой информации в этом случае будут использоваться системные вызовы. Два процесса в середине рисунка совместно используют информацию, хранящуюся в ядре. Примерами являются канал, очередь сообщений или семафор. Для доступа к совместно используемой информации в этом случае будут использоваться системные вызовы.

Совместное использование информации процессами Два процесса в правой части используют общую область памяти, к которой может обращаться каждый из процессов. После того как будет получен доступ к этой области памяти, процессы смогут обращаться к данным вообще без помощи ядра. В этом случае, как и в первом, процессам, использующим общую память, также требуется синхронизация. Два процесса в правой части используют общую область памяти, к которой может обращаться каждый из процессов. После того как будет получен доступ к этой области памяти, процессы смогут обращаться к данным вообще без помощи ядра. В этом случае, как и в первом, процессам, использующим общую память, также требуется синхронизация. Такое взаимодействие процессов часто называют аббревиатурой IPC (InterProcess Communication). Такое взаимодействие процессов часто называют аббревиатурой IPC (InterProcess Communication).

Совместное использование информации процессами Существует два подхода к организации IPC: Существует два подхода к организации IPC: System V IPC (стандарт UNIX 98); System V IPC (стандарт UNIX 98); POSIX IPC (стандарт POSIX); POSIX IPC (стандарт POSIX); Первый является «родным» для UNIX и с его помощью реализовано большое количество существующих приложений; Первый является «родным» для UNIX и с его помощью реализовано большое количество существующих приложений; Второй призван обеспечить переносимость ПО. Второй призван обеспечить переносимость ПО.

System V IPC Из имеющихся типов IPC следующие три могут быть отнесены к System V IPC: Из имеющихся типов IPC следующие три могут быть отнесены к System V IPC: очереди сообщений System V; очереди сообщений System V; семафоры System V; семафоры System V; общая память System V. общая память System V. У них много общего: схожи функции, с помощью которых организуется доступ к объектам; также схожи формы хранения информации в ядре. Информация о функциях сведена в табл. 1. У них много общего: схожи функции, с помощью которых организуется доступ к объектам; также схожи формы хранения информации в ядре. Информация о функциях сведена в табл. 1.

System V IPC Очереди сообщений Семафоры Семафоры Общая память Заголовочны й файл Создание или открытие msggetsemgetshmget Операции управления msgctlsemctlshmctl Операции IPC msgsnd, msgrcv semop shmat, shmdt

POSIX IPC Из имеющихся типов IPC следующие три могут быть отнесены к POSIX IPC: Из имеющихся типов IPC следующие три могут быть отнесены к POSIX IPC: очереди сообщений POSIX; очереди сообщений POSIX; семафоры POSIX; семафоры POSIX; общая память POSIX. общая память POSIX. У них много общего: схожи функции, с помощью которых организуется доступ к объектам; также схожи формы хранения информации в ядре. Информация о функциях сведена в табл. 2. У них много общего: схожи функции, с помощью которых организуется доступ к объектам; также схожи формы хранения информации в ядре. Информация о функциях сведена в табл. 2.

POSIX IPC Очереди сообщений Семафор ы Семафор ы Общая память Заголовочны й файл Создание или открытие mq_opensem_openshm_open Операции управления mq_getattr, mq_setattr -fstat Операции IPC mq_send, mq_receive sem_wait, sem_post mmap, munmap

Совместное использование информации процессами Основное отличие этих подходов заключается в способах создания идентификаторов: Основное отличие этих подходов заключается в способах создания идентификаторов: в System V используются ключи типа key_t и функция ftok; в System V используются ключи типа key_t и функция ftok; в POSIX используются имена, аналогичные именам файлов в файловой системе, но не обязанные соответствовать реальным файлам. в POSIX используются имена, аналогичные именам файлов в файловой системе, но не обязанные соответствовать реальным файлам. Далее, в основном, рассматриваются объекты SYS V. Далее, в основном, рассматриваются объекты SYS V.

Вызовы удаленных процедур (RPC) Во многих случаях взаимодействие процессов носит характер «клиент сервер». Один из процессов («клиент») запрашивает у другого процесса («сервера») некоторую услугу (сервис) и не продолжает свое выполнение до тех пор, пока эта услуга не будет выполнена (и пока процесс-клиент не получит соответствующие результаты). Видно, что семантически такой режим взаимодействия эквивалентен вызову процедуры. Отсюда и соответствующее название. Во многих случаях взаимодействие процессов носит характер «клиент сервер». Один из процессов («клиент») запрашивает у другого процесса («сервера») некоторую услугу (сервис) и не продолжает свое выполнение до тех пор, пока эта услуга не будет выполнена (и пока процесс-клиент не получит соответствующие результаты). Видно, что семантически такой режим взаимодействия эквивалентен вызову процедуры. Отсюда и соответствующее название.

Вызовы удаленных процедур (RPC) ОС UNIX по своей идеологии идеально подходит для того, чтобы быть сетевой операционной системой. И на ее основе можно создавать распределенные системы и организовывать распределенные вычисления. Свойства переносимости позволяют создавать «операционно однородные» сети, включающие разнородные компьютеры. Однако остается проблема разного представления данных в компьютерах разной архитектуры. Поэтому одной из основных идей RPC является автоматическое обеспечение преобразования форматов данных при взаимодействии процессов, выполняющихся на разнородных компьютерах. ОС UNIX по своей идеологии идеально подходит для того, чтобы быть сетевой операционной системой. И на ее основе можно создавать распределенные системы и организовывать распределенные вычисления. Свойства переносимости позволяют создавать «операционно однородные» сети, включающие разнородные компьютеры. Однако остается проблема разного представления данных в компьютерах разной архитектуры. Поэтому одной из основных идей RPC является автоматическое обеспечение преобразования форматов данных при взаимодействии процессов, выполняющихся на разнородных компьютерах.

Вызовы удаленных процедур (RPC) Реализация технологии вызовов удаленных процедур (remote procedure call RPC) достаточно сложна, поскольку этот механизм должен обеспечить работу взаимодействующих процессов, которые находятся на разных компьютерах. Если в случае обращения к процедуре, расположенной на том же компьютере, процесс общается с ней через стек или общие области памяти, то в случае удаленного вызова передача параметров процедуре превращается в передачу запроса по сети. Соответственно, и получение результата так же осуществляется посредством использования сетевых механизмов. Реализация технологии вызовов удаленных процедур (remote procedure call RPC) достаточно сложна, поскольку этот механизм должен обеспечить работу взаимодействующих процессов, которые находятся на разных компьютерах. Если в случае обращения к процедуре, расположенной на том же компьютере, процесс общается с ней через стек или общие области памяти, то в случае удаленного вызова передача параметров процедуре превращается в передачу запроса по сети. Соответственно, и получение результата так же осуществляется посредством использования сетевых механизмов.

Вызовы удаленных процедур (RPC) Удаленный вызов процедур включает следующие шаги: Удаленный вызов процедур включает следующие шаги: процесс-клиент осуществляет локальный вызов процедуры, которую называют «заглушкой» (stub). Задача этого модуля-заглушки принять аргументы, преобразовать их в стандартную форму и сформировать сетевой запрос. Упаковка аргументов и создание сетевого запроса называется сборкой (marshalling); процесс-клиент осуществляет локальный вызов процедуры, которую называют «заглушкой» (stub). Задача этого модуля-заглушки принять аргументы, преобразовать их в стандартную форму и сформировать сетевой запрос. Упаковка аргументов и создание сетевого запроса называется сборкой (marshalling); сетевой запрос пересылается на удаленную систему, где соответствующий модуль ожидает такой запрос и при его получении извлекает параметры вызова процедуры (unmarshalling), а затем передает их серверу удаленной процедуры. После выполнения осуществляется обратная передача. сетевой запрос пересылается на удаленную систему, где соответствующий модуль ожидает такой запрос и при его получении извлекает параметры вызова процедуры (unmarshalling), а затем передает их серверу удаленной процедуры. После выполнения осуществляется обратная передача.