Дисциплина операционные системы что изучает

Что изучает предмет “Операционные системы”

Преподавание курса “Операционные системы” (ОС) ставит перед собой цель предоставить студентам систематическое и целостное представление о значении и месте операционных систем, об основных способах инсталяции, настроек и поддержки программных продуктов.

Курс предполагает постановку следующих задач:

По завершении курса “Операционные системы” студенты должны быть осведомлены о назначении, функциях и основных составных частях ОС; понимать разницу между разными ОС, знать о порядке и вариантах инсталляции ОС; иметь представление о технологиях работы с глобальными и локальными сетями; иметь знания о том, как пользоваться различными интерфейсами различных операционных систем по курсу «Операционные системы, среды и оболочки».

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

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

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

Второй составляющей вычислительной системы является программное обеспечение. Все программное обеспечение разделяют на две части: прикладное и системное. К прикладному программному обеспечению, как правило, относятся разнообразные банковские и прочие бизнес-программы, игры, текстовые процессоры и т.п. Под системным программным обеспечением принято понимать те программы, которые способствуют функционированию и разработке прикладных программ. Необходимо отметить, что такое разделение на прикладное и системное программное обеспечение можно считать условным. Например, для обычного пользователя, который не лезет в дебри программирования, Microsoft Word будет являться системной программой, а для программиста, это – приложение. Компилятор языка Си для обычного программиста – системная программа, а для системного – прикладная. Такое туманное разграничение позволяет, тем не менее, выделять отдельную и общую часть системного программного обеспечения – операционную систему.

Каково же определение операционной системы? И несмотря на то, что все мы пользуемся и эксплуатируем операционные системы каждый день, далеко не каждый из нас может дать точное определение данному явлению. Далее следуют основные точки зрения по этому вопросу.

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

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

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

Еще одно свойство операционных систем – это способность защищать пользователя и программы.

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

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

Как мы можем заметить, четкого и конкретного определения того, что есть операционная система нет.

Теперь можно рассмотреть классификацию ОС. Существует сравнительно небольшое количество классификаций: по назначению, по режиму обработки задач, по способу взаимодействия с системой и по способам построения.

Обратимся к свойствам ОС.

Логично, что свойства операционных систем определяются требованиями, необходимыми для их функционирования.

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

Источник

Что такое операционная система и как она работает?¶

Цель конспекта — последовательно рассмотреть и объяснить принципы устройства и функционирования операционной системы, её основных компонентов и абстракций.

Введение¶

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

Любой компьютер представляет собой связанную совокупность: процессора, памяти и устройств ввода-вывода.

Дисциплина операционные системы что изучает. Смотреть фото Дисциплина операционные системы что изучает. Смотреть картинку Дисциплина операционные системы что изучает. Картинка про Дисциплина операционные системы что изучает. Фото Дисциплина операционные системы что изучает

Рис. 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
1lock(A) — Захват Аlock(B) — Захват B
2lock(B) — Ожидает освобождения ресурса Block(A) — Ожидает освобождения ресурса A
DEADLOCK –> Далее код не выполнится, так как произошел Deadlock в коде выше
nunlock(A) — освобждение Aunlock(B) — освобждение B
n+1unlock(B) — освобждение Bunlock(A) — освобждение A

Схематично, Deadlock можно изобразить так:

Дисциплина операционные системы что изучает. Смотреть фото Дисциплина операционные системы что изучает. Смотреть картинку Дисциплина операционные системы что изучает. Картинка про Дисциплина операционные системы что изучает. Фото Дисциплина операционные системы что изучает

Адреса и управление памятью¶

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

Чтобы отобразить логический адрес в физический, существует специальный аппаратный механизм.

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

Основные механизмы (сервисы)¶

Рассмотрели основные механизмы реализации этой цели: Scheduler (планировщик), Inter Process Communication (межпроцессное взаимодействие), Memory manager (управление памятью) и другие.

Абстракции¶

Ряд абстракций, которые вводит ОС: Process (процесс), Thread (поток исполнения), File (файл).

Заключение¶

Ух, и вот наконец-то я закончил писать этот материал. Надеюсь, вам было интересно и полезно.

Если вы хотите как-то дополнить материал, дать критику по его содержанию или структуре – пожалуйста, пишите в Issue данного репозитория поднимая ту или иную тему для обсуждения и доработки.

Также, вы можете сделать Fork данного репозитория и после внести свои дополнения с помощью Pull Request. Спасибо за внимание!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *