Набор инструкций процессора хранящийся на диске или другом накопителе информации

Содержание

  1. Определение операционной системы. Базовые понятия ОС
  2. Как работает процессор?
  3. Два основных компонента процессора
  4. Устройство управления
  5. Арифметико-логическое устройство
  6. Хранение информации — регистры и память
  7. Регистры
  8. Память (ОЗУ)
  9. Команды (инструкции)
  10. Тактирование процессора
  11. Выполнение инструкций
  12. Поток инструкций
  13. Инструкция процессора, что это такое, для чего он нужен и его типы
  14. Что такое инструкция?
  15. Инструкции по адресации
  16. Типы инструкций в ЦП
  17. Типы данных и множественность инструкций

Определение операционной системы. Базовые понятия ОС

Операционная система (operating system) — комплекс управляющих и обрабатывающих программ, которые,

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

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

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

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

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

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

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

На однопроцессорных компьютерах выполняется 1 процесс, остальные в ждут в очереди.

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

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

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

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

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

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

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

Источник

Как работает процессор?

Инструмент проще, чем машина. Зачастую инструментом работают руками, а машину приводит в действие паровая сила или животное.

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

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

Два основных компонента процессора

Устройство управления

Устройство управления (УУ) помогает процессору контролировать и выполнять инструкции. УУ сообщает компонентам, что именно нужно делать. В соответствии с инструкциями он координирует работу с другими частями компьютера, включая второй основной компонент — арифметико-логическое устройство (АЛУ). Все инструкции вначале поступают именно на устройство управления.

Существует два типа реализации УУ:

  • УУ на жёсткой логике (англ. hardwired control units). Характер работы определяется внутренним электрическим строением — устройством печатной платы или кристалла. Соответственно, модификация такого УУ без физического вмешательства невозможна.
  • УУ с микропрограммным управлением (англ. microprogrammable control units). Может быть запрограммирован для тех или иных целей. Программная часть сохраняется в памяти УУ.

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

Арифметико-логическое устройство

Это устройство, как ни странно, выполняет все арифметические и логические операции, например сложение, вычитание, логическое ИЛИ и т. п. АЛУ состоит из логических элементов, которые и выполняют эти операции.

Большинство логических элементов имеют два входа и один выход.

Ниже приведена схема полусумматора, у которой два входа и два выхода. A и B здесь являются входами, S — выходом, C — переносом (в старший разряд).

Схема арифметического полусумматора

Хранение информации — регистры и память

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

Регистры

Регистр — минимальная ячейка памяти данных. Регистры состоят из триггеров (англ. latches/flip-flops). Триггеры, в свою очередь, состоят из логических элементов и могут хранить в себе 1 бит информации.

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

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

  • RS-триггер: сохраняет своё состояние при нулевых уровнях на обоих входах и изменяет его при установке единице на одном из входов (Reset/Set — Сброс/Установка).
  • JK-триггер: идентичен RS-триггеру за исключением того, что при подаче единиц сразу на два входа триггер меняет своё состояние на противоположное (счётный режим).
  • T-триггер: меняет своё состояние на противоположное при каждом такте на его единственном входе.
  • D-триггер: запоминает состояние на входе в момент синхронизации. Асинхронные D-триггеры смысла не имеют.

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

Принцип действия RS-триггера

Память (ОЗУ)

ОЗУ (оперативное запоминающее устройство, англ. RAM) — это большая группа этих самых регистров, соединённых вместе. Память у такого хранилища непостоянная и данные оттуда пропадают при отключении питания. ОЗУ принимает адрес ячейки памяти, в которую нужно поместить данные, сами данные и флаг записи/чтения, который приводит в действие триггеры.

Прим. перев. Оперативная память бывает статической и динамической — SRAM и DRAM соответственно. В статической памяти ячейками являются триггеры, а в динамической — конденсаторы. SRAM быстрее, а DRAM дешевле.

Команды (инструкции)

Команды — это фактические действия, которые компьютер должен выполнять. Они бывают нескольких типов:

  • Арифметические: сложение, вычитание, умножение и т. д.
  • Логические: И (логическое умножение/конъюнкция), ИЛИ (логическое суммирование/дизъюнкция), отрицание и т. д.
  • Информационные: move , input , outptut , load и store .
  • Команды перехода: goto , if . goto , call и return .
  • Команда останова: halt .

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

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

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

Группу инструкций принято называть набором команд (англ. instruction set).

Тактирование процессора

Быстродействие компьютера определяется тактовой частотой его процессора. Тактовая частота — количество тактов (соответственно и исполняемых команд) за секунду.

Частота нынешних процессоров измеряется в ГГц (Гигагерцы). 1 ГГц = 10⁹ Гц — миллиард операций в секунду.

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

Выполнение инструкций

Инструкции хранятся в ОЗУ в последовательном порядке. Для гипотетического процессора инструкция состоит из кода операции и адреса памяти/регистра. Внутри управляющего устройства есть два регистра инструкций, в которые загружается код команды и адрес текущей исполняемой команды. Ещё в процессоре есть дополнительные регистры, которые хранят в себе последние 4 бита выполненных инструкций.

Ниже рассмотрен пример набора команд, который суммирует два числа:

  1. LOAD_A 8 . Это команда сохраняет в ОЗУ данные, скажем, . Первые 4 бита — код операции. Именно он определяет инструкцию. Эти данные помещаются в регистры инструкций УУ. Команда декодируется в инструкцию load_A — поместить данные 1000 (последние 4 бита команды) в регистр A .
  2. LOAD_B 2 . Ситуация, аналогичная прошлой. Здесь помещается число 2 ( 0010 ) в регистр B .
  3. ADD B A . Команда суммирует два числа (точнее прибавляет значение регистра B в регистр A ). УУ сообщает АЛУ, что нужно выполнить операцию суммирования и поместить результат обратно в регистр A .
  4. STORE_A 23 . Сохраняем значение регистра A в ячейку памяти с адресом 23 .

Вот такие операции нужны, чтобы сложить два числа.

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

У процессора есть механизм сохранения инструкций в кэш. Как мы выяснили ранее, за секунду процессор может выполнить миллиарды инструкций. Поэтому если бы каждая инструкция хранилась в ОЗУ, то её изъятие оттуда занимало бы больше времени, чем её обработка. Поэтому для ускорения работы процессор хранит часть инструкций и данных в кэше.

Если данные в кэше и памяти не совпадают, то они помечаются грязными битами (англ. dirty bit).

Поток инструкций

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

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

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

Источник

Инструкция процессора, что это такое, для чего он нужен и его типы

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

Процессоры миллионов компьютеров по всему миру знают только одно — непрерывно выполнять инструкции. А что такое инструкция? Читай дальше что бы узнать.

Что такое инструкция?

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

  • Биты инструкций: эти биты указывают, какую инструкцию будет выполнять ЦП, и поэтому путь, по которому инструкция будет следовать для выполнения, также называется кодом операции.
  • Биты адресации: указывают, по какому адресу памяти хранятся данные.
  • Биты режима: биты режима указывают, как выполняется инструкция, они используются, когда есть несколько способов выполнить инструкцию или есть разные условия.

Если вы хотите узнать, как процессор выполняет инструкции, мы рекомендуем статью » Вот как ваш процессор выполняет инструкции, которые дает ему программное обеспечение ”В HardZone, на том же сайте.

Инструкции по адресации

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

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

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

Типы инструкций в ЦП

Вот краткое изложение наиболее распространенных инструкций, используемых различными процессорами. Эти инструкции являются общими для всех регистров и наборов инструкций, независимо от того, являются ли они x86, ARM, MIPS, PowerPC и так далее. Также не имеет значения, является ли набор инструкций RISC или CISC.

  • Арифметические манипуляции инструкции — это те, которые выполняют операции математической обработки, такие как сложение, вычитание, умножение и деление. А также более сложные операции, такие как тригонометрические формулы, квадратные корни, степени.
  • Игровой автомат логические инструкции — это второй тип инструкций, выполняемых ALU, на самом деле они представляют собой двоичные операции, имитирующие работу логических вентилей. То есть AND, OR, XOR, NAND, NOR, XNOR и NOT.
  • Инструкции по манипулированию битами основаны на манипулировании битами идемной строки с помощью таких инструкций, как сдвиг бита влево или вправо, изменение порядка или их переключение.
  • Инструкции по перемещению данных отвечает за перемещение данных из одной части памяти в другую, из одной памяти в другую, из процессора в память и из памяти в процессор.
  • Инструкции по управлению программой те, которые активируются при выполнении определенных условий, таких как
  • Игровой автомат инструкции по переходу — это те, которые указывают, что программа переходит не к следующему адресу памяти, а к конкретному адресу памяти, который отмечен инструкцией перехода.

Типы данных и множественность инструкций

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

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

Источник

Инструмент проще, чем машина. Зачастую инструментом работают руками, а машину приводит в действие паровая сила или животное.

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

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

Два основных компонента процессора

Устройство управления

Устройство управления (УУ) помогает процессору контролировать и выполнять инструкции. УУ сообщает компонентам, что именно нужно делать. В соответствии с инструкциями он координирует работу с другими частями компьютера, включая второй основной компонент — арифметико-логическое устройство (АЛУ). Все инструкции вначале поступают именно на устройство управления.

Существует два типа реализации УУ:

  • УУ на жёсткой логике (англ. hardwired control units). Характер работы определяется внутренним электрическим строением — устройством печатной платы или кристалла. Соответственно, модификация такого УУ без физического вмешательства невозможна.
  • УУ с микропрограммным управлением (англ. microprogrammable control units). Может быть запрограммирован для тех или иных целей. Программная часть сохраняется в памяти УУ.

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

Арифметико-логическое устройство

Это устройство, как ни странно, выполняет все арифметические и логические операции, например сложение, вычитание, логическое ИЛИ и т. п. АЛУ состоит из логических элементов, которые и выполняют эти операции.

Большинство логических элементов имеют два входа и один выход.

Ниже приведена схема полусумматора, у которой два входа и два выхода. A и B здесь являются входами, S — выходом, C — переносом (в старший разряд).

Схема арифметического полусумматора в статье «Как работает процессор?»

Схема арифметического полусумматора

Хранение информации — регистры и память

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

Регистры

Регистр — минимальная ячейка памяти данных. Регистры состоят из триггеров (англ. latches/flip-flops). Триггеры, в свою очередь, состоят из логических элементов и могут хранить в себе 1 бит информации.

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

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

  • RS-триггер: сохраняет своё состояние при нулевых уровнях на обоих входах и изменяет его при установке единице на одном из входов (Reset/Set — Сброс/Установка).
  • JK-триггер: идентичен RS-триггеру за исключением того, что при подаче единиц сразу на два входа триггер меняет своё состояние на противоположное (счётный режим).
  • T-триггер: меняет своё состояние на противоположное при каждом такте на его единственном входе.
  • D-триггер: запоминает состояние на входе в момент синхронизации. Асинхронные D-триггеры смысла не имеют.

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

Иллюстрация принципа действия RS-триггера в статье «Как работает процессор?»

Принцип действия RS-триггера

Память (ОЗУ)

ОЗУ (оперативное запоминающее устройство, англ. RAM) — это большая группа этих самых регистров, соединённых вместе. Память у такого хранилища непостоянная и данные оттуда пропадают при отключении питания. ОЗУ принимает адрес ячейки памяти, в которую нужно поместить данные, сами данные и флаг записи/чтения, который приводит в действие триггеры.

Прим. перев. Оперативная память бывает статической и динамической — SRAM и DRAM соответственно. В статической памяти ячейками являются триггеры, а в динамической — конденсаторы. SRAM быстрее, а DRAM дешевле.

Команды (инструкции)

Команды — это фактические действия, которые компьютер должен выполнять. Они бывают нескольких типов:

  • Арифметические: сложение, вычитание, умножение и т. д.
  • Логические: И (логическое умножение/конъюнкция), ИЛИ (логическое суммирование/дизъюнкция), отрицание и т. д.
  • Информационные: move, input, outptut, load и store.
  • Команды перехода: goto, if ... goto, call и return.
  • Команда останова: halt.

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

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

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

Группу инструкций принято называть набором команд (англ. instruction set).

Тактирование процессора

Быстродействие компьютера определяется тактовой частотой его процессора. Тактовая частота — количество тактов (соответственно и исполняемых команд) за секунду.

Частота нынешних процессоров измеряется в ГГц (Гигагерцы). 1 ГГц = 10⁹ Гц — миллиард операций в секунду.

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

Выполнение инструкций

Инструкции хранятся в ОЗУ в последовательном порядке. Для гипотетического процессора инструкция состоит из кода операции и адреса памяти/регистра. Внутри управляющего устройства есть два регистра инструкций, в которые загружается код команды и адрес текущей исполняемой команды. Ещё в процессоре есть дополнительные регистры, которые хранят в себе последние 4 бита выполненных инструкций.

Ниже рассмотрен пример набора команд, который суммирует два числа:

  1. LOAD_A 8. Это команда сохраняет в ОЗУ данные, скажем, <1100 1000>. Первые 4 бита — код операции. Именно он определяет инструкцию. Эти данные помещаются в регистры инструкций УУ. Команда декодируется в инструкцию load_A — поместить данные 1000 (последние 4 бита команды) в регистр A.
  2. LOAD_B 2. Ситуация, аналогичная прошлой. Здесь помещается число 2 (0010) в регистр B.
  3. ADD B A. Команда суммирует два числа (точнее прибавляет значение регистра B в регистр A). УУ сообщает АЛУ, что нужно выполнить операцию суммирования и поместить результат обратно в регистр A.
  4. STORE_A 23. Сохраняем значение регистра A в ячейку памяти с адресом 23.

Вот такие операции нужны, чтобы сложить два числа.

Шина

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

Иллюстрация работы шины в статье «Как работает процессор?»

Кэш

У процессора есть механизм сохранения инструкций в кэш. Как мы выяснили ранее, за секунду процессор может выполнить миллиарды инструкций. Поэтому если бы каждая инструкция хранилась в ОЗУ, то её изъятие оттуда занимало бы больше времени, чем её обработка. Поэтому для ускорения работы процессор хранит часть инструкций и данных в кэше.

Если данные в кэше и памяти не совпадают, то они помечаются грязными битами (англ. dirty bit).

Поток инструкций

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

Иллюстрация потока инструкций в статье «Как работает процессор?»

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

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

Если хотите узнать о процессорах больше, посмотрите, какие бывают популярные архитектуры: CISC, RISC, MISC и другие и виды.

Перевод статьи «How does a CPU work?»

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Рис 1.1. Типы ресурсов, доступных в операционной системе

Рис 1.1. Типы ресурсов, доступных в операционной системе

В этом случае используется квантование моментов использования
ресурса по времени.

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

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

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

1.1.1. Типовая структура операционной системы

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

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

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

Рис 1.2. Структура ядра типичной операционной системы

Рис 1.2. Структура ядра типичной операционной системы

Файловая система выполняет преобразование данных, хранимых на внешних запоминающих устройствах (например, на дисковых накопителях или на flash-накопителях}, в логические объекты — файлы и каталоги. Также файловая система выполняет функции разграничения доступа к файлам и каталогам при обращении
к ним со стороны системы управления сеансами или при использовании файловой системы через интерфейс системных вызовов.

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

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

Примером чисто виртуального устройства может служить «черная дыра» /dev/null в UNIX-системах. Вся информация, записываемая в данное устройство, пропадает, т.е. оно может быть использовано для поглощения данных, несущественных для решаемой задачи,

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

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

1.1.2. Классификация операционных систем

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

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

Рассмотрим особенности этих типов ОС более подробно.

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

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

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

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

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

Вследствие неразличимости пользователей система управления
сеансами и файловая система в значительной мере упрощаются.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • создание и уничтожение процессов — загрузка программы в память, создание информационного окружения и передача управления процессу при его создании, удаление информационного окружения и выгрузка процесса из памяти при его уничтожении;

  • распределение системных ресурсов между процессами — планирование выполнения процессов, формирование очереди процессов и управление приоритетами процессов в очереди;

  • межпроцессное взаимодействие — распределение общих данных между процессами или пересылка управляющих воздействий между одновременно выполняемыми процессами;

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

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

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

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

В учебнике рассматриваются только базовые средства ОС UNIX,
при этом не уделяется никакого внимания различным расширениям, например графическим средствам Х Windows System.

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ut ducimus odit accusamus, illum quas magni provident odio praesentium commodi sint, porro harum, minus cupiditate architecto culpa aut ex dolore officia.

Содержание:

Введение

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

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

1. ОБЩАЯ ХАРАКТЕРИСТИКА ОПЕРАЦИОННЫХ СИСТЕМ

1.1 Основные понятия

При решении задач в среде операционной системы (ОС) пользователь должен определить данные и инструментальное (программное) средство для их обработки. В большинстве случаев решение задачи пользователя сводится к последовательному применению нескольких инструментов (например, для ввода данных, сортировки, слияния, вывода). Операционная система предоставляет пользователю базовый набор инструментов и среду для хранения данных, а также средства задания последовательности использования инструментов. Время, в течение которого пользователь решает последовательно одну или несколько задач, пользуясь при этом средствами, предоставляемыми ОС, называется сеансом. В начале любого сеанса пользователь идентифицирует себя, а в конце указывает на необходимость завершения сеанса. Последовательность использования инструментов, записанная на некотором формальном языке, называется заданием, сам язык — языком управления заданиями. Выполнение заданий в большинстве ОС производится командным интерпретатором. Обычно пользователю предоставляется некоторый интерфейс общения с командным интерпретатором, команды которого вводятся с клавиатуры, а результат их выполнения выводится на экран. Такой интерфейс ассоциируется с логическим понятием терминала — совокупности устройства ввода (обычно клавиатуры) и устройства вывода (дисплея, выводящего текстовую информацию). В настоящее время наиболее употребительным является графический интерфейс пользователя (GUI). Операционная система выполняет функции управления аппаратными ресурсами, их распределения между выполняемыми программами пользователя и формирует некоторую среду, содержащую данные, необходимые для выполнения программ. Такая среда в дальнейшем будет называться информационным окружением. В информационное окружение входят все данные и объекты, обрабатываемые ОС, которые оказывают существенное влияние на выполнение программы. Далее будут приведены примеры информационного окружения различного характера. Программа (в общем случае) — набор инструкций процессора, хранящийся на диске (или другом накопителе информации). Чтобы программа могла быть запущена на выполнение, ОС должна создать среду выполнения — информационное окружение, необходимое для выполнения программы. После этого ОС перемещает исполняемый код и данные программы в оперативную память и инициирует выполнение программы. Используя понятия программы, данных и информационного окружения, можно определить задачу как совокупность программ и данных, являющихся частью информационного окружения. Выполняемая программа образует процесс. Процесс — совокупность информационного окружения и области памяти, содержащей исполняемый код и данные программы. Обычно в памяти, адресуемой ОС, одновременно может работать большое число процессов. Естественно, что на однопроцессорных компьютерах возможно одновременное выполнение программного кода только одного процесса, поэтому часть процессов находится в режиме ожидания, а один из процессов — в режиме выполнения. Процессы при этом образуют очередь, ОС передает управление первому процессу в очереди, затем следующему и т. д. Процесс, имеющий потенциальную возможность получить входные данные от пользователя с клавиатуры и вывести результаты своей работы на экран, называется процессом переднего плана, процесс, выполняемый без непосредственного взаимодействия с пользователем, — фоновым процессом. В ходе работы процессы используют вычислительную мощность процессора, оперативную память, обращаются к внешним файлам, внутренним данным ядра ОС. Все эти объекты входят в информационное окружение процесса и называются ресурсами. Ресурсом может быть, как физический объект, к которому ОС предоставляет доступ — процессор, оперативная память, дисковые накопители, так и логический объект, который существует только в пределах самой ОС, например, таблица выполняемых процессов или сетевых подключений. Необходимость в управлении ресурсами со стороны ОС вызвана, в первую очередь, тем, что ресурсы ограничены (по объему, времени использования, количеству обслуживаемых пользователей и т. п.). В этой ситуации ОС либо управляет лимитами ресурсов, предотвращая их исчерпание, либо предоставляет средства обработки ситуаций, связанных с исчерпанием ресурсов. Лимиты многих ресурсов, заданные в ОС по умолчанию, могут изменяться затем администратором системы (например, к таким ресурсам можно отнести количество файлов, одновременно открытых пользователем). В случае, если ОС позволяет одновременно использовать ресурсы нескольким процессам, ресурсы такой ОС подразделяют на типы, указанные на рис. 1.1. Неразделяемые ресурсы могут быть использованы на заданном отрезке времени только одним процессом, при этом другие процессы не имеют доступа к этому ресурсу до полного освобождения ресурса занявшим его процессом. Примером такого ресурса может служить файл, открытый на запись в исключительном режиме — все попытки использовать этот файл другими процессами (даже на чтение) завершаются неудачей. Разделяемые ресурсы могут использоваться несколькими процессами. При этом к таким ресурсам возможен одновременный доступ процессов (например, к часам, при помощи которых определяется текущее системное время). Некоторые разделяемые ресурсы не могут обеспечить одновременный доступ, но позволяют использовать их несколькими процессами, не дожидаясь момента полного освобождения ресурса. В этом случае используется квантование моментов использования ресурса по времени. В каждый квант времени один процесс получает полные и исключительные права на использование данного ресурса. При этом величина такого кванта заведомо много меньше полного времени, в течение которого ресурс используется одним процессом, т. е. времени, необходимого процессу для решения задачи пользователя. Примером ресурса с доступом с разделением времени может служить процессорное время в многозадачных ОС — в каждый квант времени выполняется определенное число инструкций процесса, после чего управление передается следующему процессу и начинается выполнение его инструкций. Процессы, ожидающие предоставления доступа к разделяемому ресурсу, организуются в очередь с приоритетом. Процессы с одинаковым приоритетом получают доступ к ресурсу последовательными квантами, при этом некоторые процессы имеют более высокий приоритет и получают доступ к ресурсу чаще.

Рис. 1.1. Типы ресурсов ОС

1.2 Назначение и функции операционных систем

Операционные системы относятся к системному программному обеспечению. Как известно, все программное обеспечение разделяется на системное и прикладное. К системному программному обеспечению принято относить такие программы и комплексы программ, которые являются общими, без которых невозможно выполнение или создание других программ. История появления и развития системного программного обеспечения началась с того момента, когда люди осознали, что любая программа требует операций ввода-вывода данных. Это произошло в далекие 50-е годы прошлого столетия. Собственно, операционные системы появились чуть позже. Действительно, если мы не будем иметь возможности изменять исходные данные и получать результаты вычислений, то зачем вообще эти вычисления? Очевидно, что исходные данные могут вводиться различными способами. На практике используются самые разнообразные устройства и методы. Например, мы можем вводить исходные значения с клавиатуры, задавать нужные действия или функции с помощью указателя мыши, считывать записи из файла, снимать оцифрованные значения с датчиков и т. д. Часть исходных данных может быть передана в программу через область памяти, в которую предварительно другая программа занесла свои результаты вычислений. Способов много. Главное — выполнить в программе некоторые действия, связанные с получением исходных данных. Аналогично, и вывод результатов может быть организован, например, на соответствующие устройства и в форме, удобной для восприятия ее человеком. Либо результаты расчетов будут отправляться программой на какие-нибудь исполнительные устройства, которые управляются компьютером. Наконец, мы можем организовать запись полученных значений на некие устройства хранения данных (с целью их дальнейшей обработки). Программирование операций ввода-вывода относится к одной из самых трудоемких областей создания программного обеспечения. Здесь речь идет не об использовании операторов типа READ или WRITE в языках высокого уровня. Речь идет о необходимости создать подпрограмму в машинном виде, уже готовую к выполнению на компьютере, а не написанную с помощью некоторой системы программирования (систем программирования тогда еще не было), подпрограмму, вместо обычных вычислений управляющую тем устройством, которое должно участвовать в операциях ввода исходных данных или вывода результатов. При наличии такой подпрограммы программист может обращаться к ней столько раз, сколько операций ввода-вывода с этим устройством ему требуется. Для выполнения этой работы программисту недостаточно хорошо знать архитектуру вычислительного комплекса и уметь создавать программы на языке ассемблера. Он должен отлично знать и интерфейс, с помощью которого устройство подключено к центральной части компьютера, и алгоритм функционирования устройства управления устройства ввода-вывода. Очевидно, что имело смысл создать набор подпрограмм управления операциями ввода-вывода и использовать его в своих программах, чтобы не заставлять программистов каждый раз заново программировать все эти операции. С этого и началась история системного программного обеспечения. Впоследствии набор подпрограмм ввода-вывода стали организовывать в виде специальной библиотеки ввода-вывода, а затем появились и сами операционные системы. Основной причиной их появления было желание автоматизировать процесс подготовки вычислительного комплекса к выполнению программы. В 50-е годы взаимодействие пользователей с вычислительным комплексом было совершенно иным, чем нынче. Программист-кодер (от англ. coder — кодировщик) — специально подготовленный специалист, знающий архитектуру компьютера и язык(и) программирования, — по заказу составлял текст программы, часто по уже готовому алгоритму, разработанному программистом-алгоритмистом. Текст этой программы затем отдавался оператору, который набирал его на специальных устройствах и переносил на соответствующие носители. Чаще всего в качестве носителей использовались перфокарты или перфолента. Далее колода с перфокартами (перфолента) передавалась в вычислительный зал, где для вычислений по этой программе требовалось выполнить следующие действия.

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

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

3. Оператор загружал в оперативную память компьютера полученные двоичные коды оттранслированной программы и подгружал двоичные коды тех системных подпрограмм, которые реализовывали управление операциями ввода-вы- вода. После этого готовая программа, расположенная в памяти, могла сама считывать исходные данные и осуществлять необходимые вычисления. В случае обнаружения ошибок на одном из этих этапов или после анализа полученных результатов весь цикл необходимо было повторить. Для автоматизации труда программиста (кодера) стали разрабатывать специальные алгоритмические языки высокого уровня, а для автоматизации труда оператора вычислительного комплекса была разработана специальная управляющая программа, загрузив которую в память один раз оператор мог ее далее использовать неоднократно и более не обращаться к процедуре программирования ЭВМ через пульт оператора. Именно эту управляющую программу и стали называть операционной системой. Со временем на нее стали возлагать все больше и больше задач, она стала расти в объеме. Прежде всего разработчики стремились к тому, чтобы операционная система как можно более эффективно распределяла вычислительные ресурсы компьютера, ведь в 60-е годы операционные системы уже позволяли организовать параллельное выполнение нескольких программ. Помимо задач распределения ресурсов появились задачи обеспечения надежности вычислений. К началу 70-х годов диалоговый режим работы с компьютером стал преобладающим, и у операционных систем стремительно начали развиваться интерфейсные возможности. Напомним, что термином интерфейс (interface) обозначают целый комплекс спецификаций, определяющих конкретный способ взаимодействия пользователя с компьютером. На сегодняшний день можно констатировать, что операционная система (ОС) представляет собой комплекс системных управляющих и обрабатывающих программ, которые, с одной стороны, выступают как интерфейс между аппаратурой компьютера и пользователем с его задачами, а с другой стороны, предназначены для наиболее эффективного расходования ресурсов вычислительной системы и организации надежных вычислений. Можно попробовать перечислить основные функции операционных систем:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Рис. 1.2. Взаимодействие пользователя и его программ с компьютером через операционную систему.

1.3 Понятия вычислительного процесса и ресурса в операционных системах

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

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

В последующие годы задачей стали называть единицу работы, для выполнения которой предоставляется центральный процессор. Вычислительный процесс может включать в себя несколько задач. Концепция процесса преследует цель выработать механизмы распределения и управления ресурсами. Понятие ресурса, также, как и понятие процесса, является, пожалуй, основным при рассмотрении операционных систем. Термин ресурс обычно применяется по отношению к многократно используемым, относительно стабильным и часто недостающим объектам, которые запрашиваются, задействуются и освобождаются в период их активности. Другими словами, ресурсом называется всякий объект, который может распределяться внутри системы. Ресурсы могут быть разделяемыми, когда несколько процессов используют их одновременно (в один и тот же момент времени) или параллельно (попеременно в течение некоторого интервала времени), а могут быть и неделимыми (рис. 1.3).

Рис. 1.3. Классификация ресурсов.

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

2. УПРАВЛЕНИЕ ВВОДОМ-ВЫВОДОМ В ОПЕРАЦИОННЫХ СИСТЕМАХ

2.1 Основные концепции организации ввода-вывода в операционных системах

Побудительной причиной, в конечном итоге приведшей разработчиков к созданию системного программного обеспечения, в том числе операционных систем, стала необходимость предоставить программам средства обмена данными с внешними устройствами, которые бы не требовали непосредственного включения в каждую программу двоичного кода, управляющего устройствами ввода-вывода. Напомним, что программирование ввода-вывода является наиболее сложным и трудоемким, требующим очень высокой квалификации. Поэтому код, реализующий операции ввода-вывода, сначала стали оформлять в виде системных библиотечных процедур, а потом и вовсе вывели из систем программирования, включив в операционную систему. Это позволило не писать такой код в каждой программе, а только обращаться к нему — системы программирования стали генерировать обращения к системному коду ввода-вывода. Таким образом, управление вводом- выводом — это одна из основных функций любой операционной системы. С одной стороны, организация ввода-вывода в различных операционных системах имеет много общего. С другой стороны, реализация ввода-вывода в ОС так сильно отличается от системы к системе, что очень нелегко выделить и описать именно основные принципы реализации этих функций. Проблема усугубляется еще и тем, что в большинстве ныне используемых систем эти моменты вообще, как правило, подробно не описаны (исключением являются только системы Linux и FreeBSD, для которых имеются комментированные исходные тексты), а детально описываются только функции API, реализующие ввод-вывод. Другими словами, для тех же систем Windows от компании Microsoft мы воспринимаем подсистему ввода- вывода как «черный ящик». Известно, как можно и нужно использовать эту подсистему, но детали ее внутреннего устройства остаются неизвестными. Поэтому в данной главе мы рассмотрим только основные идеи и концепции. Наконец, поскольку такой важный ресурс, как внешняя память, в основном реализуется на устройствах ввода-вывода с прямым доступом, а к ним, прежде всего, относятся накопители на магнитных дисках, мы также рассмотрим логическую структуру диска, начальную стадию процесса загрузки операционной системы, кэширование операций ввода-вывода, оптимизацию дисковых операций.

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

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

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

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

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

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

2. Супервизор ввода-вывода получает запросы на ввод-вывод от супервизора задач или от программных модулей самой операционной системы.

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

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

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

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

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

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

2.2 Взаимодействие системы ввода-вывода в операционных системах

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

• состав устройств ввода-вывода и способы их подключения;

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

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

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

• области памяти для хранения информации о текущем состоянии устройства ввода-вывода и параметрах, определяющих режимы работы устройства;

• данные о текущем процессе, который работает с данным устройством;

• адреса тех областей памяти, которые содержат данные, собственно и участвующие в операциях ввода-вывода (получаемые при операциях ввода данных и выводимые на устройство при операциях вывода данных). Эти информационные структуры часто называют таблицами ввода-вывода, хотя они, в принципе, могут быть организованы и в виде списков. Каждая операционная система ведет свои таблицы ввода-вывода, их состав (и количество, и назначение каждой таблицы) может сильно отличаться. В некоторых операционных системах вместо таблиц создаются списки, хотя использование статических структур данных для организации ввода-вывода, как правило, приводит к более высокому быстродействию. Здесь очень трудно вычленить общие составляющие, тем более что для современных операционных систем подробной документации на эту тему крайне мало, разве что воспользоваться материалами ныне устаревших ОС. Тем не менее попытаемся это сделать, опираясь на идеи семейства простых, но эффективных операционных систем реального времени, разработанных фирмой Hewlett Packard для своих мини-ЭВМ. Исходя из принципа управления вводом-выводом исключительно через супервизор операционной системы и учитывая, что драйверы устройств ввода-вывода используют механизм прерываний для установления обратной связи центральной части с внешними устройствами, можно сделать вывод о необходимости создания по крайней мере трех системных таблиц. Первая таблица (или список) содержит информацию обо всех устройствах ввода- вывода, подключенных к вычислительной системе. Назовем ее условно таблицей оборудования (equipment table), а каждый элемент этой таблицы пусть называется UCB (Unit Control Block — блок управления устройством ввода-вывода). Каждый элемент UCB таблицы оборудования, как правило, содержит следующую информацию об устройстве:

• тип устройства, его конкретная модель, символическое имя и характеристики устройства;

• способ подключения устройства (через какой интерфейс, к какому разъему, какие порты и линия запроса прерывания используются и т. д.);

• номер и адрес канала (и подканала), если такие используются для управления устройством;

• информация о драйвере, который должен управлять этим устройством, адреса секции запуска и секции продолжения драйвера;

• информация о том, используется или нет буферизация при обмене данными с устройством, «имя» (или просто адрес) буфера, если такой выделяется из системной области памяти;

• установка тайм-аута и ячейки для счетчика тайм-аута;

• состояние устройства;

• поле указателя для связи задач, ожидающих устройство;

• возможно, множество других сведений.

Поясню перечисленное. Поскольку во многих операционных системах драйверы могут обладать свойством реентерабельности (напомним, это означает, что один и тот же экземпляр драйвера может обеспечить параллельное обслуживание сразу нескольких однотипных устройств), то в элементе UCB должна храниться либо непосредственно сама информация о текущем состоянии устройства и сами переменные для реентерабельной обработки, либо указание на место, где такая информация может быть найдена. Наконец, важнейшим компонентом элемента таблицы оборудования является указатель на дескриптор той задачи, которая в настоящий момент использует данное устройство. Если устройство свободно, то поле указателя будет иметь нулевое значение. Если же устройство уже занято и рассматриваемый указатель не нулевой, то новые запросы к устройству фиксируются посредством образования списка из дескрипторов задач, ожидающих данное устройство. Вторая таблица предназначена для реализации еще одного принципа виртуализации устройств ввода-вывода — принципа независимости от устройства. Желательно, чтобы программисту не приходилось учитывать конкретные параметры (и/или возможности) того или иного устройства ввода-вывода, которое установлено (или не установлено) в компьютер. Для него должны быть важными только самые общие возможности, характерные для данного класса устройств ввода-вывода. Например, принтер должен уметь выводить (печатать) символы или графические изображения. А накопитель на магнитных дисках — считывать или записывать порцию данных по указанному адресу, то есть в координатах C-H-S (Cylinder-Head-Sector — номера цилиндра, головки и сектора) или по порядковому номеру блока данных. Хотя чаще всего программист и не использует прямую адресацию при работе с магнитными дисками, а работает на уровне файловой системы. Однако в таком случае уже разработчики системы управления файлами не должны зависеть от того, каких типа и модели накопитель используется в данном компьютере, и кто является его производителем (например, HDD IBM IC35L 120AVV207-0, WD1200JB или еще какой-нибудь). Важным должен быть только сам факт существования накопителя, имеющего некоторое количество цилиндров, головок чтения-записи и секторов на дорожке магнитного диска. Упомянутые значения количества цилиндров, головок и секторов должны быть взяты из элемента таблицы оборудования. При этом для программиста также не должно иметь значения, каким образом то или иное устройство подключено к вычислительной системе. Поэтому в запросе на ввод-вывод программист указывает именно логическое имя устройства.

Заключение

Любая операционная система обеспечивает три вида взаимодействия: пользователя и приложения, программ и аппаратных компонентов, потоков данных между собой. Для удобства пользователя был создан графический интерфейс – набор интуитивно понятных картинок-пиктограмм, работая с которыми, человек формирует команды для системы (в автоматическом «прозрачном» режиме). Все современные решения – именно графические. К ним относится семейство Windows, Linux и операционная система Apple.

Перечислю основные требования к современным операционным системам:

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

Список использованной литературы

  1. С. В. Синицын, А. В. Батаев, Н.Ю. Налютин Операционные системы — М. : Академия, 2010. — 304 с.
  2. Гордеев А. В., Операционные системы: Учебник для вузов. 2-е изд. — СПб.: Питер, 2009. —416 с.
  3. Гордеев А. В., Молчанов А. Ю. Системное программное обеспечение: Учебник. —СПб.: Питер, 2002. —736 с.
  4. Иртегов Д. В. Введение в операционные системы. — СПб.: БХВ-Петербург, 2012. —1040 с.
  5. Кенин А. М., Колисниченко Д. Н. Самоучитель системного администратора СПб.: БХВ-Петербург, 2016. —528 с.
  6. Верещагина Е. А. Операционные системы. Учебно-методический комплекс М.: Проспект, 2015. —144 с.
  7. Таненбаум Эндрю, Бос Херберт «Современные операционные системы» СПб.: Питер, 2015. —1120 с.
  8. Шагаков К. И. Как правильно пользоваться компьютером М.: Эксмо-Пресс, 2014 —224 с.
  9. Симонович С.Р. Информатика: Базовый курс. СПб.: Питер, 2005. – 640 с.
  10. Попов В.Б. Основы компьютерных технологий. – М.: Финансы и статистика, 2002. – 704 с.
  11. Морозевич А.Н., Говядинова Н.Н., Левашенко В.Г. и др. Основы информатики: Учебное пособие; Под ред. Морозевича А.Н.. – Мн.: Новое знание, 2003. – 544 с.

СПИСОК ДЛЯ ТРЕНИРОВКИ ССЫЛОК

  • Разработка регламента выполнения процесса «Управление персоналом» (1.Анализ бизнес-процессов «как есть»)
  • Планирование рекламной кампании (Основные принципы)
  • Бенчмаркинг (Понятие, задачи и цели бенчмаркинга)
  • Применение объектно-ориентированного подхода при проектировании информационной системы (1. Аналитическая часть)
  • МОДЕЛИРОВАНИЕ СИСТЕМ
  • Применение объектно-ориентированного подхода при проектировании информационной системы (1. Объектно-ориентированные методы анализа и проектирования информационных систем)
  • Интернет-маркетинговые решения по ведению гостиничного бизнеса
  • Основные понятия маркетингового планирования
  • Показатели(Оценка) эффективности организационных структур (Сущность и элементы организационной структуры управления)
  • Сетевые операционные системы (1. Характеристика сетевых операционных систем)
  • Разработка конфигурации «Планирование закупок и размещение заказов поставщикам»
  • Разработка регламента выполнения процесса «Управление персоналом» (1. Анализ бизнес-процессов «как есть»)

Где хранится набор инструкций процессора?

Где хранится набор инструкций процессора? Прочитав некоторые объяснения в Интернете, большинство из них — яйцо лобстера.

Набор инструкций — это набор инструкций. Возьмем, к примеру, электронный продукт. Набор инструкций продукта хранится вРуководствов:

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

Нечего сказать.


Интеллектуальная рекомендация

Matlab Record

 Матрица Работа Рассчитайте странное разложение значения A Найдите элементы более 0 в матрице A Операция изображения Результаты приведены ниже:  …

FPGA Learning (раздел 10) -храм модуля

вперед отhttps://blog.csdn.net/fengyuwuzu0519/article/details/72640900 1. Обзор Прежде чем мы изучили FPGA Learning (раздел 3) -Verilog для реализации светодиодной платежной лампы+счетчик состава+Маши…

js базовые упражнения

Выполняйте небольшие упражнения в процессе изучения js, поделитесь со всеми https://pan.baidu.com/s/1Iuxdt25cc8STl83733FWgQ Код извлечения: 1l1n Часть рендеров: 1. Загрузите выделение динамически: 2. …

Алгоритм снежинки, бинарная операция

111111111111111111111111111111111111111111111111111111111111111 Глобальный идентификатор -генерирующий сервис Twitter Распределенный самостоятельный алгоритм удостоверения личности Snowflake (Java -ве…

Вам также может понравиться

Добавить элементы массива для цикла Foreach

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

Понимание TCP / IP

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

Понравилась статья? Поделить с друзьями:
  • Wordpress с чего начать работу пошаговая инструкция
  • Либерум таблетки инструкция по применению цена отзывы
  • Урм ас бюджет инструкция пользователя 2022
  • Альфа протект инструкция по применению цена отзывы аналоги
  • Сосны почки инструкция по применению отзывы