какие задачи выполняет операционная система
# факты | Какие бывают операционные системы?
Когда вы включаете свой компьютер, то первым делом ждете, когда в оперативную память загрузится операционная система. И только потом обращаетесь к необходимым вам приложениям. Большая часть всего, что пользователь делает со своим компьютером, совершается посредством операционной системы. Ее следует рассматривать в качестве управляющего центра компьютера. Большая часть современных персональных компьютеров работает под управлением операционных систем Microsoft Windows. Mac поставляются с уже предустановленной системой OS X, которая до недавнего времени называлась Mac OS X. Многие корпоративные серверы управляются операционными системами Linux и UNIX.
Общей задачей операционной системы является организация аппаратной и программной составляющей компьютера и контроль над ними. Таким образом обеспечивается гибкость и предсказуемость поведения цифрового устройства. Сегодня мы будем говорить об операционной системе настолько компьютера. При этом следует помнить, что и ноутбук, и смартфон, и планшет тоже являются компьютерами по своей сути. Следовательно, хотя принципы работы операционных систем этих устройств могут, разумеется, отличаться в деталях, но в своей основе повторяют те, которые характерны для любого персонального компьютера, сколь бы гигантским или, напротив, миниатюрным он ни был.
Что такое операционная система?
Но существуют и другие устройства, которые операционная система наделяет несколькими важными способностями:
Операционными системами обладают все настольные компьютеры. Наиболее распространены операционные системы семейства Windows, разработанные корпорацией Microsoft. Apple предустанавливает на свои компьютеры собственную операционную систему, о которой речь шла выше. Кроме того, существует огромное семейство UNIX-систем. История их разработки полна выдающимися личностями, инновационными корпорациями и примерами сотрудничества во имя достижения совместной цели. На свете существуют сотни различных операционных систем, ориентированных на выполнение узкоспециальных задач. В их числе операционные системы для больших ЭВМ (мэйнфреймов), роботов, промышленного оборудования и систем реального времени.
Каждое устройство, обладающее операционной системой, обычно позволяет производить изменения в процессе работы. И для этого совсем не нужно переставлять местами микросхемы. Пользователь программно отдает команды, которые затем сообщают аппаратной части устройства, как себя вести в изменившихся условиях.
Для пользователя настольного компьютера это означает возможность ставить обновления безопасности, системные заплатки, дополнительные приложения и даже менять операционную систему. А компьютер при этом остается прежним. Иными словами, вы можете поменять поведение своего компьютера, ничего не меняя в его аппаратной составляющей. Это же касается и современных мобильных телефонов. Вне зависимости от того, на каком устройстве установлена операционная система, она берет на себя контроль над каждой выполняемой им задачей и управление его системными ресурсами.
Функции операционной системы
Первая задача, управление аппаратными и программными ресурсами, крайне важна. Дело в том, что различные программы и методы ввода данных соперничают за внимание центрального процессора (ЦПУ, ЦП, CPU), о принципах работы которого мы уже писали. Им необходима память, пространство накопителя, а также полоса ввода и вывода. Операционная система играет роль хорошего наставника, устраивая все так, чтобы каждое приложение получило необходимые ему ресурсы, и при этом не вступило в противоречие с другими приложениями. Операционная система распределяет ограниченные ресурсы компьютера таким образом, чтобы результат для всех пользователей и всех приложений получился наилучшим. Разумеется, из возможных в данной конфигурации. Компьютер обладает вполне определенной производительностью процессора и объемом памяти, наращивание которой — как нам уже известно — не всегда ведет к росту производительности машины. Операционной системе предстоит наиболее выгодным образом распределять эти и другие ресурсы.
Вторая задача, обеспечение взаимодействия программной и аппаратной части, обретает особую важность с учетом того факта, что современные компьютеры открыты для внесения изменений в их конфигурацию. Средства интерфейса прикладных программ (application program interface, API) позволяют разработчику написать программу на одном компьютере и при этом почти не сомневаться в том, что она будет работать и на другом компьютере такого же типа. Даже в том случае, если объем памяти или емкость накопителя на двух машинах будут отличаться друг от друга.
Операционная система устраивает все так, чтобы приложение продолжало запускаться на данном компьютере даже после того, как будет модифицирована его аппаратная часть или произведены программные обновления. Дело в том, что именно операционная система, а не каждое конкретное приложение, следит за аппаратным обеспечением и распределением его ресурсов. Перед разработчиками операционных систем стоит непростая задача: сделать систему совместимой с оборудованием от тысяч предприятий, выпускающих компьютерные компоненты и периферийные устройства. Современная операционная система способна «узнать» тысячи различных принтеров, жестких дисков и специальных периферийных устройств. Более того, в каждом конкретном случае это оборудование будет сочетаться иным образом.
Типы операционных систем
Важно внести ясность в некоторые тонкости, которые могут затруднить определение типа операционной системы. Существуют многопользовательские операционные системы и системы, поддерживающие сетевые соединения. И это различные операционные системы. Например, Windows 2000 и Novell Netware поддерживали сотни и даже тысячи сетевых соединений. При этом их нельзя считать истинно многопользовательскими. Единственным настоящим пользователем Windows 2000 и Netware является системный администратор. Сетевая поддержка и все удаленные аккаунты пользователей включены в общий план операционной системы, программно определяемый ее администратором.
Компьютерные операционные системы
Начальный загрузчик является маленькой программой, у которой всего одна функция: загрузить в память операционную систему. Это позволит начать работу. В общем случае, загрузчик запускает небольшие программы-драйверы, которые взаимодействуют с различными аппаратными подсистемами и контролируют их. Все это располагается в той же памяти, которая содержит саму операционную систему, пользовательскую информацию и приложения. В движение приводится структура данных, содержащая огромное множество сигналов, индикаторов и синхронизаций, обеспечивающих взаимодействие в пределах и между подсистемами и приложениями компьютера. Затем контроль над компьютером переходит к операционной системе.
На этом мы поставим запятую, поскольку нам предстоит еще поговорить о том, какие группы задач выполняет типичная операционная система. Но это станет темой очередного повествования.
Продолжение следует…
Понятие, значение и основные задачи
операционной системы
Взаимодействие человека и компьютера сегодня стало настолько простым, что работать с ним может даже ребенок. Используя манипулятор мышь, мы можем буквально пальцем указывать компьютеру, что нужно делать. Происходит это благодаря операционной системе.
Как известно, компьютер в современном виде появился далеко не сразу. Первые компьютеры были очень громоздкими и дорогостоящими. Управлять ими могли исключительно профессионалы, четко понимающие все тонкости их устройства и работы. Для управления компьютерами использовались специальные программы, создаваемые при помощи двоичного кода. Windows или чего-нибудь подобного тогда еще не существовало.
С тех пор многое изменилось. Эволюцию прошли как сами компьютеры (аппаратная их часть), так и программы для них. Сегодня ребенок младшего школьного возраста способен за несколько минут научиться решать на компьютере задачи, которые раньше отняли бы кучу времени даже у профессионалов. Взаимодействие человека и компьютера стало настолько простым, что работать с ним могут все. Используя манипулятор мышь (или проще говоря, мышку), мы можем буквально пальцем указывать компьютеру, что и куда нужно скопировать, переместить, вырезать, заменить, переименовать, открыть, закрыть и т.д. Компьютер понимает все наши жесты, переводя их на понятный для себя язык, самостоятельно выполняя расчеты, сохраняя результаты на жестком диске, правильно используя при этом ресурсы процессора, оперативной памяти и других устройств, входящих в состав системы, и не задает никаких лишних вопросов.
Никто из нас уже даже и не задумывается над тем, что еще совсем недавно для того, чтобы заставить компьютер выполнить даже элементарную задачу, нужно было составлять специальные алгоритмы действий. Это в свою очередь требовало особых знаний, дополнительных затрат времени и не доставляло никакого удовольствия.
Сегодня же человек взаимодействует с компьютерным железом не непосредственно, а через специальную программную прослойку, берущую на себя автоматическое решение всех задач по обеспечению слаженной работы устройств компьютера (процессора, оперативной памяти, запоминающего устройства и др.), а также позволяющую человеку управлять ими удобным для себя способом.
Этой программной прослойкой и является операционная система.
Возможно, понять, что такое операционная система, и осознать ее значение в современном компьютере будет легче, если сравнить компьютер с человеком. В таком случае частями тела компьютера будут процессор, материнская плата, оперативная память, запоминающее устройство, блок питания и другие «железки», входящие в его состав (подробнее об устройстве компьютера читайте здесь). Все эти части в сборе представляют собой единый компьютерный организм (тело). Непосредственно общаться с аппаратной частью компьютера человеку очень тяжело (ну что ты возьмешь с простых железок). Интеллектом компьютера является операционная система. Она заставляет все части компьютерного организма правильно взаимодействовать между собой. Она же взаимодействует и с окружающей средой, в частности, с человеком.
Наличие у компьютера операционной системы позволяет пользователю комфортно общаться с компьютером. Ему (пользователю) не приходится иметь дело непосредственно с процессором, оперативной памятью или другим частям организма и упрашивать эти железки что-то сделать. Человек обращается к разуму компьютера, к его операционной системе, которая понимает собеседника «с полуслова» и с легкость заставляет подчиненную ей аппаратную часть компьютера выполнять все просьбы пользователя.
Таким образом, операционная система компьютера решает три важные задачи:
1) обеспечивает функционирование аппаратного обеспечения компьютера как единого целого, управляет ресурсами процессора, оперативной памяти и других устройств системы;
2) взаимодействует с пользователем, интерпретирует его действия (команды) в понятный компьютеру язык и заставляет его выполнить их;
3) позволяет приспосабливать компьютер к решению определенного круга задач путем установки и управления работой соответствующих программ.
Как и человеческий разум, операционную систему можно развивать и совершенствовать, устанавливая дополнительные программы. В нашем примере эти программы можно сравнить со своеобразными новыми навыками и умениями у человека. Например, чтобы научить компьютер играть с вами в шахматы, необходимо установить в операционную систему соответствующую программу – игру «Шахматы». Чтобы работать с текстом, операционную систему необходимо дополнить текстовым процессором Word или какой-нибудь другой аналогичной программой.
Одни и те же задачи могут решаться при помощи разных программ. У пользователя практически всегда есть выбор. В Интернете существует достаточно много каталогов программного обеспечения. Некоторые программы вы можете найти на этом сайте (см. меню сайта).
Для лучшего понимания сообщу, что при создании компьютера порядок действий специалиста-компьютерщика следующий:
1. Физически сложить компьютер, соединив в единое целое материнскую плату, процессор, оперативную память и другие устройства (создать тело компьютера);
2. Установить на компьютер операционную систему (снабдить тело интеллектом);
3. Установить необходимые дополнительные программы (развитие навыков компьютера в нужном пользователю направлении).
Операционная система Windows
Причина заключается в том, что Windows проста и удобна в использовании, в ней просто устанавливать программы, она поддерживает несколько фирменных технологий, в частности DirectX, без которого невозможно бы было играть в компьютерные игры, и т.д.
Компания Microsoft, разрабатывающая эту операционную систему, на продаже лицензий к ней заработала большие деньги. Ее основатель (Бил Гейтс) входит в число самых богатых людей планеты.
Современные версии Windows (XP, Vista, 7, 8) являются универсальными и кроме основных утилит для управления компьютером, уже содержат в своем составе базовое программное обеспечение. После установки этой операционной системы пользователь может решать основные задачи, не устанавливая дополнительные программы.
В частности, смотреть видео и слушать музыку можно при помощи проигрывателя Windows Media, для просмотра страниц Интернета предназначен встроенный браузер Internet Explorer, работать с текстом позволит Блокнот и WordPad и т.д. Но, как уже было сказано выше, одни и те же задачи можно решать при помощи разных программ.
Поэтому если вам не нравится встроенный в операционную систему проигрыватель Windows Media, вы всегда можете установить другой проигрыватель (их существует очень много), вместо Internet Explorer можно установить Firefox, Opera или любой другой браузер, и т.д. Не нужно ограничивать себя использованием только штатных средств Windows. Альтернативных программных решений очень много. О том, как устанавливать программы в Windows, читайте здесь.
Зачем нужна операционная система? Плюсы и минусы 3-х основных ОСей
При использовании современных гаджетов часто можно услышать вопрос об операционной системе, многие люди даже не задумываются что же это такое. Все знают, что на их компьютерах находится ОС, но при объяснении этого понятия часто возникают проблемы. Данная статья поможет разобраться в этом вопросе.
Что такое Операционная Система
Операционная система — это комплект программ, управляющий памятью и процессами компьютера, смартфона или другого устройства и являющийся главной его частью.
ОС выглядит как рабочий стол с визуальным интерфейсом. Благодаря этому пользователи играют в игры, пишут документы и работают, ищут информацию в интернете. Операционная система нужна для того, чтобы решать много разных задач.
Как работает ОС
Когда происходит нажатие кнопки включения компьютера, операционная система загружается. В это время компьютером выполняются такие функции:
Какие задачи выполняет современная ОС
Функции ОС
Какие операционные системы существуют
Microsoft Windows
Это первая операционная система, имеющая интерфейс, к которому привык современный пользователь. Windows была выпущена в 1985 году. До этого существовал MS DOS, имеющий вид оболочки, в которую вводятся команды.
Выглядело это вот так.
А вот так выглядела первая версия Windows.
На данный момент новейшей версией является Windows 10
Преимущества Windows
Недостатки
Linux
Эту ОС выпустили в 1991 году. Попытки конкуренции с Windows оказались неудачными, популярность эта операционная система так и не завоевала.
Плюсы
Минусы
Apple Mac OS X
Эту ОС поддерживает только техника Apple, она не совместима с устройствами других производителей.
Достоинства
Недостатки
ОС для мобильных устройств
Все ОС, о которых говорилось выше разработаны специально для настольных компьютеров и ноутбуков. Телефоны, смартфоны и планшеты имеют свои операционные системы. Они не такие функциональные, но хорошо справляются с основными задачами. Например, можно скачивать и пользоваться приложениями, смотреть фильмы, работать с информацией в интернете и даже создать документ.
В настоящее время существуют:
Автор, специалист в сфере IT и новых технологий.
Получил высшее образование по специальности Фундаментальная информатика и информационные технологии в Московском государственном университете имени М.В. Ломоносова. После этого стал экспертом в известном интернет-издании. Спустя время, решил попробовать писать статьи самостоятельно. Ведет популярный блог на Ютубе и делится интересной информацией из мира технологий.
Что такое операционная система и как она работает?¶
Цель конспекта — последовательно рассмотреть и объяснить принципы устройства и функционирования операционной системы, её основных компонентов и абстракций.
Введение¶
Операционные системы окружают нас повсюду – это основное программное обеспечение персональных компьютеров, серверов, мобильных устройств, сетевых устройств (роутеры, коммутаторы) и даже современных автомобилей (борт-компьютер), телевизоров и прочего. Перечислять можно очень долго, ведь они требуются практически в каждой компьютерной системе.
Любой компьютер представляет собой связанную совокупность: процессора, памяти и устройств ввода-вывода.
Рис. 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. Спасибо за внимание!