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

Функции операционных систем персональных компьютеров

Содержание:

Введение

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

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

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

Функции ОС можно разделить на интерфейсные и внутренние.

Интерфейсные:

- управление аппаратными средствами, устройствами ввода-вывода;

- файловая система;

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

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

- сеть.

Внутренние функции:

- Обработка прерываний;

- Виртуальная память;

- Планировщик задач;

- Буферы ввода-вывода;

- Обслуживание драйверов устройств.

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

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

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

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

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

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

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

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

1 Обеспечение пользовательского интерфейса

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

Первые формы компьютерных UI – разновидности текстовых интерфейсов (TUI – Textbased/textual user interface).

Любая форма TUI выстроена на символах – цифрах и буквах, операции с которыми возможны при наличии устройства ввода (клавиатуры) и вывода (печатного устройства, экрана). Символы «как они есть» не могут нести смысловой нагрузки, для взаимодействия необходим какой-либо искусственный язык, код, указывающий на возможные сочетания символов и эксплицируемое из них значение. Так, команда (в UNIX) «rm – rf /», будучи символически лаконичной, может быть переведена на естественный язык следующим образом: «удалить все вложенные каталоги, игнорируя ошибки и не запрашивая подтверждения производимых операций в каталоге «/»». Лексика и грамматика TUI требует редукции значения и сжатости, что вполне оправдано, так как компьютер в момент своего создания решал исключительно прагматическую задачу – оптимизировал вычисления. Прагматическое взаимодействие предполагает прагматичный язык.

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

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

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

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

Переход к GUI связан с популяризацией компьютера и явившейся потребностью в создании «понятного» интерфейса. Концепция GUI предложила ряд абстракций, выраженных в парадигме WIMP («window, icon, menu, pointing device» – окно, значок, меню, манипулятор).

Концептуальный фундамент доступного интерфейса создавался в исследовательских лабораториях Стенфордского университета и Xerox Corporation в период 1960–1970-х гг и у него есть свои авторы и идеологи – Дуглас Энгельбард и Алан Кей.

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

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

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

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

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

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

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

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

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

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

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

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

Основные возможности, предоставляемые графическими оболочками ОС:

- Удобный графический пользовательский интерфейс.

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

- Поддержка новых тенденций в развитии интерфейсов – multi-touch, Tablet PC и др.

- Унификация графических оболочек для различных ОС. В разных ОС используются графические оболочки CDE, KDE, GNOME.

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

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

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

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

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

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

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

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

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

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

- Устройства внешней памяти, которые в свою очередь, можно разделить на два класса:

устройства памяти с произвольным доступом, главным образом магнитные диски. К этому же классу относятся дискеты, магнитооптические и оптические диски. Удачным универсальным обозначением для этого класса устройств является принятое в документации фирмы IBM сокращение DASD (Direct Access Storage Device – запоминающее устройство прямого доступа);

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

- Устройства последовательного ввода/вывода: печатающие устройства, телетайпы, терминалы и т.д.

- Векторные и растровые графические терминалы.

- Позиционные устройства ввода: мыши, планшеты-дигитайзеры, световые перья и т.д.

- Сетевые адаптеры.

- Устройства звукового ввода/вывода.

- Устройства графического ввода/вывода: сканнеры или видеодекодеры (ввод), плоттеры, графические принтеры или видеокодеры (вывод).

- Специализированная контрольно-измерительная аппаратура.

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

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

- операции чтения и записи данных в отношении адресуемого устройства;

- операции управления устройством;

- операции по проверке состояния устройства.

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

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

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

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

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

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

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

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

3 Загрузка программ в память и обеспечение их выполнения

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

Рассмотрим основные рабочие моменты.

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

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

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

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

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

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

Адреса другого типа называются физическими. Это тот адрес, который передается по адресным линиям шины процессора, когда этот процессор считывает или записывает данные в ОЗУ.

Но эти два адреса могут и не иметь между собой ничего общего. Теоретически, могут существовать адреса физической памяти, которым не соответствует никакой виртуальный адрес ни у какой из программ. Это может просто означать, что в данный момент эта память никем не используется. Более интересная ситуация - это виртуальные адреса, которым не соответствует никакой физический адрес. Такая ситуация часто возникает в системах, использующих так называемую страничную подкачку (page swapping или просто paging). В этой ситуации сумма объемов адресных пространств всех программ в системе может превышать объем доступной физической памяти, то есть на машине с четырьмя гигабайтами ОЗУ можно исполнять программы, требующие 8 и более гигабайт.

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

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

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

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

Заголовок EXE-файла состоит из форматированной зоны и таблицы расположения сегментов (Relocation Table).

Таблица расположения сегментов программы начинается сразу после форматированной области и состоит из четырехбайтовых значений в формате "смещение:сегмент".

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

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

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

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

В блок памяти переменных среды помещается путь файла программы.

Заполняются поля префикса сегмента программы PSP в соответствии с характеристиками программы (количество памяти, доступное программе, адрес сегмента блока памяти, содержащего переменные среды и т.д.)

Устанавливается адрес области Disk Transfer Area (DTA) на вторую половину PSP (PSP:0080).

Анализируются параметры запуска программы на предмет наличия в первых двух параметрах идентификаторов дисковых устройств. По результатам анализа устанавливается содержимое регистра AX при входе в программу. Если первый или второй параметры не содержат правильного идентификатора дискового устройства, то соответственно в регистры AL и AH записывается значение FF.

А дальше действия системы по загрузке программ форматов COM и EXE будут различаться.

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

После загрузки файла операционная система для COM-программ выполняет следующие действия:

- сегментные регистры CS, DS, ES, SS устанавливаются на начало PSP;

- регистр SP устанавливается на конец сегмента PSP;

- вся область памяти после PSP распределяется программе;

- в стек записывается слово 0000;

Указатель команд IP устанавливается на 100h (начало программы) с помощью команды JMP по адресу PSP:100.

Загрузка EXE-программ происходит значительно сложнее, так как связана с настройкой сегментных адресов:

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

Определяется размер загрузочного модуля по формуле:

size=((file_size*512)-(hdr_size*16)-part_pag (1)

Определяется смещение начала загрузочного модуля в EXE-файле как hdr_size*16.

Вычисляется сегментный адрес для загрузки START_SEG, обычно используется значение PSP+10h.

Загрузочный модуль считывается в память по адресу START_SEG:0000.

Сканируются элементы таблицы перемещений, располагающейся в EXE-файле со смещением relt_off.

Для каждого элемента таблицы:

1. Считывается содержимое элемента таблицы как два двухбайтных слова (OFF,SEG).

2. Вычисляется сегментный адрес ссылки перемещения

REL_SEG = (START_SEG + SEG) (2)

3. Выбирается слово по адресу REL_SEG:OFF, к этому слову прибавляется значение START_SEG, затем сумма записывается обратно по тому же адресу.

Заказывается память для программы, исходя из значений min_mem и max_mem.

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

При инициализации регистры ES и DS устанавливаются на PSP, регистр AX устанавливается так же, как и для COM-программ, в сегментный регистр стека SS записывается значение START_SEG + ss_reg, а в SP записывается sp_reg.

Для запуска программы в CS записывается START_SEG+cs_reg, а в IP - ip_reg. Такая запись невозможна напрямую, поэтому операционная система сначала записывает в свой стек значение для CS, затем значение для IP и после этого выполняет команду дальнего возврата RETF (команда возврата из дальней процедуры).

Программа может при необходимости запустить другую программу формата EXE или COM. Для ассемблерных программ существует функция 4Bh прерывания INT 21h, для программ, составленных на языке Си - разнообразные функции, входящие в состав стандартной библиотеки.

4 Обеспечение системы организации и хранения файлов

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

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

Рассматривая файл, изначально обратимся к имени файла. Файл – это программа или данные, имеющие имя и хранящиеся в долговременной памяти. Имя файла состоит из 2-х частей: имя самого файла и расширением, определяющим тип файла. В основном имя файлу дает пользователь, а тип файла определяет программой автоматически при его создании.

Пользователи дают файлам символьные имена, при этом учитываются ограничения ОС как на используемые символы, так и на длину имени. Так в файловой системе FAT длина имен ограничивается (8 символов – имя, 3 символа – расширение имени), а в ОС UNIX System V имя содержит менее 14 символов. Windows в своей файловой системе устанавливает, что имя файла может содержать до 255 символов.

Файлы бывают разных типов: специальные файлы, обычные файлы, и файлы-каталоги.

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

Специальные файлы бывают: блок-ориентированные, байт-ориентированные.

Обычные файлы делятся на:

− текстовые (состоят из строк символов, представленных в ASCII кодировке);

− двоичные (не используют ASCII кодировку, он имеет более сложную структуру).

Каталог – это файл, содержащий системную информацию о группе файлов, его составляющих. В каталоге содержится список файлов, устанавливаются соответствия между файлами и их характеристиками.

Иерархия каталогов может иметь вид дерева или сети. Каталоги образуют дерево, если файлу можно входить только в один каталог, а если сеть, то файлу разрешено входить сразу в несколько каталогов. Например, MS‐DOS каталоги образуют структуру дерева, а в UNIX - сеть.

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

Бывают два основных подхода к определению прав доступа: избирательный доступ; мандатный подход.

Файловая система – это средство для организации хранения файлов на каком-либо носителе.

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

- Для носителей с произвольным доступом (например, жёсткий диск): FAT32, HPFS, ext2 и др. Поскольку доступ к дискам в несколько раз медленнее, чем доступ к оперативной памяти, для прироста производительности во многих файловых системах применяется асинхронная запись изменений на диск. Для этого применяется либо журналирование, например в ext3, ReiserFS, JFS, NTFS, XFS, либо механизм soft updates и др. Журналирование широко распространено в Linux, применяется в NTFS. Soft updates — в BSD системах.

- Для носителей с последовательным доступом (например, магнитные ленты): QIC и др.

- Для оптических носителей — CD и DVD: ISO9660, HFS, UDF и др.

- Виртуальные файловые системы: AEFS и др.

- Сетевые файловые системы: NFS, CIFS, SSHFS, GmailFS и др.

- Для флэш-памяти: YAFFS, ExtremeFFS, exFAT.

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

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

Файловая система NTFS (New Technology File System) в настоящее время является основной файловой системой различных версий Windows. Она постоянно развивается.

Существует несколько версий этой файловой системы. Рассмотрим вначале основные возможности и характеристики версии NTFS для операционных систем семейства Windows.

Прежде всего, необходимо сказать о надежности NTFS. Любые изменения, происходящие в файловой системе, выполняются с использованием механизма транзакций. Журнал изменений, в котором отражаются все модификации объектов файловой системы, произошедшие с момента начала очередной транзакции, позволяет восстановить корректное состояние в случае, например, сбоя электропитания. NTFS поддерживает систему метаданных и использует специализированные структуры данных для хранения информации о файлах для улучшения производительности, надёжности и эффективности использования дискового пространства. NTFS хранит информацию о файлах в главной файловой таблице – Master File Table (MFT).

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

Далее перечислены основные возможности, предоставляемые файловой системой NTFS:

- атрибуты безопасности, или «разрешения NTFS», которые могут быть установлены для отдельных файлов и для папок. Атрибуты безопасности позволяют разграничить доступ разных пользователей к объектам файловой системы;

- возможности сжатия, включая возможность сжатия или распаковки диска, папки или определенного файла;

- шифрующая файловая система (Encrypting File System, EFS) – надстройка над NTFS, обеспечивающая шифрование файлов пользователей;

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

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

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

- автономные файлы – возможность, позволяющая продолжать работать с файлами, находящимся в сетевой общей папке, даже при разрыве сетевого соединения;

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

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

Распределенная файловая система (DFS) обеспечивает упрощенный отказоустойчивый доступ к файлам и репликации по глобальным сетям. Распределенная файловая система состоит из двух технологий:

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

- Репликация DFS использует новый алгоритм сжатия, называемый удаленным разностным сжатием (Remote Differential Compression – RDC). RDC является протоколом дистанционного обнаружения различий, который можно использовать для эффективного обновления файлов в сети с ограниченной пропускной способностью. В алгоритме RDC выявляются места вставки, удаления и перемещения данных в файлах, что позволяет службе репликации DFS при проведении обновления выполнять репликацию только внесенных изменений.

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

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

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

- Поддержка дефрагментации метаданных системы. До Windows 7 и Windows Server 2008 R2 было невозможно дефрагментировать некоторые метаданные файловой системы, связанные с файлами данных пользователя (например, данные точки повторной обработки или шифрованной файловой системы). Улучшения механизма дефрагментации теперь позволяют дефрагментировать и эти метаданные. Это позволяет увеличить производительность файлов с многочисленными точками повторной обработки и резидентных файлов. Это также позволяет включить сжатие тома, чтобы получить больше свободного пространства, чем раньше.

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

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

- Встроенная поддержка дисков в формате VHD. Виртуальные жесткие диски (VHD) обычно используются пакетами виртуализации, например Microsoft Virtual PC, и системами виртуализации, основанными на Microsoft Hyper-V. Улучшения механизмов подключения и загрузки и дополнительная поддержка многими компонентами Windows обеспечивают следующие возможности:

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

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

- централизованное развертывание. Загрузка с единого централизованного образа, существенно упрощающая процесс развертывания и внедрения;

- обслуживание образов компьютеров без подключения к сети. Обслуживание компьютера за счет обновления образа без подключения VHD к сети;

- архивация. Загрузка с резервного образа с помощью системы архивации данных Windows Server 2003.

- Эффективность Chkdsk. Выполнение Chkdsk под управлением Windows Server 2008 R2 занимает значительно меньше времени, чем под управлением более ранних версий Windows;

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

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

Заключение

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

И пришли к следующим выводам:

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

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

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

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

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

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

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

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

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

- повышение эффективности использования компьютера путём рационального управления его ресурсами в соответствии с некоторыми критериями;
ОС оснащена расширенным функционалом.

Основные функции (простейшие ОС):

- загрузка приложений в оперативную память и их выполнение;

- стандартизованный доступ к периферийным устройствам (устройства ввода-вывода);

- управление оперативной памятью (распределение между процессами, виртуальная память);

- управление доступом к данным на энергонезависимых носителях (таких как Жёсткий диск, Компакт-диск и т. д.), как правило с помощью файловой системы;

- пользовательский интерфейс;

- сетевые операции, поддержка стека протоколов

Дополнительные функции:

- параллельное или псевдопараллельное выполнение задач (многозадачность);

- взаимодействие между процессами: обмен данными, взаимная синхронизация;

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

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

Список литературы

  1. Верещагина Е.А. Операционные системы. Учебно-методический комплекс. М.: Проспект, 2015. 144с.
  2. Гвоздева В. А. Информатика, автоматизированные информационные технологии и системы. Учебник. М.: Форум, 2015. 544с.
  3. Дейтел П.Дж., Дейтел Х.М., Чофнес Д.Р. Операционные системы. Основы и принципы. Книга 1. М.: Бином. Лаборатория знаний, 2013. 1024с.
  4. Иртегов Д.В. Введение в операционные системы. Гриф УМО ВУЗов России. СПб.: БХВ-Петербург, 2012. 1040с.
  5. Карпов В. Основы операционных систем [Электронный ресурс]: URL: http://www.intuit.ru/studies/courses/1088/322/info (дата обращения: 13.02.2016 - 03.03.2016).
  6. Коньков К. Основы организации операционных систем Microsoft Windows [Электронный ресурс]: URL: http://www.intuit.ru/studies/ courses/1089/217/info (дата обращения: 13.02.2016 - 03.03.2016).
  7. Курячий Г., Маслинский К. Операционная система Linux [Электронный ресурс]: URL: http://www.intuit.ru/studies/courses/37/37/info (дата обращения: 13.02.2016 - 03.03.2016).
  8. Операционные системы [Электронный ресурс]: URL: http://www.internet-web.ru/tema2.html (дата обращения: 13.02.2016 - 03.03.2016).
  9. Партыка Т., Попов И. Операционные системы, среды и оболочки. М.: Форум, 2013. 560с.
  10. Сайт Центра Информационных Технологий ("ЦИТ", "ЦИТ Форум") [Электронный ресурс]: URL: http://citforum.ru/
  11. Сырецкий Г.А.: 1) Информатика. В 2-х томах. Том 1. Основы информационной и вычислительной техники. Гриф МО РФ. СПб.: БХВ-Петербург, 2012. 832с.; 2) Информатика. Фундаментальный курс. Том 2. Информационные технологии и системы. СПб.: БХВ-Петербург, 2012. 848с.
  12. Таненбаум Э., Бос Х., Современные операционные системы. СПб.: Питер, 2015. 1120с.
  13. Таненбаум Э., Вудхалл А., Операционные системы. Разработка и реализация. СПб.: Питер, 2007. 704с.