Файл: Функции операционных систем персональных компьютеров (1. ОБЩАЯ ХАРАКТЕРИСТИКА ОПЕРАЦИОННЫХ СИСТЕМ).pdf
Добавлен: 30.06.2023
Просмотров: 75
Скачиваний: 3
СОДЕРЖАНИЕ
1. ОБЩАЯ ХАРАКТЕРИСТИКА ОПЕРАЦИОННЫХ СИСТЕМ
1.2 Назначение и функции операционных систем
1.3 Понятия вычислительного процесса и ресурса в операционных системах
2. УПРАВЛЕНИЕ ВВОДОМ-ВЫВОДОМ В ОПЕРАЦИОННЫХ СИСТЕМАХ
2.1 Основные концепции организации ввода-вывода в операционных системах
2.2 Взаимодействие системы ввода-вывода в операционных системах
Введение
Операционная система (ОС) — программный комплекс, предоставляющий пользователю среду для выполнения прикладных программ и управления ими, а прикладным программам средства доступа и управления аппаратными ресурсами. Каждый пользователь ОС использует в своей деятельности инструменты, предоставляемые либо непосредственно ядром ОС, либо работающими под управлением ОС прикладными программами. Для решения своих задач пользователь формализует описание задачи на некотором входном языке для ОС или программ.
Операционная система предоставляет интерфейсы и для выполняющихся приложений, и для пользователей. Программы пользователей, да и многие служебные программы запрашивают у операционной системы выполнение тех операций, которые достаточно часто встречаются практически в любой программе. К таким операциям, прежде всего, относятся операции ввода-вывода, запуск или останов какой-нибудь программы, получение дополнительного блока памяти или его освобождение и многие другие. Подобные операции невыгодно каждый раз программировать заново и непосредственно размещать в виде двоичного кода в теле программы, их удобнее собрать вместе и предоставлять для выполнения по запросу из программ. Это и есть одна из важнейших функций операционных систем. Прикладные программы, да и многие системные обрабатывающие программы (такие, например, как системы про1раммирования или системы управления базами данных), не имеют непосредственного доступа к аппаратуре компьютера, а взаимодействуют с ней только через обращения к операционной системе. Пользователи также путем ввода команд операционной системы или выбором возможных действий, предлагаемых системой, взаимодействуют с компьютером и своими программами. Такое взаимодействие осуществляется исключительно через операционную систему. Помимо выполнения этой важнейшей функции операционные системы отвечают за эффективное распределение вычислительных ресурсов и организацию надежных вычислений. Знание основ организации операционных систем и принципов их функционирования позволяет использовать компьютеры более эффективно. Глубокое изучение операционных систем позволяет применить эти знания прежде всего при создании программного обеспечения. Если, к большому сожалению, в нашей стране в последние годы практически не создаются новые операционные системы, то разработки сложных информационных систем, комплексов программ и отдельных приложений, предназначенных для работы в широко распространенных операционных системах, ведутся достаточно интенсивно, причем большим числом организаций. И здесь знание операционных систем, принципов их функционирования, методов организации вычислений является не только желательным, но обязательным.
1. ОБЩАЯ ХАРАКТЕРИСТИКА ОПЕРАЦИОННЫХ СИСТЕМ
1.1 Основные понятия
При решении задач в среде операционной системы (ОС) пользователь должен определить данные и инструментальное (программное) средство для их обработки. В большинстве случаев решение задачи пользователя сводится к последовательному применению нескольких инструментов (например, для ввода данных, сортировки, слияния, вывода). Операционная система предоставляет пользователю базовый набор инструментов и среду для хранения данных, а также средства задания последовательности использования инструментов. Время, в течение которого пользователь решает последовательно одну или несколько задач, пользуясь при этом средствами, предоставляемыми ОС, называется сеансом. В начале любого сеанса пользователь идентифицирует себя, а в конце указывает на необходимость завершения сеанса. Последовательность использования инструментов, записанная на некотором формальном языке, называется заданием, сам язык — языком управления заданиями. Выполнение заданий в большинстве ОС производится командным интерпретатором. Обычно пользователю предоставляется некоторый интерфейс общения с командным интерпретатором, команды которого вводятся с клавиатуры, а результат их выполнения выводится на экран. Такой интерфейс ассоциируется с логическим понятием терминала — совокупности устройства ввода (обычно клавиатуры) и устройства вывода (дисплея, выводящего текстовую информацию). В настоящее время наиболее употребительным является графический интерфейс пользователя (GUI). Операционная система выполняет функции управления аппаратными ресурсами, их распределения между выполняемыми программами пользователя и формирует некоторую среду, содержащую данные, необходимые для выполнения программ. Такая среда в дальнейшем будет называться информационным окружением. В информационное окружение входят все данные и объекты, обрабатываемые ОС, которые оказывают существенное влияние на выполнение программы. Далее будут приведены примеры информационного окружения различного характера. Программа (в общем случае) — набор инструкций процессора, хранящийся на диске (или другом накопителе информации). Чтобы программа могла быть запущена на выполнение, ОС должна создать среду выполнения — информационное окружение, необходимое для выполнения программы. После этого ОС перемещает исполняемый код и данные программы в оперативную память и инициирует выполнение программы. Используя понятия программы, данных и информационного окружения, можно определить задачу как совокупность программ и данных, являющихся частью информационного окружения. Выполняемая программа образует процесс. Процесс — совокупность информационного окружения и области памяти, содержащей исполняемый код и данные программы. Обычно в памяти, адресуемой ОС, одновременно может работать большое число процессов. Естественно, что на однопроцессорных компьютерах возможно одновременное выполнение программного кода только одного процесса, поэтому часть процессов находится в режиме ожидания, а один из процессов — в режиме выполнения. Процессы при этом образуют очередь, ОС передает управление первому процессу в очереди, затем следующему и т. д. Процесс, имеющий потенциальную возможность получить входные данные от пользователя с клавиатуры и вывести результаты своей работы на экран, называется процессом переднего плана, процесс, выполняемый без непосредственного взаимодействия с пользователем, — фоновым процессом. В ходе работы процессы используют вычислительную мощность процессора, оперативную память, обращаются к внешним файлам, внутренним данным ядра ОС. Все эти объекты входят в информационное окружение процесса и называются ресурсами. Ресурсом может быть, как физический объект, к которому ОС предоставляет доступ — процессор, оперативная память, дисковые накопители, так и логический объект, который существует только в пределах самой ОС, например, таблица выполняемых процессов или сетевых подключений. Необходимость в управлении ресурсами со стороны ОС вызвана, в первую очередь, тем, что ресурсы ограничены (по объему, времени использования, количеству обслуживаемых пользователей и т. п.). В этой ситуации ОС либо управляет лимитами ресурсов, предотвращая их исчерпание, либо предоставляет средства обработки ситуаций, связанных с исчерпанием ресурсов. Лимиты многих ресурсов, заданные в ОС по умолчанию, могут изменяться затем администратором системы (например, к таким ресурсам можно отнести количество файлов, одновременно открытых пользователем). В случае, если ОС позволяет одновременно использовать ресурсы нескольким процессам, ресурсы такой ОС подразделяют на типы, указанные на рис. 1.1. Неразделяемые ресурсы могут быть использованы на заданном отрезке времени только одним процессом, при этом другие процессы не имеют доступа к этому ресурсу до полного освобождения ресурса занявшим его процессом. Примером такого ресурса может служить файл, открытый на запись в исключительном режиме — все попытки использовать этот файл другими процессами (даже на чтение) завершаются неудачей. Разделяемые ресурсы могут использоваться несколькими процессами. При этом к таким ресурсам возможен одновременный доступ процессов (например, к часам, при помощи которых определяется текущее системное время). Некоторые разделяемые ресурсы не могут обеспечить одновременный доступ, но позволяют использовать их несколькими процессами, не дожидаясь момента полного освобождения ресурса. В этом случае используется квантование моментов использования ресурса по времени. В каждый квант времени один процесс получает полные и исключительные права на использование данного ресурса. При этом величина такого кванта заведомо много меньше полного времени, в течение которого ресурс используется одним процессом, т. е. времени, необходимого процессу для решения задачи пользователя. Примером ресурса с доступом с разделением времени может служить процессорное время в многозадачных ОС — в каждый квант времени выполняется определенное число инструкций процесса, после чего управление передается следующему процессу и начинается выполнение его инструкций. Процессы, ожидающие предоставления доступа к разделяемому ресурсу, организуются в очередь с приоритетом. Процессы с одинаковым приоритетом получают доступ к ресурсу последовательными квантами, при этом некоторые процессы имеют более высокий приоритет и получают доступ к ресурсу чаще.
Рис. 1.1. Типы ресурсов ОС
1.2 Назначение и функции операционных систем
Операционные системы относятся к системному программному обеспечению. Как известно, все программное обеспечение разделяется на системное и прикладное. К системному программному обеспечению принято относить такие программы и комплексы программ, которые являются общими, без которых невозможно выполнение или создание других программ. История появления и развития системного программного обеспечения началась с того момента, когда люди осознали, что любая программа требует операций ввода-вывода данных. Это произошло в далекие 50-е годы прошлого столетия. Собственно, операционные системы появились чуть позже. Действительно, если мы не будем иметь возможности изменять исходные данные и получать результаты вычислений, то зачем вообще эти вычисления? Очевидно, что исходные данные могут вводиться различными способами. На практике используются самые разнообразные устройства и методы. Например, мы можем вводить исходные значения с клавиатуры, задавать нужные действия или функции с помощью указателя мыши, считывать записи из файла, снимать оцифрованные значения с датчиков и т. д. Часть исходных данных может быть передана в программу через область памяти, в которую предварительно другая программа занесла свои результаты вычислений. Способов много. Главное — выполнить в программе некоторые действия, связанные с получением исходных данных. Аналогично, и вывод результатов может быть организован, например, на соответствующие устройства и в форме, удобной для восприятия ее человеком. Либо результаты расчетов будут отправляться программой на какие-нибудь исполнительные устройства, которые управляются компьютером. Наконец, мы можем организовать запись полученных значений на некие устройства хранения данных (с целью их дальнейшей обработки). Программирование операций ввода-вывода относится к одной из самых трудоемких областей создания программного обеспечения. Здесь речь идет не об использовании операторов типа READ или WRITE в языках высокого уровня. Речь идет о необходимости создать подпрограмму в машинном виде, уже готовую к выполнению на компьютере, а не написанную с помощью некоторой системы программирования (систем программирования тогда еще не было), подпрограмму, вместо обычных вычислений управляющую тем устройством, которое должно участвовать в операциях ввода исходных данных или вывода результатов. При наличии такой подпрограммы программист может обращаться к ней столько раз, сколько операций ввода-вывода с этим устройством ему требуется. Для выполнения этой работы программисту недостаточно хорошо знать архитектуру вычислительного комплекса и уметь создавать программы на языке ассемблера. Он должен отлично знать и интерфейс, с помощью которого устройство подключено к центральной части компьютера, и алгоритм функционирования устройства управления устройства ввода-вывода. Очевидно, что имело смысл создать набор подпрограмм управления операциями ввода-вывода и использовать его в своих программах, чтобы не заставлять программистов каждый раз заново программировать все эти операции. С этого и началась история системного программного обеспечения. Впоследствии набор подпрограмм ввода-вывода стали организовывать в виде специальной библиотеки ввода-вывода, а затем появились и сами операционные системы. Основной причиной их появления было желание автоматизировать процесс подготовки вычислительного комплекса к выполнению программы. В 50-е годы взаимодействие пользователей с вычислительным комплексом было совершенно иным, чем нынче. Программист-кодер (от англ. coder — кодировщик) — специально подготовленный специалист, знающий архитектуру компьютера и язык(и) программирования, — по заказу составлял текст программы, часто по уже готовому алгоритму, разработанному программистом-алгоритмистом. Текст этой программы затем отдавался оператору, который набирал его на специальных устройствах и переносил на соответствующие носители. Чаще всего в качестве носителей использовались перфокарты или перфолента. Далее колода с перфокартами (перфолента) передавалась в вычислительный зал, где для вычислений по этой программе требовалось выполнить следующие действия.
1. Оператор вычислительного комплекса с пульта вводил в рабочие регистры центрального процессора и в оперативную память компьютера ту первоначальную программу, которая позволяла считать в память программу для трансляции исходных кодов и получения машинной (двоичной) программы (проще говоря, транслятор, который тоже хранился на перфокартах или перфоленте).
2. Транслятор считывал исходную программу, осуществлял лексический разбор исходного текста, и промежуточные результаты процесса трансляции зачастую так же выводили на перфокарты (перфоленту). Трансляция — сложный процесс, часто требующий нескольких проходов. Порой для выполнения очередного прохода приходилось в память компьютера загружать с перфокарт и следующую часть транслятора, и промежуточные результаты трансляции. Ведь результат трансляции выводился также на носители информации, поскольку объем оперативной памяти был небольшим, а задача трансляции — это очень сложная задача.
3. Оператор загружал в оперативную память компьютера полученные двоичные коды оттранслированной программы и подгружал двоичные коды тех системных подпрограмм, которые реализовывали управление операциями ввода-вы- вода. После этого готовая программа, расположенная в памяти, могла сама считывать исходные данные и осуществлять необходимые вычисления. В случае обнаружения ошибок на одном из этих этапов или после анализа полученных результатов весь цикл необходимо было повторить. Для автоматизации труда программиста (кодера) стали разрабатывать специальные алгоритмические языки высокого уровня, а для автоматизации труда оператора вычислительного комплекса была разработана специальная управляющая программа, загрузив которую в память один раз оператор мог ее далее использовать неоднократно и более не обращаться к процедуре программирования ЭВМ через пульт оператора. Именно эту управляющую программу и стали называть операционной системой. Со временем на нее стали возлагать все больше и больше задач, она стала расти в объеме. Прежде всего разработчики стремились к тому, чтобы операционная система как можно более эффективно распределяла вычислительные ресурсы компьютера, ведь в 60-е годы операционные системы уже позволяли организовать параллельное выполнение нескольких программ. Помимо задач распределения ресурсов появились задачи обеспечения надежности вычислений. К началу 70-х годов диалоговый режим работы с компьютером стал преобладающим, и у операционных систем стремительно начали развиваться интерфейсные возможности. Напомним, что термином интерфейс (interface) обозначают целый комплекс спецификаций, определяющих конкретный способ взаимодействия пользователя с компьютером. На сегодняшний день можно констатировать, что операционная система (ОС) представляет собой комплекс системных управляющих и обрабатывающих программ, которые, с одной стороны, выступают как интерфейс между аппаратурой компьютера и пользователем с его задачами, а с другой стороны, предназначены для наиболее эффективного расходования ресурсов вычислительной системы и организации надежных вычислений. Можно попробовать перечислить основные функции операционных систем:
• Прием от пользователя (или от оператора системы) заданий, или команд, сформулированных на соответствующем языке, и их обработка. Задания могут передаваться в виде текстовых директив (команд) оператора или в форме указаний, выполняемых с помощью манипулятора (например, с помощью мыши). Эти команды связаны, прежде всего, с запуском (приостановкой, остановкой) программ, с операциями над файлами (получить перечень файлов в текущем каталоге, создать, переименовать, скопировать, переместить тот или иной файл и др.), хотя имеются и иные команды.
• Загрузка в оперативную память подлежащих исполнению программ. • Распределение памяти, а в большинстве современных систем и организация виртуальной памяти.
• Запуск программы (передача ей управления, в результате чего процессор исполняет программу).
• Идентификация всех программ и данных.
• Прием и исполнение различных запросов от выполняющихся приложений. Операционная система умеет выполнять очень большое количество системных функций (сервисов), которые могут быть запрошены из выполняющейся программы. Обращение к этим сервисам осуществляется по соответствующим правилам, которые и определяют интерфейс прикладного программирования (Application Program Interface, API) этой операционной системы.
• Обслуживание всех операций ввода-вывода. • Обеспечение работы систем управлений файлами (СУФ) и/или систем управления базами данных (СУБД), что позволяет резко увеличить эффективность всего программного обеспечения.
• Обеспечение режима мультипрограммирования, то есть организация параллельного выполнения двух или более программ на одном процессоре, создающая видимость их одновременного исполнения.
• Планирование и диспетчеризация задач в соответствии с заданными стратегией и дисциплинами обслуживания.
• Организация механизмов обмена сообщениями и данными между выполняющимися программами.
• Для сетевых операционных систем характерной является функция обеспечения взаимодействия связанных между собой компьютеров.
• Защита одной программы от влияния другой, обеспечение сохранности данных, защита самой операционной системы от исполняющихся на компьютере приложений.
• Аутентификация и авторизация пользователей (для большинства диалоговых операционных систем). Под аутентификацией понимается процедура проверки имени пользователя и его пароля на соответствие тем значениям, которые хранятся в его учетной записи. Очевидно, что если входное имя (login2) пользователя и его пароль совпадают, то, скорее всего, это и будет тот самый пользователь. Термин авторизация означает, что в соответствии с учетной записью пользователя, который прошел аутентификацию, ему (и всем запросам, которые будут идти к операционной системе от его имени) назначаются определенные права (привилегии), определяющие, что он может, а что не может делать на компьютере.