Операционные системы
Выбери формат для чтения
Загружаем конспект в формате doc
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«Мурманский Государственный Технический Университет»
Конспект лекций по дисциплине
«Операционные системы»
Модуль №1.
Введение в операционные системы.
Мурманск, 2008 г.
Понятие операционной системы.
Современные аппаратные средства позволяют выполнять множество разнообразных программных приложений. Эти приложение тесно взаимодействуют между собой, а также широко используют возможности, предоставляемые аппаратными средствами компьютера. Для того чтобы такое взаимодействие осуществлялось максимально эффективно, а программы не вступали в конфликтные ситуации между собой, требуется разработка специализированного программного обеспечения, на которое накладываются функции управления аппаратными средствами компьютера и координации работы приложений.
Операционная система – это базовый комплекс компьютерных программ, обеспечивающий управление аппаратными средствами компьютера, работу с файлами, ввод и вывод данных, а также выполнение прикладных программ и утилит.
Развитие операционных систем шло одновременно с развитием аппаратных средств компьютера и претерпело множество изменений. На начальных этапах развития компьютерной техники это было комплекс программ по взаимодействию с аппаратными средствами. Но постоянное усложнение, постоянное развитие компьютерных технологий усложняло и программные приложения, а вместе с ними и операционные системы. Развитие многозадачности потребовало от операционных систем решения новых, ранее неизвестных вопросов, связанных, прежде всего, с организацией межпроцессового взаимодействия. Кроме того, развитие глобальных и локальных сетей породило новый вид операционных систем – распределенных и сетевых.
Для большинства пользователей операционная система является черным ящиком. В конечном итоге ему не требуется знать механизмы взаимодействия приложений между собой или особенности функционирования драйверов. Иные задачи стоят перед системными программистами и администраторами, равно как и прикладными программистами. Им требуется понимать принципы организации файловых систем, организации доступа к ресурсам компьютера. Операционная система представляется как посредник между аппаратными средствами компьютера и конечными прикладными программами. Для написания прикладных программ требуется предоставить программный интерфейс, используя который программист может быстро и эффективно разрабатывать новые приложения. Операционная система предоставляет такой прикладной программный интерфейс.
Далее мы рассмотрим историю развития операционных систем, их функциональное назначение, классификацию и устройство.
Назначение и функции операционных систем (ОС).
К системному программному обеспечению относят такие программы, которые являются общими, без кот невозможно выполнение или создание других программ, ОС относят к этим программам.
На сегодняшний день ОС представляет собой комплекс системных управляющих и обрабатывающих программ, которые, с одной стороны, выступают как интерфейс м/у аппаратурой компьютера и пользователем с его задачами, а с другой стороны, предназначены для наиболее эффективного расходования ресурсов вычислительной системы и организации надежных вычислений.
Основные функции ОС:
Прием от пользователя заданий, или команд, сформулированных на соответствующем языке, и их обработка. Задания могут передаваться в виде текстовых команд оператора или в форме указаний, выполняемых с помощью манипулятора. Эти команды связаны, прежде всего, с запуском (приостановкой, остановкой) программ, с операциями над файлами, и иные команды;
Загрузка в оперативную память подлежащих исполнению программ;
Распределение памяти, а в большинстве современных систем и организация виртуальной памяти;
Запуск программы;
Идентификация всех программ и данных;
Прием и исполнение различных запросов от выполняющихся приложений. Ос умеет выполнять очень большое количество системных функций, которые могут быть запрошены из выполняющейся программы. Обращение к этим сервисам осуществляется по соответствующим правилам, которые и определяют интерфейс прикладного программирования этой ОС;
Обслуживание всех операций ввода-вывода;
Обеспечение работы систем управлений файлами (СУФ) и/или СУБД, что позволяет резко увеличить эффективность всего программного обеспечения;
Обеспечение режима мультипрограммирования;
Планирование и диспетчеризация задач в соответствии с заданными стратегией и дисциплинами обслуживания;
Организация механизмов обмена сообщениями и данными м/у выполняющимися программами;
Для сетевых ОС характерной является функция обеспечения взаимодействия связанных м/у собой компов;
Защита одной программы от влияния другой, обеспечение сохранности данных, защита самой ОС от исполняющихся на комп приложений;
Аутентификация и авторизация пользователей. Под аутентификацией понимается процедура проверки имени пользователя и его пароля на соответствие тем значениям, которые хранятся в его учетной записи;
Удовлетворение жестким ограничениям на время ответа в режиме реального времени;
Обеспечение работы систем программирования, с помощью которых пользователи готовят свои программы;
Предоставление услуг на случай частичного сбоя системы.
Исторический обзор.
Несколько лет назад определение операционной системы могло бы выглядеть так: программное обеспечение, которое управляет аппаратными средствами. Но ландшафт компьютерного мира сильно изменился с тех пор, требуя более глубокого определения . Чтобы повысить эффективность использования аппаратуры, приложения проектируются в расчете на то, что они будут работать одновременно друг с другом. Если эти приложения не были разработаны должным образом, то они будут создавать друг другу помехи. Программная прослойка, называемая операционной системой, отделяет приложения от аппаратных средств, к которым они имеют доступ.
Когда пользователь обращается к компьютеру для выполнения действия (например, требует запустить приложение или распечатать документ), операционная система управляет программным обеспечением и аппаратными компонентами, чтобы выполнить запрос пользователя. Операционные системы – это в первую очередь диспетчеры ресурсов, они управляют аппаратурой, включая процессоры, память, устройства ввода/вывода и устройства связи. Они также должны управлять приложениями и другими программными элементами, которые в отличие от аппаратных компонентов не являются физическими объектами.
За последние 60 лет операционные системы прошли в своем развитии ряд определенных этапов или поколений. Длительность каждого из этих этапов составляет в среднем около 10 лет. В первых электронных цифровых вычислительных машинах 40-х годов операционных систем не было. Системы 50-х годов, как правило, были однозадачными и использовали специальные приемы для «смягчения» перехода от одной задачи к другой с целью наиболее эффективного использования компьютерной системы. Задача состояла из последовательности директив, которые выполнялись программой. Такие компьютеры назывались однопоточными системами пакетной обработки, так как программы и данные собирались в группы, или пакеты путем последовательной загрузки их на ленту или диск.
Системы 60-х годов также были системами пакетной обработки, но они использовали ресурсы компьютера с большей эффективностью путем выполнения нескольких задач одновременно. Системы этого периода времени усовершенствовали механизм распределение ресурсов, позволяя одной задаче использовать процессор, пока остальные использовали периферийные устройства. В рамках этого подхода разработчики операционных систем создали такие системы, которые работали в мультипрограммном режиме и справлялись с несколькими задачами одновременно, при этом, количество выполняемых одновременно задач определялось степенью мультипрограммности системы.
В 1964 году компания IBM представила свое семейство компьютеров System/360. Различные модели компьютеров этого семейства были разработаны в рамках доктрины полной совместимости аппаратных средств. Использование единой для всех моделей компьютеров операционной системы OS/360 позволяло быстро и безболезненно переносить задачи на более мощные компьютеры этой серии. Усовершенствованные операционные системы были разработаны для одновременного обслуживания многочисленных интерактивных пользователей. Системы с разделением времени были разработаны для поддержки нескольких пользователей, одновременно работающих в диалоговом режиме.
Системы реального времени должны отреагировать на запрос в течение определенного промежутка времени. Ресурсы системы реального времени очень часто недоиспользуются – для таких систем более важен быстрый ответ, чем эффективное использование ресурсов.
Длительность жизненного цикла задачи – интервал времени между постановкой задачи и возвратом результатов ее выполнения – была уменьшена до минут, а порой и секунд. Значимость систем, работающих в режиме разделения времени, для процесса разработки программ была продемонстрирована, когда МТИ, Дженерал Электрик и Bell Labs использовали систему CTSS для разработки ее преемницы, Multics. TSS, Multics и CP/CMS – все эти системы имели виртуальную память, которая позволяла программам обращаться к большему пространству адресов, чем фактически существует в основной памяти, которая также называется реальной или физической.
Системы 70-х годов были в основном многорежимными мультипрограммными системами, которые поддерживали пакетную обработку, разделение времени и приложения реального времени. Персональная вычислительная техника находилась в начальной стадии своего развития, стимулируемая предыдущими и продолжающимися разработками в сфере микропроцессорных технологий. Связь между компьютерными системами Соединенных Штатов становилась все интенсивнее по мере того, как все более широкое применение получали коммуникационные стандарты TCP/IP Министерства Обороны, особенно в военной и образовательной компьютерной среде. Возросло и количество проблем, связанных с безопасностью, благодаря увеличению объемов информации, передаваемой по уязвимым линиям связи.
80-е годы были десятилетием персональных компьютеров и рабочих станций. Вместо того, чтобы пересылать данные для их обработки на большую центральную вычислительную машину, сами вычислительные средства были перенесены в те места, где они были необходимыми. Персональные компьютеры оказались довольно простыми в использовании и обучении частично благодаря графическому интерфейсу пользователя (Graphical User Interface – GUI), в котором использовались графические элементы, такие как окна, значки и меню для облегчения общения пользователя с программами. По мере того, как технологические затраты уменьшались, передача информации посредством компьютерной сети становилась более практичной и менее дорогой. Распределенная обработка данных получила широкое распространение в рамках модели «клиент-сервер». Клиенты – это компьютеры, которые запрашивают различные услуги; серверы – это компьютеры, которые предоставляют запрашиваемые услуги.
Сфера разработки программного обеспечения продолжала развиваться, причем одна из инициатив правительства Соединенных Штатов состояла в осуществлении более жесткого контроля над программными разработками Министерства Обороны. К важным целям такой инициативы относится возможность повторного использования разработанного кода и реализация более высокой степени абстракции в языках программирования. Еще одним достижением в отрасли конструирования программного обеспечения явился переход к использованию процессов, которые включали множественные потоки команд, обладающие возможностью выполняться независимо друг от друга.
В конце 60-х годов Управление перспективных исследовательских программ (Advanced Research Projects Agency – ARPA) Министерства Обороны США запланировало создание сети, которая бы соединяла около дюжины компьютерных систем университетов и научно-исследовательских организаций, финансируемых этим управлением. Управление перспективных исследовательских программ приступило к реализации сети, которая очень быстро получила название ARPAnet – прародителя современной сети Интернет. Главным достоинством ARPAnet оказалась возможность быстрой и удобной связи посредством того, что позже стало называться электронной почтой (e-mail). Это важно и для современной сети Интернет: с электронной почтой мгновенная передача сообщений и файлов облегчает обмен информацией между сотнями миллионов людей по всему миру.
Сеть ARPAnet была создана для работы без централизованного управления. Протоколы для связи по ARPAnet получили название Протокола управления передачей/Протокола Интернет (Transmission Control Protocol/Internet Protocol – TCP/IP) и использовались для управления обменом информации между приложениями. Протоколы гарантировали передачу сообщений по некоторому маршруту от отправителя к получателю и обеспечивали их целостность. В конце концов, правительство разрешило доступ к сети Интернет в коммерческих целях.
Всемирная паутина дает возможность пользователям компьютеров размещать и просматривать мультимедиа-документы (т.е. текстовые, графические, анимационные, аудио- и видеофайлы) практически любой тематики. Несмотря на то, что сеть Интернет была создана более тридцати лет назад, рождение Всемирной Паутины не является таким уж давним событием. В 1989 году Тим Бернерс-Ли из Европейской организации ядерных исследований (European Center for Nuclear Research – CERN) занялся разработкой технологии совместного использования информации посредством текстовых документов, снабженных гиперссылками. Для внедрения новой технологии, он создал язык HTML (HyperText Markup Language – Гипертекстовый язык разметки). Он также разработал и Протокол передачи гипертекстов (Hypertext Transfer Protocol – HTTP), чтобы реализовать технологическую основу для своей новой гипертекстовой информационной системы, которую он назвал Всемирной Паутиной.
Для 90-х годов характерен экспоненциальный рост производительности аппаратных средств. Дешевая вычислительная мощность и память предоставили пользователям возможность работать на персональном компьютере с большими и сложными программами, малым и средним компаниям использовать эти недорогие в обслуживании машины для работы с обширными базами данных и вычислительными задачами, которые когда-то поручались универсальным вычислительным машинам. В 90-е годы значительно ускорился переход к распределенным вычислениям (т.е. использованию большого количества компьютеров для выполнения общей задачи). Поскольку требования к Интернет-подключениям росли, поддержка операционными системами сетевых задач получила статус стандартной. Домашние пользователи, а также пользователи организаций повышали производительность своего труда, используя доступ к ресурсам компьютерных сетей.
В 90-е годы на первые позиции в сфере компьютерного бизнеса вышла корпорация Microsoft. Операционные системы Windows, позаимствовавшие многие идеи, прежде реализованные операционными системами Macintosh (как, например, значки, меню, окна), предоставили пользователям возможность с легкостью управлять множеством параллельно выполняемых приложений.
Объектная технология стала популярной во многих областях вычислительной техники, поскольку огромное количество приложений было написано на объектно-ориентированных языках программирования, таких как C++ и Java. В объектно-ориентированных операционных системах объектами являются компоненты операционной системы. Понятия объектного ориентирования, такие как наследование и интерфейсы, использовались для создания модульных операционных систем, которые были проще в обслуживании и расширении, чем созданные по старым технологиям системы.
Большая часть коммерческого программного обеспечения продается в виде объектного кода. Исходный код не прилагается, что позволяет производителям скрыть информацию, которая представляет собой коммерческую тайну, и технологии программирования. Открытое программное обеспечение распространяется вместе с исходным кодом, позволяя отдельным лицам проверять и модифицировать его, прежде чем компилировать и запускать в действие. Операционная система Linux и веб-сервер Apache являются свободно-распространяемыми (бесплатными) и распространяются с исходным кодом.
В 80-х годах, Ричард Столлмен, разработчик программного обеспечения из Массачусетского Технологического Института, запустил проект, имевший целью восстановить и усовершенствовать основные инструменты операционной системы UNIX компании AT&T. Столлмен создал Проект свободного распространения программного обеспечения GNU, так как он был не согласен с политикой продажи прав на использование программного обеспечения. Открытое ПО способствует совершенствованию программной продукции посредством предоставления любому члену сообщества разработчиков возможности тестировать, отлаживать и улучшать приложения. Это увеличивает вероятность того, что скрытые ошибки, которые могут привести к нарушениям безопасности системы или логики решения задачи, будут выявлены и устранены. Более того, отдельные лица и корпорации могут модифицировать исходный код для создания заказных программных средств, которые будут отвечать требованиям определенной среды.
В 90-е годы операционные системы стали значительно удобнее для пользователя. Элементы графического интерфейса пользователя, встроенные в операционную систему Macintosh компании Apple в 80-е годы, продолжали широко использоваться во многих операционных системах и становились более изысканными. Операционные системы также поддерживали технологию «Plug-and-Play», предоставляя пользователям возможность подключать и отключать аппаратные средства, не перенастраивая операционную систему вручную.
Посредническое программное обеспечение – это программное обеспечение, которое является связующим звеном между двумя отдельными приложениями, как правило, посредством сети и между несовместимыми машинами. Данное программное обеспечение имеет огромное значение для веб-служб, упрощая связь между множеством различных архитектур. Веб-службы оперируют в соответствии с рядом согласованных стандартов, которые позволяют двум компьютерным приложениям осуществлять связь и обмен данными посредством сети Интернет. Они являются готовыми к использованию элементами программного обеспечения в сети Интернет.
Появление в 1981 году Персонального Компьютера IBM (часто называемого просто «ПК») послужило причиной возникновения и быстрого развития мощного рынка программного обеспечения, в рамках которого независимые поставщики ПО (Independent Software Vendors – ISV) могли сбывать пакеты программ для персональных компьютеров IBM, ориентированные на работу с операционной системой MS-DOS. Если некая операционная система представляет собой среду, удобную для быстрой и эффективной разработки приложений, то такая операционная система и аппаратные средства вероятней всего будут пользоваться спросом на рынке. Если же база приложений (т.е. сочетание аппаратных средств и операционной системы, в которой разрабатываются приложения) заняла прочные позиции, пользователей и разработчиков программного обеспечения будет очень трудно склонить к переходу на абсолютно новую среду разработки приложений в другой операционной системе.
Операционные системы, предназначенные для работы в среде с высокой производительностью, должны разрабатываться в расчете на использование основных запоминающих устройств больших объемов, специализированных аппаратных средств, а также большого количества процессов. Встроенным системам свойственен малый объем специализированных ресурсов, предназначенных для обеспечения функциональных возможностей таких устройств, как сотовые телефоны и карманные компьютеры. В такой среде эффективное управление ресурсами является ключом к созданию хорошей операционной системы.
Задачи систем реального времени должны решаться в течение определенного (как правило, короткого) промежутка времени. Например, автопилот самолета должен постоянно осуществлять измерение скорости, высоты и направления. Такие задачи не могут ожидать в течение неопределенного промежутка времени (или совсем не могут ожидать) завершения других не столь важных задач.
Есть разновидность операционных систем, которые должны уметь управлять как доступными, так и недоступными в данной конфигурации аппаратными ресурсами вычислительной машины. Виртуальная машина (virtual machine – VM) – это программный элемент, который функционирует таким же образом, как и пользовательское приложение, поверх базовой операционной системы. Операционная система виртуальной машины управляет ресурсами последней. Одно из применений виртуальных машин состоит в обеспечении параллельного выполнения множества экземпляров операционных систем. Еще одно применение – эмуляция, – использование программ и аппаратуры для имитации функциональных возможностей программного обеспечения и аппаратных средств, физически недоступных в системе. Создавая иллюзию непосредственного выполнения приложений на различной аппаратуре и операционных системах, виртуальные машины способствуют развитию переносимости (возможности программного обеспечения функционировать на различных платформах).
Пользователь обращается к операционной системе посредством одного или нескольких пользовательских приложений, а также часто посредством специального приложения, называемого оболочкой. Совокупность программ, объединяющая основные компоненты операционной системы, называется ядром. Как правило, к этим компонентам относятся: планировщик процессов, диспетчер памяти, диспетчер ввода-вывода, диспетчер межпроцессного взаимодействия (IPC Manager), диспетчер файлов.
Практически все современные операционные системы поддерживают мультипрограммную среду, в которой многочисленные процессы могут выполняться параллельно. Ядро управляет выполнением процессов. Программные компоненты, которые выполняются независимо друг от друга, но используют одну область памяти для совместной обработки общих данных, называются потоками.
Если процесс намеревается получить доступ к устройству ввода/вывода, ему необходимо послать системный вызов операционной системе. Такой запрос впоследствии будет обработан драйвером устройства, который является программным компонентом операционной системы и взаимодействует непосредственно с аппаратными ресурсами. Драйвер располагает специфическим для данного устройства набором команд, предназначенных для выполнения запрашиваемых операций ввода/вывода.
Пользователи привыкли рассчитывать на определенные свойства операционных систем, такие как: эффективность, живучесть, масштабируемость, расширяемость, мобильность, защищенность и безопасность, интерактивность, практичность.
В монолитной операционной системе каждый компонент включен в ядро и может непосредственно взаимодействовать с другими компонентами. Монолитные операционные системы считаются высокоэффективными. Недостаток такой архитектуры заключается в сложности определения источника скрытых ошибок.
Многоуровневый подход к операционным системам пытается решить эту проблему, организовав компоненты, выполняющие сходные функции, в уровни. Каждый уровень системы взаимодействует только с соседним, расположенным непосредственно над или под ним. При этом подходе, запросу на выполнение пользовательского процесса может понадобиться пройти через многие уровни, прежде чем он будет удовлетворен. Поскольку для передачи данных с одного уровня на другой должны быть использованы промежуточные элементы, производительность системы снижается, в отличие от монолитного ядра, которому может понадобиться лишь один вызов, чтобы обслужить аналогичный запрос.
Операционная система на основе микроядра предоставляет лишь малый набор услуг – это необходимое условие сохранения небольших размеров ядра и обеспечения его масштабируемости. Микроядра демонстрируют высокую степень модульности, что делает их расширяемыми, переносимыми и масштабируемыми. Однако такая модульность достигается за счет повышения интенсивности межмодульного взаимодействия, что может привести к снижению производительности системы.
Сетевая операционная система функционирует на одном компьютере и предоставляет собственным процессам доступ к таким ресурсам, как файлы и процессоры удаленных компьютеров. Распределенная операционная система – это единая операционная система, управляющая ресурсами более чем одной компьютерной системы. К ее задачам относятся обеспечение прозрачности, масштабируемость, отказоустойчивость и совместимость.