Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Функции операционных систем персональных компьютеров (Системы для оборудования IBM)

Содержание:

ВВЕДЕНИЕ

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

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

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

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

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

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

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

Объект исследования – операционные системы.

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

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

Задачи исследования :

1.  Изучить характеристику ОС.

2.  Определить последовательность ОС.

3.  Составить классификацию развития ОС.

4.  Проанализировать современные ОС.

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

1. Предыстория

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

Более поздние машины имели библиотеки, которые были связаны с пользовательской программой для поддержки таких операций, как ввод и вывод. Это было начало современных операционных систем. Однако машины все еще выполняли одну задачу за один промежуток времени. [4,7]

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

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

Эра мейнфреймов

Первой в мире операционной системой считается GM OS (General Motors Operating System).

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

2. Системы для оборудования IBM

Такое положение дел продолжалось до 1960-х годов, когда IBM, ведущий поставщик оборудования в то время, прекратил разработку существующих систем и сосредоточился на создании машин серии System / 360, которые должны были использовать одни и те же инструкции и архитектуру ввода-вывода. , IBM начала разработку единой операционной системы для этих машин, OS / 360. Проблемы, возникшие при создании OS / 360, стали легендарными и были описаны в книге «Мифический человеко-месяц Фредерика Брукса». Из-за различий в производительности и задержек в разработке программного обеспечения вместо одной OS / 360 было представлено семейство операционных систем с таким же названием. [13,16]

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

OS / MFT для систем среднего класса. У нее был один преемник, система OS / VSI, разработка которой продолжалась до 1980-х годов.

OS / MVT для больших машин. Он был похож на OS / MFT (программы могли передаваться между ними без перекомпиляции), но имел более продвинутое управление памятью и систему разделения времени, TSO. У MVT было несколько преемников, включая z / OS.

DOS / 360 для младших моделей System / 360 имел несколько преемников, включая z / VSE, использовавшийся до настоящего времени. Это значительно отличалось от OS / MFT и OS / MVT.

IBM полностью совместима, поэтому программы, разработанные в шестидесятых годах, можно по-прежнему запускать в z / VSE (если они были созданы для DOS / 360) или z / OS (если они были созданы для OS / MFT или OS / MVT) без изменений. [8]

IBM разработала, но официально не выпустила, TSS / 360, операционную систему с разделением времени для S / 360 Model 67.

Несколько операционных систем для архитектур IBM S / 360 и S / 370 были разработаны сторонними организациями, в том числе Мичиганская терминальная система (MTS) и MUSIC / SP.

Другие мейнфреймовые операционные системы

Control Data Corporation разработала операционную систему SCOPE в 1960-х годах для обработки пакетных заданий. В сотрудничестве с Университетом Миннесоты в 1970-х годах были созданы операционные системы KRONOS и NOS, которые поддерживали одновременный запуск задач и распределение времени. [14]

В конце 1970-х годов компания Control Data и Иллинойский университет разработали машину PLATO, которая представила множество инноваций для своего времени. В системе использовался язык программирования TUTOR, который позволял создавать такие программы, как чат в реальном времени и многопользовательские графические игры.

UNIVAC, первый производитель коммерческих компьютеров, создал серию операционных систем EXEC. Как и большинство ранних операционных систем для мэйнфреймов, это были ориентированные на пакет операционные системы. В 1970-х годах UNIVAC выпустил базовую систему реального времени. [14]

Корпорация Burroughs представила машину B5000 в 1961 году с операционной системой MCP (Master Control Program). B5000 поддерживает исключительно языки высокого уровня и не поддерживает машинные языки или ассемблер; таким образом, MCP стала первой операционной системой, написанной только на языке высокого уровня (ESPOL, алгольский диалект). MCP также представил несколько нововведений, в том числе первую коммерческую реализацию виртуальной памяти. MCP по-прежнему используется на компьютерах Unisys ClearPath / MCP.

Проект MAC разработал Multics и General Electric Comprehensive Operating Supervisor (GECOS), который представил концепцию уровней привилегий.

Digital Equipment Corporation разработала множество операционных систем для своих различных линеек компьютеров, включая системы TOPS-10 и TOPS-20 с разделением времени для 36-битных машин PDP-10. До широкого рапространения UNIX, TOPS-10 пользовалась большой популярностью в университетах и раннем сообществе ARPANET.[1,4,6]

3. Миникомпьютеры и развитие UNIX

Первые версии операционной системы UNIX были разработаны в AT & T Bell Laboratories в конце 1960-х годов. Будучи абсолютно бесплатной в первых версиях и легко модифицируемой, эта система приобрела большую популярность. Поскольку UNIX был написан на языке C высокого уровня, его можно легко перенести на новую аппаратную архитектуру. Эта мобильность позволила ему стать основной системой для второго поколения миникомпьютеров и первого поколения рабочих станций.

В то же время корпорация Digital Equipment Corporation создала простую операционную систему RT-11 для серии 16-битных компьютеров PDP-11 и систему VMS для 32-битных компьютеров VAX.

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

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

• Одиночная и многопользовательская

• Однопроцессорные и многопроцессорные системы

• Локальный и сетевой.

• Однозадачные и многозадачные операционные системы

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

MS-DOS - это коммерческая операционная система Microsoft для IBM-совместимых персональных компьютеров. MS-DOS - самая известная операционная система в семействе DOS, ранее установленная на большинстве IBM-совместимых компьютеров. Со временем он был вытеснен семейством операционных систем Windows 9x и Windows NT.MS-DOS, которое было создано в 1981 году и в процессе его разработки, восьми основных версий (1.0, 2.0 и т.д.) И двух десятков промежуточных версий. (3,1, 3,2 и т.д.), Пока в 2000 году Microsoft не прекратила свое развитие. Это был ключевой продукт компании, который дал ей значительный доход и маркетинговый ресурс в процессе разработки Microsoft, от разработчика языка программирования до крупной компании, производящей самое разнообразное программное обеспечение. [5,8]

Последняя коробочная версия была 6. 22, но MS-DOS продолжал служить загрузчиком для Windows 95 (версии 7.0 и 7.1), Windows 98 (версия 7.1) и Windows ME (версия 8. 0).

Минимальный набор файлов MS-DOS:

Файлы ядра:

BOOT. MBR - это загрузчик, расположенный в нулевом секторе и передающий управление IO. системный

Ио. SYS - расширение BIOS

MSDOS. SYS - обработка прерываний

Командный процессор:

КОМАНДА. COM - командный процессор (поддержка интерфейса командной строки).

Строго говоря, для запуска MS-DOS существует файл COMMAND. Ком не нужен. Его можно заменить другим командным процессором, способным выполнять нужные вам команды. Это делается путем добавления в CONFIG. SYS строки shell = c: mymyprog. ком. В свое время сторонние разработчики выпустили множество командных процессоров. Самым распространенным командным процессором, выпущенным сторонней компанией, была NDOS. COM (лицензированный 4DOS) из пакета Norton Utilities от Symantec. Новые версии командного процессора 4DOS все еще выпускаются. [11,16]

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

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

Существует 2 типа многозадачности [1]:

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

4. Свойства многозадачной среды

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

Более продвинутые многозадачные системы распределяют ресурсы динамически, когда задача запускается в памяти или покидает память, в зависимости от ее приоритета и системной стратегии. Такая многозадачная среда имеет следующие особенности:

  • Каждая задача имеет свой приоритет, в соответствии с которым она получает процессорное время и память.
  • Система организует очереди задач таким образом, чтобы все задачи получали ресурсы в зависимости от приоритетов и стратегии системы.
  • Система организует обработку прерываний, с помощью которой задачи можно активировать, деактивировать и удалять.
  • В конце временного интервала ядро ​​временно переводит задачу из состояния выполнения в состояние готовности, передавая ресурсы другим задачам. В случае нехватки памяти страницы невыполненных задач могут быть выгружены на диск (подкачка), а затем через некоторое время система может быть восстановлена ​​в памяти.
  • Система защищает адресное пространство задачи от несанкционированного вмешательства в другие задачи.
  • Система защищает адресное пространство своего ядра от несанкционированного вмешательства в задачи [3,5,7]
  • Система распознает сбои и зависания отдельных задач и завершает их.
  • Система разрешает конфликты доступа к ресурсам и устройствам, избегая тупиковых ситуаций полного зависания от ожидания заблокированных ресурсов.
  • Система гарантирует, что каждая задача будет активирована рано или поздно.
  • Система обрабатывает запросы в реальном времени.
  • Система обеспечивает коммуникацию между процессами
  • Типы псевдопараллельной многозадачности:

Невытесняющая многозадачность

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

Совместная или совместная многозадачность [9]

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

Совместную многозадачность можно назвать многозадачной «второй стадией», потому что она использует более сложные методы, чем простое переключение задач, реализованное многими известными программами (например, DOS Shell из MS-DOS 5.0, при простом переключении активная программа получает все процессорное время и фоновые приложения полностью заморожены Благодаря совместной многозадачности приложение может фактически захватывать столько процессорного времени, сколько сочтет необходимым. Все приложения периодически делят процессорное время. Передача управления следующей задаче.

Преимущества совместной многозадачности: нет необходимости защищать все общие структуры данных с помощью таких объектов, как критические секции и мьютексы, что упрощает программирование, особенно перенос кода из однозадачных сред в многозадачные. [10]

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

Реализовано в операционных системах, таких как:

  • В пользовательском режиме версии ОС Windows до 3.x включительно.
  • Версии Mac OS до Mac OS X внутри ядер многих UNIX-подобных операционных систем, таких как FreeBSD.
  • Линукс давно.

Приоритетная или приоритетная многозадачность (в режиме реального времени)

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

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

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

Реализовано в операционных системах, таких как:

  • Vms
  • Linux

в пользовательском режиме (и часто в режиме ядра) всех UNIX-подобных операционных систем, включая версии Mac OS X, iOS; ОС Symbian

в режиме ядра Windows 3. x - только при работе на процессоре 386 или более поздней «задачами» являются только все приложения Windows, объединенные и каждая отдельная виртуальная машина DOS, между приложениями Windows не использовалась вытесняющая многозадачность

Windows 95/98 / ME - без полной защиты памяти, которая была причиной крайне низкого уровня, на том же уровне, что и версии MS-DOS, Windows 3.x и Mac OS до X - надежность этих ОС [4]

Windows NT / 2000 / XP / Vista / 7 как в режиме ядра, так и в режиме пользователя.

AmigaOS - все версии до версии 4.0 без полной защиты памяти, что на практике для системных программ практически не влияло на надежность

из-за высокой стандартизации, прозрачности API и SDK. Железо-ориентированные программы Amiga, напротив, не отличались надежностью.[6]

Структура операционной системы

Современные операционные системы работают в основном в защищенном режиме. Впервые защищенный режим появился в микропроцессоре Intel i80286. Этот режим позволяет в полной мере использовать все возможности, предоставляемые микропроцессором.

Процессы и темы

Основными элементами современной многозадачной ОС являются процессы и потоки. Основная задача операционной системы - работа с этими элементами. [12]

Процесс - это выполнение пассивных инструкций компьютерной программы на процессоре компьютера. Стандарт определений ISO 9000: 2000 определяет процесс как набор взаимосвязанных и взаимодействующих действий, которые преобразуют входящие данные в исходящие.

Сама компьютерная программа представляет собой только пассивный набор инструкций, а процесс - это непосредственное выполнение этих инструкций. [15]

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

Этот процесс является «самой сложной» единицей планирования ядра. Собственные ресурсы для процесса выделяются операционной системой. Ресурсы включают память, дескрипторы файлов, соединители, дескрипторы устройств и окна. Процессы используют адресное пространство и файлы ресурсов в режиме разделения времени только через явные методы, такие как наследование файловых дескрипторов и сегментов разделяемой памяти. Процессы обычно предварительно преобразуются в многозадачный метод выполнения. [2]

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

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

5.1 Отличие потоков выполнения от процессов

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

  • процессы, как правило, независимы, тогда как потоки выполнения существуют как составные элементы процессов;
  • процессы несут значительно больше информации о состоянии, тогда как несколько потоков выполнения внутри процесса совместно используют информацию о состоянии, а также память и другие вычислительные ресурсы;
  • процессы имеют отдельные адресные пространства, тогда как потоки выполнения совместно используют их адресное пространство;
  • процессы взаимодействуют только через предоставляемые системой механизмы связей между процессами;[1,3]
  • переключение контекста между потоками выполнения в одном процессе, как правило, быстрее, чем переключение контекста между процессами;

5.2 Управление памятью

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

Функции управления памятью ОС

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

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

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

Функции ОС для управления памятью в многопрограммной системе:[5,8]

• отслеживание свободной и занятой памяти;

• выделение памяти для процессов и освобождение памяти при завершении процессов;

• стирание кодов и данных процесса из ОЗУ на диск (полное или частичное), когда основная память недостаточно велика, чтобы вместить все процессы в нем, и возврат их в ОЗУ, когда в ней освободилось место;

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

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

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

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

5.3 Алгоритмы памяти

Каждому процессу должна быть назначена одна непрерывная область физической памяти, или же память может быть выделена порциями? Должны ли сегменты программы, загруженные в память, находиться в одном и том же месте в течение всего периода процесса, или они могут время от времени перемещаться? Что делать, если сегменты программы не помещаются в доступную память? Различные операционные системы с разными ответами на эти и другие основные вопросы управления памятью. Далее будут рассмотрены наиболее распространенные подходы к распределению памяти, которые были характерны для разных периодов разработки операционных систем. Некоторые из них по-прежнему актуальны и широко используются в современных операционных системах, тогда как другие в основном представляют познавательный интерес, хотя их все еще можно найти в специализированных системах. [1]

Все алгоритмы выделения памяти делятся на два класса: алгоритмы, которые используют перемещение сегментов процесса между ОЗУ и диском, и алгоритмы, которые не используют внешнюю память.

5.4 Ввод и вывод информации

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

• организация параллельной работы устройств ввода-вывода и процессора;

• согласование скоростей передачи данных и кеширование данных;

• разделение устройств и данных между процессами;

• обеспечение удобного логического интерфейса между устройствами и остальной частью системы;

• поддержка широкого круга драйверов с возможностью простого включения нового драйвера в систему;

• динамическая загрузка и выгрузка драйверов;

• поддержка нескольких файловых систем;

• поддержка синхронных и асинхронных операций ввода-вывода;

Рассмотрим некоторые задачи подробнее.

Организация параллельной работы устройств ввода-вывода и процессора [7]

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

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

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

5.5 Разделение устройств и данных между процессами

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

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

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

Когда устройство разделяется между процессами, может возникнуть необходимость отделить части этих двух процессов друг от друга. Обычно такая необходимость возникает при совместном использовании так называемых последовательных устройств, в которых, в отличие от устройств прямого доступа, они не рассматриваются. Типичным представителем этого типа устройств является принтер, который не выделяется в качестве проприетарного процесса, и в то же время каждый документ должен быть напечатан в виде последовательного набора страниц. Для таких устройств организована очередь задач для вывода, причем каждая задача представляет собой часть данных, которые не могут быть прерваны, например, документ для печати. Для хранения очереди заданий используется файл спула, который одновременно координирует скорость принтера и ОЗУ и позволяет организовать разбиение данных на логические порции. Поскольку файл спулинга расположен на общем устройстве прямого доступа, процессы могут одновременно выполнять вывод на принтер, помещая данные в свой раздел спулинга. [2,5]

Обеспечение удобного логического интерфейса между устройствами и остальной частью системы

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

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

5.6 Динамическая загрузка и выгрузка драйверов

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

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

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

5.7 Поддержка нескольких файловых систем

Диски представляют собой особый тип периферийных устройств, поскольку именно на них хранится большая часть как пользовательских, так и системных данных. Данные на дисках организованы в файловые системы, а свойства файловой системы во многом определяют свойства самой ОС - ее отказоустойчивость, скорость, максимальный объем памяти. Популярность файловой системы часто приводит к ее миграции с родной ОС на другие операционные системы - например, файловая система FAT впервые появилась в MS-DOS, но затем была реализована в OS / 2, семействе MS Windows и многих других. UNIX-реализации. Поэтому поддержка нескольких популярных файловых систем для подсистемы ввода-вывода так же важна, как и поддержка широкого спектра периферийных устройств. Также важно, что архитектура подсистемы ввода / вывода позволяет просто включать в свою структуру новые типы файловых систем без необходимости переписывать код. Обычно операционная система имеет специальный программный уровень, отвечающий за решение этой проблемы, например, уровень VFS (виртуальная файловая система) в версиях UNIX на основе кода System V Release 4.[7]

5.8 Поддержка синхронных и асинхронных операций ввода-вывода

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

Подсистема ввода-вывода должна предоставлять своим клиентам (пользовательские процессы и коды ядра) возможность выполнять как синхронные, так и асинхронные операции ввода-вывода, в зависимости от потребностей вызывающего. Системные вызовы ввода / вывода чаще формализуются как синхронные процедуры, поскольку такие операции занимают много времени, и пользовательскому процессу или потоку все равно придется ждать, пока результаты операции продолжатся. Внутренние вызовы для операций ввода-вывода из модулей ядра обычно выполняются в форме асинхронных процедур, поскольку кодам ядра требуется свобода выбора дальнейшего поведения после запроса операции ввода-вывода. Использование асинхронных процедур приводит к более гибким решениям, поскольку на основе асинхронного вызова вы всегда можете создать синхронный вызов, создав дополнительную промежуточную процедуру, которая блокирует выполнение вызывающей процедуры до завершения ввода-вывода. Иногда процессу приложения также необходимо выполнить асинхронную операцию ввода-вывода, например, с микроядерной архитектурой, когда часть кода выполняется в пользовательском режиме как процесс приложения, но выполняет функции операционной системы, которые требуют полной свободы действия даже после вызова операции ввода-вывода. [1,5,9,15]

5.9 Менеджер ввода-вывода

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

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

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

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

Еще одной функцией менеджера ввода-вывода является организация взаимодействия модулей ввода-вывода с модулями других подсистем ОС, таких как подсистема управления процессами, виртуальной памятью и другими.[2,3,4]

Примерами подобного менеджера являются менеджер ввода-вывода ОС Windows NT, а также среда STREAMS, существующая во многих версиях операционной системы UNIX. Менеджер ввода-вывода Windows NT организует взаимодействие между модулями с помощью пакетов запросов ввода-вывода - IRP (I/O Request Packet). Получив запрос от процедуры системного вызова, менеджер формирует IRP и передает его нужному драйверу. Драйвер после выполнения запрошенной операции возвращает ответ в виде другого IRP менеджеру, а тот, в свою очередь, может при необходимости передать этот IRP другому драйверу. Менеджер позволяет драйверам задавать взаимосвязи (bindings) между собой, и на основании информации о взаимосвязях и происходит передача пакетов IRP. Кроме того, менеджер Windows NT поддерживает динамическую загрузку-выгрузку драйверов без останова системы.

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

5.10 Безопасность. Угрозы безопасности

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

Считается, что безопасная система должна обладать свойствами конфиденциальности, доступности и целостности. Любое потенциальное действие, которое нарушает конфиденциальность, целостность и доступность информации, называется угрозой. Реализованная угроза называется атакой.[7]

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

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

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

Существует несколько типов угроз. Самая распространенная угроза - это попытка войти в систему под видом легитимного пользователя, например, попытка угадать и выбрать пароли. Более сложный вариант - ввести в систему программу, которая отображает слово login. Многие легальные пользователи одновременно начинают пытаться войти в систему, и их попытки могут быть зарегистрированы. Такие, казалось бы, безобидные программы, которые выполняют нежелательные функции, называются «троянскими конями». Иногда можно торпедировать работу программы проверки паролей, многократно нажимая клавиши del, break, отмены и т. Д. Для защиты от таких атак ОС запускает процесс, называемый аутентификацией пользователя. [4, 15]

Другие виды угроз связаны с нежелательными действиями законных пользователей, которые могут, например, пытаться читать страницы памяти, диски и ленты, которые сохранили информацию, связанную с предыдущим использованием. Защита в таких случаях основана на надежной системе авторизации. Атаки типа «отказ в обслуживании» также попадают в эту категорию, когда сервер наводнен мощным потоком запросов и становится практически недоступным для отдельных авторизованных пользователей. [7]

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

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

ЗАКЛЮЧЕНИЕ

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

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

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

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

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

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

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

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Ганеев Р. М. Проектирование интерфейса пользователя средствами

Win32 API; Горячая Линия - Телеком - , 2007. - 360 c.

2. Дейтел Х. М., Дейтел П. Дж., Чофнес Д. Р. Операционные системы. Часть 2. Распределенные системы, сети, безопасность; Бином-Пресс - Москва, 2011. - 704 c.

3. Дейтел Х. М., Дейтел П. Дж., Чофнес Д. Р. Операционные системы. Часть1. Основы и принципы; Бином-Пресс - Москва, 2011. - 448 c.

4.Делев Владимир Алексеевич Информатика. Ч.1. Основы Персонального Компьютера. Операционные Системы; ConJelCo- Москва, 2007.-100c.

5. Демьянович Ю. К., Лебединский Д. М. Операционная система UNIX (LINUX) и распараллеливание; Издательство Санкт-Петербургского университета - Москва, 2005. - 112 c.

6. Иртегов Д. В. Введение в операционные системы; БХВ-Петербург - Москва,2012.- 874 c.
7. Карпов В. Е., Коньков К. А. Основы операционных систем. Курс

лекций. Учебное пособие; Интернет-университет информационных технологий - Москва, 2005. - 632 c.

8. Клейменов С.А., Мельников В.П., Петраков А.М. Администрирование в инофрмационных системах; Студия АРДИС, ТРК ВС РФ «Звезда» - Москва, 2008. - 272 c.

9. Коньков К. А. Устройство и функционирование ОС Windows. Практикум к курсу «Операционные системы»; Бином. Лаборатория знаний - Москва, 2008. - 208 c.

10. Курячий Г. В. Операционная система UNIX. Курс лекций. Учебное пособие; Интернет-университет информационных технологий - Москва, 2004. - 288 c.

11. Магда Ю. С. UNIX для студента; БХВ-Петербург - Москва, 2007. –

480c.

12. Мартемьянов Ю. Ф., Яковлев А. В., Яковлев А. В. Операционные

системы. Концепции построения и обеспечения безопасности; Горячая

Линия - Телеком - , 2011. - 338 c.

13. Мертенс Петер Интегрированная обработка информации. Операционные системы в промышленности; Финансы и статистика - , 2007. – 424c.
14. Назаров С. В., Гудыно Л. П., Кириченко А. А. Операционные

системы. Практикум для бакалавров; КноРус - Москва, 2012. - 376 c.
15. Партыка Т. Л., Попов И. И. Операционные системы, среды и оболочки; Форум - Москва, 2010. - 544 c.

16. Персианов Вячеслав Венедиктович Компьютерные Обучающие Системы:Разработка И Применение; АСТ, Сова, Астрель-СПб, Харвест - Москва, 2002. - 732 c.