- •М онолитные
- •Модульные
- •Ос с микроядром
- •Виртуальные машины
- •М онолитные ос
- •Ос с микроядром
- •Процессы и потоки в ос. Необходимость синхронизации при работе с общими ресурсами. Способы синхронизации.
- •Механизмы синхронизации. Понятие семафора (Semaphore) и основные операции с ним. Двоичный семафор.
- •Механизмы синхронизации. Понятие мьютекса (Mutex) и основные операции с ним. Пример использование мьютекса для синхронизации нитей.
- •Права доступа к файлу
- •1. Стандарт cp/m
- •2. Операционные системы типа dos
- •3. Стандарт msx
- •4. Операционные системы, основанные на графическом интерфейсе
- •6. Операционные системы семейства unix
М онолитные ос
Пользовательский режим >>> режим процессора >>> оборудование
Моноли́тное ядро́ — классическая и, на сегодняшний день, наиболее распространённая архитектура ядер операционных систем. Монолитные ядра предоставляют богатый набор абстракций оборудования. Все части монолитного ядра работают в одном адресном пространстве.
Ранние Unix, Novell Netware, Mac OS, IBM OS/370
Ос с микроядром
Микроядро — это минимальная реализация функций ядра операционной системы.
К лассические микроядра предоставляют лишь очень небольшой набор низкоуровневых примитивов, или системных вызовов, реализующих базовые сервисы операционной системы.
Сюда относятся:
управление адресным пространством оперативной памяти.
управление адресным пространством виртуальной памяти.
управление процессами и потоками (нитями).
средства межпроцессной коммуникации.
Все остальные сервисы ОС, в классических монолитных ядрах предоставляемые непосредственно ядром, в микроядерных архитектурах реализуются в адресном пространстве пользователя (Ring3) и называются сервисами. Примерами таких сервисов, выносимых в пространство пользователя в микроядерных архитектурах, являются сетевые сервисы, файловая система, драйверы.
Такая конструкция позволяет улучшить общее быстродействие системы (небольшое микроядро может уместиться в кэше процессора). Основное достоинство микроядерной архитектуры — высокая степень модульности ядра операционной системы.
Архитектура современных ОС. ОС с множественными интерфейсами прикладных программ на примере ОС Windows NT.
См. 3
Процессы и потоки в ОС. Понятие процесса. Атрибуты процесса. Создание нового процесса в различных ОС.
Мультипрограммирование, или многозадачность (multitasking), — это способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются сразу несколько программ. Эти программы совместно используют не только процессор, но и другие ресурсы компьютера: оперативную и внешнюю память, устройства ввода-вывода, данные. Мультипрограммирование призвано повысить эффективность использования вычислительной системы, однако эффективность может пониматься по-разному. Наиболее характерными критериями эффективности вычислительных систем являются:
пропускная способность — количество задач, выполняемых вычислительной системой в единицу времени;
удобство работы пользователей: они имеют возможность интерактивно работать одновременно с несколькими приложениями на одной машине;
реактивность системы — способность системы выдерживать заранее заданные интервалы времени между запуском программы и получением результата.
Чтобы поддерживать мультипрограммирование, ОС должна определить и оформить для себя те внутренние единицы работы, между которыми будет разделяться процессор и другие ресурсы компьютера. В настоящее время в большинстве операционных систем определены два типа единиц работы. Более крупная единица работы, обычно носящая название процесса, или задачи, требует для своего выполнения нескольких более мелких работ, для обозначения которых используют термины «поток», или «нить».
В операционных системах, где существуют и процессы, и потоки, процесс рассматривается операционной системой как заявка на потребление всех видов ресурсов, кроме одного — процессорного времени. Этот последний важнейший ресурс распределяется операционной системой между другими единицами работы — потоками, которые и получили свое название благодаря тому, что они представляют собой последовательности (потоки выполнения) команд.
Для того чтобы процессы не могли вмешаться в распределение ресурсов, а также не могли повредить коды и данные друг друга, важнейшей задачей ОС является изоляция одного процесса от другого. Для этого операционная система обеспечивает каждый процесс отдельным виртуальным адресным пространством, так что ни один процесс не может получить прямого доступа к командам и данным другого процесса.
Виртуальное адресное пространство процесса — это совокупность адресов, которыми может манипулировать программный модуль процесса. Операционная система отображает виртуальное адресное пространство процесса на отведенную процессу физическую память.
Атрибуты
Вирт. память
Сист. ресурсы
Исполняемая часть
Process:
Создать процесс — это, прежде всего, означает создать описатель процесса, в качестве которого выступает одна или несколько информационных структур, содержащих все сведения о процессе,, необходимые операционной системе для управления им. В число таких сведений могут входить, например, идентификатор процесса, данные о расположении в памяти исполняемого модуля, степень привилегированности процесса (приоритет и права доступа) и т. п.
Примерами описателей процесса являются блок управления задачей (ТСВ — Task Control Block) в OS/360, управляющий блок процесса (РСВ — Process Control Block) в OS/2, дескриптор процесса в UNIX, объект-процесс (object-process) в Windows NT.
Создание процесса включает загрузку кодов и данных исполняемой программы данного процесса с диска в оперативную память.
Unix: fork() позволяет создать нов пр(копию процесса) – единственный!. После выполнения запроса fork() двум пр – родительскому и дочернему – соотв одинаковые образы памяти, строки окружения и открытые файлы. Обычно дочерний пр выполняет сист вызов execve для изменения своего образа памяти и запуска нов проги. Начальное адресное пр-во дочернего процесса явл копией родительского, но сами адресн пр-ва различны, и перезаписываемая память совместно не используется.
Windows: CreateProcess(8 параметров) управляет и созданием пр и запуском в нем нужной программы. Есть еще около 100 ф-ий для управления пр. адресные пространства отличаются с самого начала.
Атрибуты (Unix):
Каждый процесс в ОС Unix характеризуется набором признаков – атрибутов, отличающих его от других процессов. Большинство атрибутов процесс наследует от родительского процесса, одна часть атрибутов устанавливается ОС, другая часть порождается самим процессом в ходе его выполнения.
Назначает ОС:
идентификатор (номер) процесса PID (Process Identifier)
идентификатор родительского процесса PPID (Parent Process ID).
К атрибутам также относятся:
Контролирующий управляющий терминал. Открывается процессом для чтения и записи. С его помощью процессу могут быть посланы сигналы прерывания. Управляющий терминал устанавливается только для тех процессов, которые запущены программой пользователя.
Реальный и эффективный идентификаторы пользователя и группы. Каждый пользователь, зарегистрированный в ОС, имеет идентификаторы пользователя UID и группы GID, которые хранятся в файлах /etc/passwd и /etc/group.
Процессы и потоки в ОС. Понятие процесса. Жизненный цикл процесса. Различные состояния процесса.
Состояния процесса:
Состояния (по лекции):
1.готовый к работе, 2.ожидающий (пр не может работать пока не случится некоторое событие), 3.активный, 4.завершенный (выполнен, но еще жив как процесс).
Переходы: к 1 – new, из 2 в 1 – по ОС, из 1 в 3 – по планировщику, из 3в1, из 3 в 2, из 3 в 4 – окончание проги (или по ошибке), из 4 удален. <--- жизненный цикл процесса.
Процессы и потоки в ОС. Понятие нити (Thread). Основные отличия нити от процесса.
Любой поток (нить) состоит из двух компонентов:
объекта ядра, через который операционная система управляет потоком. Там же хранится статистическая информация о потоке(дополнительные потоки создаются также ядром);
стека потока, который содержит параметры всех функций и локальные переменные, необходимые потоку для выполнения кода.
Процесс состоит хотя бы из одного потока. В ОС каждому процессу соответствует адресное пространство и одиночный управляющий поток. Фактически это и определяет процесс.
Процессы используются для группирования ресурсов, а потоки являются объектами, поочередно исполняющимися на центральном процессоре.
Концепция потоков добавляет к модели процесса возможность одновременного выполнения в одной и той же среде процесса нескольких программ.
Главное отличие процессов от потоков, состоит в том, что процессы изолированы друг от друга, так используют разные адресные пространства, а потоки, могут использовать одно и то же пространство (внутри процесса) при этом, выполняя действия не мешая друг другу.
Итог:
Поток (thread) определяет последовательность исполнения кода в процессе.
Процесс ничего не исполняет, он просто служит контейнером потоков.
Потоки всегда создаются в контексте какого-либо процесса, и вся их жизнь проходит только в его границах.
Потоки могут исполнять один и тот же код и манипулировать одними и теми же данными, а также совместно использовать описатели объектов ядра, поскольку таблица описателей создается не в отдельных потоках, а в процессах.
Так как потоки расходуют существенно меньше ресурсов, чем процессы, старайтесь решать свои задачи за счет использования дополнительных потоков и избегайте создания новых процессов(но подходите к этому с умом).
