Что делает операционная система
Обзорная лекция № 34
для студентов специальности
«Программное обеспечение информационных технологий»
доцента кафедры ИВТ, к.т.н. Ливак Е.Н.
Основные понятия, факты
Основные функции ОС. Классификация ОС. Принципы построения ОС. Архитектура ОС. Микроядерные и монолитные ОС. Технология микроядра. Тенденции в проектировании ОС. Сетевые ОС.
Восстановление работы компьютера после аварии (в том числе загрузка операционной системы). Разработка системных модулей в составе ОС. Основы проектирования ОС.
Назначение и функции операционной системы
ОС управляет всеми устройствами компьютерной системы (процессорами, оперативной памятью, дисками, клавиатурой, монитором, принтерами, сетевыми устройствами и др.) и обеспечивает пользователя удобным интерфейсом для работы с аппаратурой.
Другими словами, две основные функции (назначение) ОС :
1) предоставлять пользователю некую расширенную виртуальную машину, с которой легче работать (легче программировать), чем непосредственно с аппаратурой реального компьютера или реальной сети;
Для пользователя (приложения) работа с различными ресурсами (процессор, память, диски, периферийные устройства) выглядит так, как будто эти ресурсы находятся в его полном распоряжениии, при этом в одной системе может выполняться одновременно несколько приложений, каждое со своим собственным набором ресурсов. В этом смысле говорят, что ОС реализует виртуальную машину, предоставляя приложениям средства многозадачности.
2) управлять ресурсами вычислительной системы.
Поэтому в специальной литературе ОС представляется всегда двояко:
как расширенная виртуальная машина и
· прием от пользователя (оператора) заданий или команд, сформулированных на соответствующих языках, и их обработка;
· загрузка в ОП программ и их исполнение;
· инициация программы (передача ей управления);
· прием и исполнение программных запросов на запуск, приостановку, остановку других программ; организация взаимодействия между задачами;
· идентификация всех программ и данных;
· обеспечение работы системы управления файлами и/или систем управления БД;
· обеспечение режима мультипрограммирования (многозадачности);
· планирование и диспетчеризация задач;
· обеспечение функций по организации и управлению операциями ввода/вывода;
· удовлетворение жестким ограничениям на время ответа в режиме реального времени (для соответствующих ОС);
· управление памятью, организация виртуальной памяти;
· организация механизмов обмена сообщениями и данными между выполняющимися программами;
· защита одной программы от влияния другой; обеспечение сохранности данных;
· аутентификация, авторизация и другие средства обеспечения безопасности;
· предоставление услуг на случай частичного сбоя системы;
· обеспечение работы систем программирования;
· параллельное исполнение нескольких задач.
Функции ОС автономного компьютера обычно группируются в соответствии с типами локальных ресурсов, которыми управляет ОС. Такие группы называют подсистемами.
Наиболее важные из них
ü подсистема управления процессами,
ü подсистема управления памятью,
ü подсистема управления файлами,
ü подсистема управления внешними устройствами,
ü подсистема пользовательского интерфейса,
ü подсистема защиты данных и администрирования.
Замечание. Часто под ОС понимается то ПО, которое запускается в режиме ядра (привилегированном режиме, режиме супервизора).
Классификация операционных систем
Операционные системы различаются
ü особенностями реализации внутренних алгоритмов управления основными ресурсами компьютера (процессорами, памятью, устройствами),
ü особенностями использованных методов проектирования,
ü типами аппаратных платформ,
ü критериями эффективности,
ü особенностями реализации сетевых решений
ü и многими другими свойствами.
Особенности алгоритмов управления ресурсами
От эффективности алгоритмов управления ресурсами компьютера во многом зависит эффективность всей ОС в целом. Поэтому, характеризуя ОС, часто приводят важнейшие особенности реализации функций ОС по управлению процессорами, памятью, внешними устройствами
По режиму обработки задач различают ОС, обеспечивающие однопрограммный или мультипрограммный режим работы.
Однопрограммные ОС в основном выполняют функцию предоставления пользователю виртуальной машины, делая более простым и удобным процесс взаимодействия пользователя с компьютером.
Они включают средства управления периферийными устройствами, средства управления файлами, средства общения с пользователем.
Мультипрограммные ОС, кроме функций однопрограммных ОС, управляют разделением совместно используемых ресурсов, таких как процессор, оперативная память, файлы и внешние устройства.
По числу одновременно работающих пользователей ОС делятся на:
Главным отличием многопользовательских систем от однопользовательских является наличие средств защиты информации каждого пользователя от несанкционированного доступа других пользователей.
. Следует заметить, что не всякая многозадачная система является многопользовательской, и не всякая однопользовательская ОС является однозадачной.
Важнейшим разделяемым ресурсом является процессорное время. Способ распределения процессорного времени между несколькими одновременно существующими в системе процессами (или нитями) во многом определяет специфику ОС. Среди множества существующих вариантов реализации многозадачности можно выделить две группы алгоритмов:
При невытесняющей многозадачности активный процесс выполняется до тех пор, пока он сам, по собственной инициативе, не отдаст управление операционной системе для того, чтобы та выбрала из очереди другой готовый к выполнению процесс.
При вытесняющей многозадачности решение о переключении процессора с одного процесса на другой принимается операционной системой, а не самим активным процессом.
Важным свойством операционных систем является возможность распараллеливания вычислений в рамках одной задачи.
ОС подразделяются на поддерживающие и неподдерживающие многонитевость.
Многонитевая ОС разделяет процессорное время не между задачами, а между их отдельными ветвями (нитями).
Мультипроцессорная обработка – это способ организации вычислительного процесса в системах с несколькими процессорами, при котором несколько задач (процессов, потоков) могут одновременно выполняться на разных процессорах системы.
Мультипроцессирование приводит к усложнению всех алгоритмов управления ресурсами.
В современных ОС введены функций поддержки многопроцессорной обработки данных. Такие функции имеются в операционных системах Solaris 2.x фирмы Sun, Open Server 3.x компании Santa Crus Operations, OS/2 фирмы IBM, Windows NT фирмы Microsoft и NetWare 4.1 фирмы Novell.
Многопроцессорные ОС могут классифицироваться по способу организации вычислительного процесса в системе с многопроцессорной архитектурой: асимметричные ОС и симметричные ОС.
Асимметричная ОС целиком выполняется только на одном из процессоров системы, распределяя прикладные задачи по остальным процессорам.
Симметричная ОС полностью децентрализована и использует все процессоры, разделяя их между системными и прикладными задачами.
Особенности аппаратных платформ
На свойства операционной системы непосредственное влияние оказывают аппаратные средства, на которые она ориентирована.
По типу аппаратуры различают операционные системы
Наряду с ОС, ориентированными на совершенно определенный тип аппаратной платформы, существуют операционные системы, специально разработанные таким образом, чтобы они могли быть легко перенесены с компьютера одного типа на компьютер другого типа, так называемые мобильные ОС (аппаратно-независимые). Наиболее ярким примером такой ОС является популярная система UNIX.
В зависимости от выбранного критерия эффективности операционные системы делятся на:
§ системы пакетной обработки (например, OC EC),
§ системы разделения времени (UNIX, VMS),
§ системы реального времени (QNX, RT/11).
Системы пакетной обработки служат для решения задач в основном вычислительного характера, не требующих быстрого получения результатов.
Главной целью и критерием эффективности таких систем является максимальная пропускная способность, то есть решение максимального числа задач в единицу времени.
Схема функционирования систем пакетной обработки данных :
ü в начале работы формируется пакет заданий, каждое задание содержит требование к системным ресурсам;
ü из этого пакета заданий формируется мультипрограммная смесь, то есть множество одновременно выполняемых задач. Для одновременного выполнения выбираются задачи, предъявляющие отличающиеся требования к ресурсам, так, чтобы обеспечивалась сбалансированная загрузка всех устройств вычислительной машины; (в мультипрограммной смеси желательно одновременное присутствие вычислительных задач и задач с интенсивным вводом-выводом).
Таким образом, выбор нового задания из пакета заданий зависит от внутренней ситуации, складывающейся в системе, то есть выбирается «выгодное» задание.
Þ таких ОС невозможно гарантировать выполнение того или иного задания в течение определенного периода времени.
В системах пакетной обработки переключение процессора с выполнения одной задачи на выполнение другой происходит только в случае, если активная задача сама отказывается от процессора, например, из-за необходимости выполнить операцию ввода-вывода. Поэтому одна задача может надолго занять процессор, что делает невозможным выполнение интерактивных задач.
Þ взаимодействие пользователя с вычислительной машиной, на которой установлена система пакетной обработки, сводится к тому, что он приносит задание, отдает его диспетчеру-оператору, а в конце дня после выполнения всего пакета заданий получает результат. Очевидно, что такой порядок снижает эффективность работы пользователя.
Системы разделения времени призваны исправить недостаток систем пакетной обработки данных.
Каждому пользователю системы разделения времени предоставляется терминал, с которого он может вести диалог со своей программой.
Каждой задаче выделяется только квант процессорного времени,
Þ ни одна задача не занимает процессор надолго, и время ответа оказывается приемлемым.
Если квант выбран достаточно небольшим, то у всех пользователей, одновременно работающих на одной и той же машине, складывается впечатление, что каждый из них единолично использует машину.
Системы разделения времени обладают меньшей пропускной способностью, чем системы пакетной обработки, так как
1) на выполнение принимается каждая запущенная пользователем задача, а не та, которая «выгодна» системе,
2) увеличивается время работы, так как выполняется более частое переключение процессора с задачи на задачу.
Таким образом, критерием эффективности систем разделения времени является не максимальная пропускная способность, а удобство и эффективность работы пользователя.
Системы реального времени применяются для управления различными техническими объектами, такими, например, как станок, спутник, научная экспериментальная установка или технологическими процессами, такими, как гальваническая линия, доменный процесс и т.п.
Существует предельно допустимое время, в течение которого должна быть выполнена та или иная программа, управляющая объектом, в противном случае может произойти авария: спутник выйдет из зоны видимости, экспериментальные данные, поступающие с датчиков, будут потеряны, толщина гальванического покрытия не будет соответствовать норме.
Таким образом, критерием эффективности для систем реального времени является их способность выдерживать заранее заданные интервалы времени между запуском программы и получением результата (управляющего воздействия).
Для этих систем мультипрограммная смесь представляет собой фиксированный набор заранее разработанных программ, а выбор программы на выполнение осуществляется исходя из текущего состояния объекта или в соответствии с расписанием плановых работ.
Особенности архитектуры ОС
При описании операционной системы часто указываются основные концепции, положенные в ее основу.
К базовым концепциям относятся:
· способы построения ядра ОС;
· построение на базе ООПодхода;
· наличие нескольких прикладных сред;
· распределенная организация ОС.
По способам построения ядра ОС подразделяются на
Большинство ОС использует монолитное ядро, которое компонуется как одна программа, работающая в привилегированном режиме и использующая быстрые переходы с одной процедуры на другую, не требующие переключения из привилегированного режима в пользовательский и наоборот.
Построение ОС на базе объектно-ориентированного подхода дает возможность использовать все его достоинства, хорошо зарекомендовавшие себя на уровне приложений, внутри операционной системы, а именно:
· аккумуляцию удачных решений в форме стандартных объектов, возможность создания новых объектов на базе имеющихся с помощью механизма наследования,
· хорошую защиту данных за счет их инкапсуляции во внутренние структуры объекта, что делает данные недоступными для несанкционированного использования извне,
· структуризованность системы, состоящей из набора хорошо определенных объектов.
Наличие нескольких прикладных сред дает возможность в рамках одной ОС одновременно выполнять приложения, разработанные для нескольких ОС.
Многие современные операционные системы поддерживают одновременно прикладные среды MS-DOS, Windows, UNIX (POSIX), OS/2 или хотя бы некоторого подмножества из этого популярного набора. Концепция множественных прикладных сред наиболее просто реализуется в ОС на базе микроядра.
Распределенная организация операционной системы позволяет упростить работу пользователей и программистов в сетевых средах.
В распределенной ОС реализованы механизмы, которые дают возможность пользователю представлять и воспринимать сеть в виде традиционного однопроцессорного компьютера.
Архитектура (структура) операционной системы
Напомним, необходимые основные моменты.
Микропроцессоры Intel x 86/ Pentium аппаратно поддерживают 4 уровня привилегий (режима): 0..3.
Большинство ОС поддерживают двухуровневую систему привилегий: привилегированный режим (режим ядра, пространство ядра) и пользовательский режим (пространство пользователя). (Например, Windows NT, UNIX)
В режиме ядра ( kernel mode ) выполняются все разрешенные инструкции, в ходе выполнения доступна вся оперативная память и любые регистры. На время выполнения кода ОС микропроцессор переключается в режим ядра.
В пользовательском режиме ( user mode ) доступ к регистрам и памяти ограничен. Приложению не будет позволено работать с памятью за пределами набора адресов, установленного ОС, или обращаться напрямую к регистрам устройств.
Под архитектурой ОС обычно понимают структурную организацию ОС на основе программных модулей.
Современные ОС представляют собой хорошо структурированные модульные системы.
Единой архитектуры ОС не существует, но существуют универсальные подходы к структурированию ОС.
Наиболее общим подходом к структуризации ОС является подразделение модулей две группы:
Þ модули, выполняющие вспомогательные функции ОС.
Модули ядра выполняют базовые функции ОС
· управление устройствами ввода-вывода.
Вспомогательные модули ОС
Остальные модули ОС выполняют полезные, но менее обязательные функции. Например, к таким вспомогательным модулям могут быть отнесены программы архивирования, дефрагментации диска и т.п. Вспомогательные модули ОС оформляются либо в виде приложений, либо в виде библиотек процедур и фугкций.
Обычно вспомогательные модули подразделяются на следующие группы:
· библиотеки процедур и функций различного назначения (библиотека математических функций, библиотека функций ввода-вывода и т.д.);
Обратим внимание, вспомогательные модули ОС обращаются к функциям ядра, как и обычные приложения, посредством системных вызовов.
Вспомогательные модули, в отличие от модулей ядра, являются транзитными.
Привилегии ОС обеспечиваюся тем, что выполнение некоторых инструкций в пользовательском режиме запрещается. Например, выполнение инструкции доступа к памяти для приложения разрешается, если происходит обращение к области памяти, отведенной данному приложению, и запрещается при обращении к областям памяти, занимаемым ОС или другими приложениями.
Что такое операционная система и как она работает?¶
Цель конспекта — последовательно рассмотреть и объяснить принципы устройства и функционирования операционной системы, её основных компонентов и абстракций.
Введение¶
Операционные системы окружают нас повсюду – это основное программное обеспечение персональных компьютеров, серверов, мобильных устройств, сетевых устройств (роутеры, коммутаторы) и даже современных автомобилей (борт-компьютер), телевизоров и прочего. Перечислять можно очень долго, ведь они требуются практически в каждой компьютерной системе.
Любой компьютер представляет собой связанную совокупность: процессора, памяти и устройств ввода-вывода.
Рис. 1. Общее представление архитектуры компьютера
Например, процессор умеет выполнять только четыре базовых типа инструкции:
Получается, что непосредственное создание и управление сложными процессами (приложениями) на аппаратуре становится крайне неэффективным и неудобным. То есть, например, создать и запустить на исполнение программу-браузер исключительно с помощью данных инструкций становится крайне сложной задачей. Особенно при условии, что помимо этого процесса (браузера) существуют и другие процессы, которые также пользуются ресурсами вычислительной машины.
Возникает вопрос — Как заставить всё это слаженно и эффективно работать, сделав пользование компьютером удобным как для обычного человека, так и для прикладного программиста?
Чтобы ответить на этот вопрос более последовательно, немного заглянем туда, откуда всё начиналось.
Немного истории¶
На заре компьютерной эпохи, первые компьютеры представляли собой огромные блоки (занимавшие большие комнаты), в которых размещались основные его компоненты: процессор, память и устройства ввода-вывода. И всего можно было выделить два состояния, в котором, в реальном времени находится компьютерная система:
Важная идея! Так как вычисления производятся быстрее, чем непосредственный ввод-вывод данных, разработчикам пришла идея о том, что к ресурсам можно допускать не одного пользователя (процесс), а множество, предоставляя им способ независимо друг от друга загружать (ввод) и получать (вывод) данные через отдельные терминалы, чтобы более эффективно использовать ресурсы компьютера и вычислительные модули не простаивали в ожидании ввода/вывода.
Далее, термины: процесс, приложение идут как синонимы термину пользователь ресурсов.
Зачем нужна Операционная Система?¶
Существует три ключевых элемента операционной системы:
Фунции ОС¶
Основные абстракции ОС¶
Положение ОС в многоуровневой иерархии организации компьютера¶
Современный компьютер можно представить в виде иерархии уровней (от двух и более), где на каждом уровне выделяются свои абстракции и набор возможных функций.
Рис. 2. Основные уровни устройства ПК
Операционная система является одним из таких уровней и представляет собой интерфейс («прослойку») между пользователем ресурсов компьютера и самими ресурсами, управляющий взаимодействиями как между пользователь-ресурс, так и пользователь-пользователь, устройство-устройство.
В целом, общей схемой это можно отобразить так:
Рис. 3. Место ОС в компьютерной системе
Интерфейс — набор правил и средств взаимодействия двух систем. Иными словами способ взаимодействия.
Kernel space — адресное пространство ядра ОС, в котором процессы имеют привилегированный доступ к ресурсам компьютера и другим процессам.
User space — адресное пространство, отведённое для пользовательских процессов (приложений), то есть не имеющих привилегированный доступ к ресурсам.
Как операционная система загружается в компьютер?¶
Процесс загрузки операционной системы и вообще компьютера имеет несколько этапов, основные из которых:
Что делает ядро ОС?¶
Ядро ОС – центральная часть операционной системы. По сути, это и есть ОС.
Это реакционный механизм, то есть его работа заключается исключительно в реакции на какие-либо события для их последующей обработки.
Процессорное время измеряется в тиках или секундах. Часто бывает полезно измерение процессорного времени в процентах от мощности процессора, которое называется загрузкой процессора.
Прерывания¶
Эта часть больше относится непосредственно к аппаратной части, но этот механизм стоит освятить, так как именно это основной аппаратный механизм реализации ОС.
Прерывание – сигнал остановки последовательного выполнения программы, для обработки запроса или реакции на событие.
Чтобы получить код обработки прерывания, в памяти расположена специальная таблица обработчиков прерываний, в которой для каждого типа прерывания содержится указатель на тот участок памяти, где расположен соответствующий код обработки данного прерывания.
Инициализация данной таблицы первично осуществялется BIOS’ом в соответствии с архитектурой процессора. После, её инициализирует операционная система для дополнения этой таблицы какими-либо своими прерываниями.
Как приложения взаимодействуют с ОС?¶
Взаимодействие процессов с ОС осуществляется с помощью системных вызовов.
Механизм системных вызовов — это интерфейс, который предоставляет ядро ОС (kernel space) пользовательским процессам (user space).
Системный вызов – программное прерывание, обращение пользовательского процесса к ядру операционной системы для выполнения какой-либо операции.
Например, чтобы выполнить обычное действие, с точки зрения прикладного программиста, – вывод строки в консоль, необходимо загрузить исполнимый код в оперативную память и передать его процессору. С помощью системных вызовов, запускающий процесс (уже запущенный процесс, из которого вызывается новый процесс — одни процессы порождают другие) обращается к соответствующим сервисам ОС и передаёт им управление для выполнения этих функций.
То есть с помощью системных вызовов выполняются те рутинные действия, которые раньше осуществлялись вручную, — загрузка кода программы в память, передача его на исполнение процессору и прочее.
Схема организации ОС расширяется добавлением интерфейса для взаимодействия приложений с ядром ОС — механизмом системных вызовов:
Рис 4. Интерфейс системных вызовов
Как оборудование взаимодействует с ОС?¶
Оборудование взаимодействует с ОС с помощью аппаратных прерываний. И одна из функций ОС — абстрагирование оборудования.
Что это значит?¶
Рис 5. Интерфейс драйверов
Сервисы ОС¶
Функции ОС заключены в её сервисах (модулях). Реализация организации которых зависит от архитектуры ядра. Рассмотрим на примере монолитного ядра:
Рис 6. Основные компоненты ОС
Основные¶
Как говорилось в части о загрузке ОС, реализация планировщика осуществляется с помощью прерывания по таймеру — каждый квант времени происходит прерывание, которое передаёт управление ОС и она анализирует состояние всех процессов и что с каким процессом сделать: запустить, приостановить, завершить или изменить приоритет.
Дополнительные¶
Основные абстракции¶
Процесс¶
Компьютерная программа сама по себе — лишь пассивная последовательность инструкций. В то время как процесс — непосредственное выполнение этих инструкций.
В рамках ОС, это абстракция, которая предоставляет иллюзию персональной машины. То есть то, что данный исполнимый код полностью владеет всеми вычислительными ресурсами машины.
Состояние (контекст) процесса¶
Изнутри, процесс можно условно разделена на четыре части: Stack, Heap (кучу), Text (код) и данные (Data).
Рис 7. Сегменты памяти процесса
Состояния исполнения¶
Когда процесс выполняется, он проходит через разные состояния. Эти этапы могут различаться в разных операционных системах.
Общая картина выглядит так:
Рис 8. Состояния исполнения процесса
Информация о процессе¶
Рис 9. Process Control Block
Информацию о процессах в целом, ОС хранит в специальной таблице процессов.
Поток¶
Процесс может делиться на потоки (threads). Они обеспечивают параллелизм, то есть одновременное исполнение нескольких потоков инструкций, на уровне программы.
Поток выполнения (нить, thread) — последовательность исполнения инструкций. Ход исполнения программы**.
Процесс является контейнером ресурсов (адресное пространство, процессорное время и тд), а поток – последовательность инструкций, которые исполняются внутри этого контейнера.
Реализация потоков выполнения и процессов в разных операционных системах отличается друг от друга, но в большинстве случаев поток выполнения находится внутри процесса.
Рис 10. Многопоточный процесс
Потоки, существующие в рамках одного процесса, в его адресном пространстве, могут совместно использовать ресурсы процесса, например такие как память или файл. Тогда как процессы не разделяют этих ресурсов, так как каждый существует в своём адресном пространстве.
Также поток называют легковесный процесс.
Сегодня потоки широко применяются в работе серверов и многопроцессорных устройств с общей памятью.
Рассмотрим на примере утилиты htop.
Рис 11. Вывод утилиты мониторинга процессов htop
PID — Process ID; Уникальное число идентификатор для каждого процесса
TGID — Tread Group ID; Индентификатор группы потоков
Чем хороши потоки¶
Это очень широкое и многогранное понятие. Но если выделить наиболее общее, то получится, что файл — это универсальный системный интерфейс для обращения к тем или иным данным.
А файловая система — это система имён. То есть возможность выделять те или иные объекты данных и присваивать им имена, а также выделять иерархию.
По другому, файл и файловую систему можно также представить как структуру данных и связи между этими структурами.
Реализация многозадачности¶
Осуществляется при помощи следующих механизмов:
Переключение контекста¶
Контекст процесса — это состояние регистров, при его выполнении на процессоре.
Но происходит прерывание и «процесс 1» снимается с выполнения на процессоре, чтобы вместо него выполнялся «процесс 2». Следовательно, нужно заполнить регистры уже теми данными, что относятся к «процессу 2».
Однако, «процесс 1» ещё не выполнился полностью, и для дальшейнего исполнения ему нужны те данные, что хранились в регистрах при прерываний, то есть необходим его контекст. Операционная система должна обеспечивать подобные смены контекстов без потери данных.
В целом, смена контекста происходит между состояниями «Готов», «Ожидает» и «Исполняется».
Критические секции и блокировки¶
Одна из основных проблем с которыми может столкнуться такая система с вытесняющей многозадачностью — порядок доступа процессов к их общим ресурсам.
Возникают, так называемые, критические секции – участки исполняемого кода программы, в которых производится доступ к общему ресурсу (данным или устройству), который не должен быть одновременно использован более чем одним потоком выполнения.
Рис 12. Критические секции в потоках процесса
Может возникнуть такая ситуация, когда один поток, «потребитель», начинает использовать данные, которые должен подготовить другой поток, «производитель», но этот производитель ещё не закончил их подготовку и снялся с исполнения. Таким образом, «потребитель» использует некорректные данные, что с высокой долей вероятности приведёт к ошибке.
Данная проблема решается с помощью механизма блокировок – когда поток, получивший доступ к ресурсу, блокирует его, не давая другим потокам пользоваться этим захваченным ресурсом до разблокировки. То есть, если один поток хочет захватить (заблокировать) ресурс, а он уже занят другим потоком, то первый будет ожидать пока этот другой поток-владелец сам не освободит этот ресурс.
Все эти механизмы обеспечиваются операционной системой
Чтобы лучше это понять, можно обратиться к аналогии с туалетом — им может пользоваться только один человек. Если другой хочет им воспользоваться, то ему нужно дождаться когда его освободит уже им пользующийся.
Рис 13. Аналогия пробки на перекрёстке с Deadlock
Deadlock — ситуация, при которой несколько потоков находятся в состоянии ожидания ресурсов, занятых друг другом, и ни один из них не может продолжать свое выполнение.
Пример Deadlock’a на псевдокоде¶
| Шаг | Поток 1 | Поток 2 |
|---|---|---|
| 0 | Хочет захватить A и B, начинает с A | Хочет захватить A и B, начинает с B |
| 1 | lock(A) — Захват А | lock(B) — Захват B |
| 2 | lock(B) — Ожидает освобождения ресурса B | lock(A) — Ожидает освобождения ресурса A |
| … | DEADLOCK –> Далее код не выполнится, так как произошел Deadlock в коде выше | |
| n | unlock(A) — освобждение A | unlock(B) — освобждение B |
| n+1 | unlock(B) — освобждение B | unlock(A) — освобждение A |
Схематично, Deadlock можно изобразить так:
Адреса и управление памятью¶
Тема адресации очень сложна, поэтому здесь я лишь проведу краткий обзор общей технологии.
Чтобы отобразить логический адрес в физический, существует специальный аппаратный механизм.
Начав с базовой архитектуры и небольшой истории развития компьютера, мы разобрали причины появления такого комплекса программ как операционная система и выделили главную её цель – обеспечение согласованного доступа к ресурсам компьютера множеству пользователям этих ресурсов, а также управление как самими ресурсами, так и пользователями.
Основные механизмы (сервисы)¶
Рассмотрели основные механизмы реализации этой цели: Scheduler (планировщик), Inter Process Communication (межпроцессное взаимодействие), Memory manager (управление памятью) и другие.
Абстракции¶
Ряд абстракций, которые вводит ОС: Process (процесс), Thread (поток исполнения), File (файл).
Заключение¶
Ух, и вот наконец-то я закончил писать этот материал. Надеюсь, вам было интересно и полезно.
Если вы хотите как-то дополнить материал, дать критику по его содержанию или структуре – пожалуйста, пишите в Issue данного репозитория поднимая ту или иную тему для обсуждения и доработки.
Также, вы можете сделать Fork данного репозитория и после внести свои дополнения с помощью Pull Request. Спасибо за внимание!


















