Лекции по операционным системам и средам. Типовая структура операционной системы. Создание пользователей и групп

Литература

    Таненбаум Э., Вудхал А. Операционные системы. Разработка и реализация. 3-е изд. – СПб.: Питер, 2007. – 704 с.

    Гордеев А.В. Операционные системы. – СПб.: Питер, 2007. – 416 с.

    Гордеев А.В., Молчанов А.Ю. Системное программное обеспечение. – СПб.: Питер, 2002. – 736 с.

    Харт Д.М. Системное программирование в среде Windows.: пер. с англ. – М.: Издательский дом «Вильямс», 2005. – 529 с.

    Гагарина Л.Г., Кокорева Е.В., Виснадул Б.Д. Технология разработки программного обеспечения. – М.: ИД «ФОРУМ»: ИНФРА-М, 2008. – 400 с.

    Иртегов Д.В. Введение в операционные системы. – СПб.: БХВ-Петербург, 2002. – 624 с.

    Олифер В.Г., Олифер Н.А. Сетевые операционные системы. – СПб.: Питер, 2001. – 544 с.

    Партыка Т.Л., Попов И.И. Операционные системы, среды и оболочки. М.: ФОРУМ: ИНФРА-М, 2007. – 528 с.

    Реймонд С. Искусство программирования для UNIX. – М.: Издательский дом «Вильямс», 2005. – 544 с.

Лекция № 1. Основные понятия

      Системное и прикладное программное обеспечение

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

В составе системного ПО можно выделить две составляющие: базовое и сервисное.

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

Сервисное ПО – программы и программные комплексы, которые расширяют возможности базового ПО и организуют более удобную среду работы пользователя. К сервисному ПО также относятся средства разработки (редакторы) и создания программ (компиляторы и интерпретаторы).

Веб-браузер

Базы данных

Прикладное ПО

Компиляторы

Редакторы

Интерпретаторы

Системное ПО

Операционная система

Машинный язык

Аппаратура

Микроархитектура

Физические устройства

Место операционной системы в общей структуре компьютера показано на рис. 1.1. Самый нижний слой модели – это физические устройства, которые входят в состав компьютера: интегральные микросхемы, платы, источники питания, дисплей, клавиатура и т.д. Отдельные устройства объединяются в функциональные блоки и образуют микроархитектуру компьютера. На микроархитектурном уровне находятся внутренние регистры ЦПУ (центрального процессорного устройства) и тракт данных, включающий арифметико-логическое устройство.

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

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

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

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

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

      Операционные системы

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

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

Примеры операционных систем: UNIX, OS/2, Windows, Linux, QNX, MacOS, BeOS.

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

Более детальный перечень функций приведен ниже:

    Прием от пользователя (или от оператора системы) заданий, или команд, сформулированных на соответствующем языке, и их обработка.

    Распределение памяти.

    Запуск программы (передача ей управления, в результате чего процессор исполняет программу).

    Идентификация всех программ и данных.

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

    Обслуживание всех операций ввода-вывода.

    Обеспечение работы систем управления файлами (СУФ) и/или систем управления базами данных (СУБД), что позволяет резко увеличить эффективность всего программного обеспечения.

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

    Планирование и диспетчеризация задач в соответствии с заданными стратегией и дисциплинами обслуживания.

    Организация механизмов обмена сообщениями и данными между выполняющимися программами.

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

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

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

    Удовлетворение жестким ограничениям на время ответа в режиме реального времени (характерно для операционных систем реального времени).

    Обеспечение работы систем программирования , с помощью которых пользователи готовят свои программы.

    Предоставление услуг на случай частичного сбоя системы.

Операционная система состоит из множества программных модулей. Главный модуль операционной системы называется супервизором (supervisor). В сложных операционных системах он может состоять из нескольких модулей, например супервизора ввода-вывода, супервизора прерываний, супервизора программ, диспетчера задач и т.д.

В литературе также часто используется термин ядро (kernel) операционной системы, который понимается как синоним супервизора.

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

Команда обращения к операционной системе передает ей управление, переводя процессор в привилегированный режим работы. Большинство компьютеров имеют два (и более) режима работы: привилегированный (режим супервизора) и пользовательский . Ресурс может быть выделен вычислительному процессу, обратившемуся к операционной системе с соответствующим запросом, если:

    ресурс свободен и в системе нет запросов от задач более высокого приоритета к этому же ресурсу;

    текущий запрос и ранее выданные запросы допускают совместное использование ресурсов;

    ресурс используется задачей низшего приоритета и может быть временно отобран (разделяемый ресурс).

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

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

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

      Операционные среды

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

Та программная среда, которая непосредственно образуется кодом операционной системы, называется основной, естественной , или нативной (native – по английски «туземец»). Помимо основной операционной среды в операционной системе могут быть организованы (путем эмуляции иной операционной среды) дополнительные программные среды.

Эмуляция (англ. emulation) – воспроизведение программными или аппаратными средствами (либо их комбинацией) работы других программ или устройств. В отличие от симуляции (simulation), которая лишь воспроизводит поведение программы, при эмуляции ставится цель точного моделирования состояния имитируемой системы, для выполнения оригинального машинного кода.

Обычно эмуляцию используют для осуществления следующих целей.

    Создание нового микропроцессора. В этом случае при помощи эмулятора на другом микропроцессоре выполняются команды этого еще не существующего процессора.

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

    Тестирование программ написанных для различных систем.

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

Если в операционной системе организована работа с различными операционными средами, то в такой системе можно выполнять программы, созданные не только для данной, но и для других операционных систем. Например, можно создать программу для работы в среде DOS. Если такая программа все функции, связанные с операциями ввода-вывода и запросами памяти, выполняет не сама, а за счет обращения к системным функциям DOS, то она будет (в абсолютном большинстве случаев) успешно выполняться и в MS DOS, и в OS/2, и в Windows 2000, и даже в Linux.

Операционная система Windows XP позволяет выполнять помимо основных приложений, созданных с использованием Win32API, 16-разрядные приложения для Windows 3.х, 16-разрядные DOS-приложения, 16-разрядные приложения для первой версии OS/2.

Эмуляцию Windows в UNIX можно осуществить с помощью программы WineHQ. Информация по этому вопросу и по загрузке пакета с открытым исходным кодом Wine, позволяющего эмулировать Windows API поверх UNIX, содержится на сайте http :// www . winehq . com .

Необходимо заметить, что WineHQ не является обычным эмулятором. Об этом говорит аббревиатура этой программы: «Wine Is Not an Emulator». Вместо действия в качестве полного эмулятора Wine создает «слой совместимости», обеспечивая альтернативное подсоединение динамически связываемых библиотек (Dynamic Link Library), которые вызывают программы Windows, и выполнение процессов, совместимых с ядром Windows NT.

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

      Операционные оболочки

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

Для преодоления этого недостатка было создано множество программных «оболочек» – shell (по английски – «раковина»).

К ним относятся Norton Commander – программа, созданная как надстройка над DOS, FAR Manager – текстовая оболочка для Windows 95/98/NT/2000/XP, Midnight Commander – программная оболочка системы Linux и т.п. Программные оболочки предлагают пользователю меню, из которого он может выбрать желаемое действие.

В последнее время операционные оболочки активно вытесняются графическими интерфейсами (Graphical User Interface – GUI), например X-Window с различными менеджерами окон – KDE, Gnome и т.п., которые приобретают все большую популярность у пользователей.

По-видимому, операционные оболочки можно рассматривать как нечто промежуточное между интерфейсом командной строки и графическими интерфейсами.

Современный компьютер – сложнейшая аппаратно-программная система. Написание программ для компьютера, их отладка и последующее выполнение представляет собой сложную трудоемкую задачу. Основная причина этого – огромная разница между тем, что удобно для людей, и тем, что удобно для компьютеров. Компьютер понимает только свой, машинный язык (назовем его Я0), а для человека наиболее удобен разговорный или хотя бы язык описания алгоритмов – алгоритмический язык . Проблему можно решить двумя способами. Оба способа связаны с разработкой команд, которые были бы более удобны для человека, чем встроенные машинные команды компьютера. Эти новые команды в совокупности формируют некоторый язык, который назовем Я1.

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

Второй способ – написание программы на языке Я0, которая берет программы, написанные на языке Я1, в качестве входных данных, рассматривает каждую команду по очереди и сразу выполняет эквивалентный набор команд языка Я0. Эта технология не требует составления новой программы на Я0. Она называется интерпретацией , а программа , которая осуществляет интерпретацию, называется интерпретатором .

В подобной ситуации проще представить себе существование гипотетического компьютера или виртуальной машины, для которой машинным языком является язык Я1, чем думать о трансляции и интерпретации. Назовем такую виртуальную машину М1, а виртуальную машину с языком Я0 – М0. Для виртуальных машин можно будет писать программы, как будто они (машины) действительно существуют.

Очевидно, можно пойти дальше – создать еще набор команд, который в большей степени ориентирован на человека и в меньшей степени на компьютер , чем Я1. Этот набор формирует язык Я2 и, соответственно, виртуальную машину М2. Так можно продолжать до тех пор, пока не дойдем до подходящего нам языка уровня n.

Большинство современных компьютеров состоит из двух и более уровней. Уровень 0 – аппаратное обеспечение машины. Электронные схемы этого уровня выполняют программы, написанные на языке уровня 1. Следующий уровень – микроархитектурный уровень.

На этом уровне можно видеть совокупности 8 или 32 (иногда и больше) регистров, которые формируют локальную память и АЛУ ( арифметико-логическое устройство ). Регистры вместе с АЛУ формируют тракт данных, по которому поступают данные. Основная операция этого тракта заключается в следующем. Выбирается один или два регистра, АЛУ производит над ними какую-то операцию, а результат помещается в один из этих регистров. На некоторых машинах работа тракта контролируется особой программой, которая называется микропрограммой. В других машинах такой контроль выполняется аппаратным обеспечением.

Следующий (второй) уровень составляет уровень архитектуры системы команд . Команды используют регистры и другие возможности аппаратуры. Команды формируют уровень ISA ( Instruction Set Architecture ), называемый машинным языком. Обычно машинный язык содержит от 50 до 300 команд, служащих преимущественно для перемещения данных по компьютеру, выполнения арифметических операций и сравнения величин.

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

Новые средства, появившиеся на третьем уровне, выполняются интерпретатором, который работает на втором уровне. Этот интерпретатор был когда-то назван операционной системой . Команды третьего уровня, идентичные командам второго уровня, выполняются микропрограммой или аппаратным обеспечением, но не операционной системой. Иными словами, одна часть команд третьего уровня интерпретируется операционной системой, а другая часть – микропрограммой. Вот почему этот уровень операционной системы считается гибридным.

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

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

Четвертый уровень представляет собой символическую форму одного из языков низкого уровня (обычно ассемблер ). На этом уровне можно писать программы в приемлемой для человека форме. Эти программы сначала транслируются на язык уровня 1, 2 или 3, а затем интерпретируются соответствующей виртуальной или фактически существующей (физической) машиной.

Уровни с пятого и выше предназначены для прикладных программистов, решающих конкретные задачи на языках высокого уровня (C, C++, C#, VBA и др.). Компиляторы и редакторы этих уровней запускаются в пользовательском режиме . На еще более высоких уровнях располагаются прикладные программы пользователей.

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

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

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

1.2. Операционная система, среда и операционная оболочка

Операционные системы (ОС) в современном их понимании (их назначении и сущности) появились значительно позже первых компьютеров (правда, по всей видимости, и исчезнут в этой сущности в компьютерах будущего). Почему и когда появились ОС? Считается 1По другим сведениям, первый компьютер был создан в Англии в 1943 году для расшифровки кодов немецких подводных лодок., что первая цифровая вычислительная машина ENIAC (Electronic Numerical Integrator and Computer ) была создана в 1946 году по проекту "Проект РХ" Министерства обороны США. На реализацию проекта затрачено 500 тыс. долларов. Компьютер содержал 18000 электронных ламп, массу всякой электроники, включал в себя 12 десятиразрядных сумматоров, а для ускорения некоторых арифметических операций имел умножитель и "делитель-извлекатель" квадратного корня. Программирование сводилось к связыванию различных блоков проводами. Конечно, никакого программного обеспечения и тем более операционных систем тогда еще не существовало [ , ].

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

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

  • загрузка нужного транслятора (установка нужных МЛ и др.);
  • запуск транслятора и получение программы в машинных кодах;
  • связывание программы с библиотечными подпрограммами;
  • загрузка программы в оперативную память;
  • запуск программы;
  • вывод результатов работы программы на печатающее или другое периферийное устройство.

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

С целью исключения простоев были предприняты попытки разработки специальных программ – мониторов, прообразов первых операционных систем, которые осуществляли автоматический переход от задания к заданию. Считается, что первую операционную систему создала в 1952 году для своих компьютеров IBM -701 исследовательская лаборатория фирмы General Motors . В 1955 году эта фирма и North American Aviation совместно разработали ОС для компьютера IBM -704.

В конце 50-х годов прошлого века ведущие фирмы изготовители поставляли операционные системы со следующими характеристиками:

  • пакетная обработка одного потока задач;
  • наличие стандартных программ ввода-вывода;
  • возможности автоматического перехода от программы к программе;
  • средства восстановления после ошибок, обеспечивающие автоматическую "очистку" компьютера в случае аварийного завершения очередной задачи и позволяющие запускать следующую задачу при минимальном вмешательстве оператора;
  • языки управления заданиями , предоставляющие пользователям возможность описывать свои задания и ресурсы, требуемые для их выполнения.

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

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


Рис. 1.1.

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

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

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

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

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

Еще одно важное понятие, связанное с операционной системой, относится к реализации пользовательских интерфейсов. Как правило, любая операционная система обеспечивает удобную работу пользователя за счет средств пользовательского интерфейса. Эти средства могут быть неотъемлемой частью операционной среды (например, графический интерфейс Windows или текстовый интерфейс командной строки MS DOS ), а могут быть реализованы отдельной системной программой – оболочкой операционной системы (например, Norton Commander для MS DOS ). В общем случае под оболочкой операционной системы понимается часть операционной среды, определяющая интерфейс пользователя, его реализацию (текстовый, графический и т.п.), командные и сервисные возможности пользователя по управлению прикладными программами и компьютером.

Перейдем к рассмотрению эволюции операционных систем.

Министерство образования и науки Российской Федерации

«Санкт-Петербургский Национальный исследовательский

УТВЕРЖДАЮ

Заведующий кафедрой ИС

“____“ ___________20___ г.

КОНСПЕКТ ЛЕКЦИЙ

Модуль №: _3 _ Теория операционных систем

Тема лекционных занятий: Теория операционных систем

Литература :

Основная :

1. Столингс В. Операционные системы, 4-е изд. М.: "Вильямс", 2004. – 848 с.

2. Таненбаум Э. Современные операционные системы.- СПб.: Питер, 2003 г.– 992 с.

В асимметричных ОС процессоры неравноправны. Обычно существует главный процессор (master) и подчиненные (slave), загрузку и характер работы которых определяет главный процессор.

Системы реального времени

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

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

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

Приведенная классификация ОС не является исчерпывающей

Лекция 3

Определение процессов

В общем случае процесс – это некоторая деятельность, связанная с исполнением программы на процессоре.

При исполнении программ на центральном процессоре чаще всего различают следующие характерные отдельные состояния:

1. порождение - подготавливаются условия для первого исполнения на процессоре

2. активное состояние , или состояние “Счет” - программа исполняется на процессоре

3. ожидание - программа не исполняется на процессоре по причине занятости какого-либо требуемого ресурса

4. готовность - программа не исполняется, но для исполнения предоставлены все необходимые в текущий момент ресурсы, кроме центрального процессора

5. окончание - нормальное или аварийное окончание исполнения программы, после которого процессор и другие ресурсы ей не предоставляются

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

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

Свойства и классификация

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

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

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

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

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

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

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

Программные процессы принято делить на системные и пользовательские . При развитии системного процесса исполняется программа из состава операционной системы. При развитии пользовательского процесса исполняется пользовательская (прикладная) программа.

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

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

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

Предмет: Операционные системы.
Вопрос: №1

ПО — неотъемлемая часть любой ЭВМ, без которой невозможно получить необходимые результаты всевозможных вычислительных операций. Можно все программное обеспечение разделить на классы : ОС и сервисные программы (это специальные системные программы, с помощью которых можно обслуживать как саму ОС, так и подготавливать для работы носители данных, выполнять перекодирование данных и производить некоторые другие работы связанные с обслуживаем ОС), инструментальные языки и среды программирования, прикладные программы.

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

Основные функции ОС:

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

2. прием и исполнение программных запросов на запуск, приостановку, остановку других программ.

4. инициация программы (передача данной конкретной программе управления, в результате чего процессор приступает к её выполнению.)

5. идентификация всех программ и данных 6. организация и управление всеми операциями ввода/вывода.

6. распределение памяти и организация виртуальной памяти. 7. планирование и диспетчеризация задач.

8. организация механизмов обмена сообщениями и данными между выполняющимися программами.

9. защита одной программы от влияния другой.

10. предоставление услуг в случае частичного сбоя системы.

11 обеспечение работы систем программирования.

12. обеспечение работы СУБД.

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

Любая программа имеет дело с некоторыми исходными данными, которые она обрабатывает, порождая в конечном итоге некоторые выходные данные и результаты вычислений. Исходные данные с периферийных устройств попадают в оперативную память, с которой непосредственно работает процессор, выполняя вычисления по программе. Результаты вычислений также должны быть выведены на внешние устройства. Программирование операций ввода/ вывода относится к самым трудоемким задачам. При создании таких программ нужно знать не только архитектуру процессора, но и архитектуру подсистемы ввода/вывода (протоколы обмена данными, алгоритм работы контроллера устройства ввода/вывода). В пятидесятые годы при разработке первых систем программирования прежде всего создавали программные модули для системы ввода/вывода. Благодаря этому при создании прикладных программ программисты могли просто обращаться к соответствующим функциям ввода/вывода. Состав и количество библиотек систем программирования постоянно увеличивались. В конечном итоге возникла ситуация, когда при создании программ в двоичных машинных кодах программистам уже не требовалось знание множества особенностей управления конкретными ресурсами вычислительной системы, а необходимо было только конкретное обращение к некоторой программной подсистеме с целью получения требуемых сервисов. Эта программная подсистема и есть ОС. А набор её функций, сервисов и правил обращения к ним как раз и образует то базовое понятие, которое называется операционной средой .

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

Классификация ОС:

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

В зависимости от особенностей исполь-зуемого алгоритма управления процессором выделяют следующие типы ОС:

Поддержка многозадачности: по числу одновременно выполняемых задач ОС: однозадачные (MSDOS), многозадачные (Unix, Windows). Многозадачные системы подразделяются на три типа в соответствии с использованными при их разработке критериями эффективности: /системы пакетной обработки (ОС ЕС, предназначались для решения задач вычислительного характера, не требующих быстрого получения результатов. В начале работы формируется пакет заданий, каждое задание содержит требования к системным ресурсам; из пакета заданий формируется мульти-программная смесь, т.е. множество одновременно выполняемых задач. После выполнения всего пакета заданий пользователю выдается результат. В настоящее время такие системы почти не используются.); /системы разделения времени (Unix, Windows, призваны исправить основной недостаток систем пакетной обработки – изоляцию пользователя- программиста от процесса выполнения его задач. Каждому пользователю предоставляется терминал, с которого он может вести диалог со своей программой. Каждой задаче выделяется только квант процессорного времени.); /системы реального времени (QNX, RT/11 применяются для управления различными техническими объектами. Способность выдержать заранее заданные интервалы времени между запуском программы и получением результата. Это время называется временем реакции системы. Мультипрограммная смесь представляет собой фиксированный набор заранее разработанных программ, а выбор программы на выполнение осуществляется исходя из текущего состояния объекта или исходя из расписания.)

Поддержка многопользовательского режима: по числу одновременно работающих пользователей: однопользовательские (MSDOS, Windows 3.x), многопользовательские (Unix, Windows на платформе NT). Главное отличие многопольз. систем от однопольз. – наличие средств защиты информации каждого пользователя.

Многопроцессорная обработка: отсутствие или наличие в ОС средств поддержки многопроцессорной обработки. Такие функции имеются (Solaris фирмы Sun, Open Server фирмы Santa Crus Operations, OS/2 фирмы IBM, Windows NT фирмы Microsoft, NetWare фирмы Novell). Данные системы могут классифицироваться по способу организации вычислительного процесса в системе: /Ассиметричная ОС – целиком выполняется только на одном из процессоров системы, распределяя прикладные задачи по остальным процессорам. /Симметричная ОС – полностью децентрализована и использует весь пул процессоров, разделяя их между системными и прикладными задачами.

Поддержка многонитивости: системы поддерживающие и не поддерживающие распараллелива-ния.

По основному архитектурному принципу ОС разделяются на:

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

монолитные (Windows 9.x, OS Linux; используется монолитное ядро, которое компонуется как одна программа, работающая а привилегированном режиме и использующая быстрые переходы от одной процедуры на другую, не требующие переключения из привилегированного режима в пользовательский и наоборот).

Нет похожих постов...

Тема 1. Вычислительная система. Состав вычислительной системы

Одной из основных задач технических дисциплин является подбор средств и методов механизации и автоматизации работ. Автоматизация работ с данными имеет свои особенности и для ее реализации используются особые устройства.

Совокупность устройств, предназначенных для автоматической или автоматизированной обработки данных, называется вычислительной техникой .

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

Состав вычислительной системы называется конфигурацией .

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

Рис. 1. Состав вычислительной системы

Аппаратное обеспечение

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

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

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

Многочисленные интерфейсы, присутствующие в архитектуре любой вычислительной системы, можно условно разделить на две большие группы: последовательные и параллельные .

1. Через последовательный интерфейс данные передаются последовательно, бит за битом, их производительность измеряют битами в секунду (бит/с, Кбит/с, Мбит/с).

2. Через параллельный интерфейс данные передаются одновременно группами битов. Количество битов, участвующих в одной посылке, определяется разрядностью интерфейса, например, восьмиразрядные параллельные интерфейсы передают один байт (8 бит) за один цикл. Параллельные интерфейсы обычно имеют более сложное устройство, чем после­довательные, но обеспечивают более высокую производительность. Их применяют там, где важна скорость передачи данных: для подключения печатающих устройств, устройств ввода графической информации, устройств записи данных на внешний носитель и т. п. Производительность параллельных интерфейсов измеряют бай­тами в секунду (байт/с; Кбайт/с; Мбайт/с).

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

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

Программное обеспечение

Программы - это упорядоченные последовательности команд. Конечная цель любой компьютерной программы - управление аппаратными средствами.

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

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

Рис. 2. Структура программного обеспечения

1. Базовый уровень. Самый низкий уровень программного обеспечения представляет базовое программное обеспечение. Оно отвечает за взаимодействие с базовыми аппаратными средствами. Как правило, базовые программные средства непосредственно входят в состав базового оборудования и хранятся в специальных микросхемах, называемых постоянными запоминающими устройствами (ПЗУ - ReadOnlyMemory, ROM). Программы и данные записываются («прошиваются») в микросхемы ПЗУ на этапе производства и не могут быть изменены в процессе эксплуатации.

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

средства обеспечения пользовательского интерфейса – благодаря им компьютер получает возможность вводить данные в вычис­лительную систему, управлять ее работой и получать результат в удобной для себя форме.

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

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

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

В разработке и эксплуатации служебных программ существует два альтернативных направления:

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

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

4. Прикладной уровень. Программное обеспечение прикладного уровня представ­ляет собой комплекс прикладных программ, с помощью которых на данном рабочем месте выполняются конкретные задания.

Примеры прикладных программных средств

1. Текстовые редакторы.

Ввод и редактировании текстовых данных;

Автоматизация процессов ввода и редактирования.

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

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

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