Операционные системы. 2

Министерство  образования Российской Федерации

Уфимский  государственный авиационный технический  университет 
 
 
 
 
 
 
 
 
 
 
 
 
 

КУРСОВАЯ  РАБОТА ПО ИНФОРМАТИКЕ НА ТЕМУ:

ОПЕРАЦИОННЫЕ  СИСТЕМЫ 
 

Выполнил: студент группы

МО-126(ФИРТ)

Кинзин  Р.А. 

Проверила: доц. каф. ВМиК

Николаева М.А. 
 
 
 
 
 
 
 
 
 
 
 
 
 

Уфа 2009 
 
 

СОДЕРЖАНИЕ

Введение………………………………………………………………………….3

  1. Общие сведения……………………………………………………………..3
    1. Определение ОС……………………………………...….….......…..3
    2. Назначение ОС……………………………………………………....3
    3. Функции ОС………………………………...…....……....………….4
  2. Архитектура ОС…………………………………………...….…...………..5
    1. Ядро……………………………………………………...…………...5
    2. Вспомогательные модули...…………………………...……...….....6
  3. Классификация ОС………………………………………………………..11

           3.1. Операционные системы пакетной обработки…………………….12

           3.2. Операционные системы разделения времени…………………….12

           3.3. Операционные системы реального времени……………………...13

           3.4. Диалоговые операционные системы…………….……….......…...13

           3.5. Сетевые операционные системы…………………………………..14

           3.6. Поддержка многозадачности………………………………………15

           3.7. Поддержка многопользовательского  режима…………………….15

           3.8. Поддержка многонитевости…………………………………….....15

           3.9. Многопроцессорная обработка………………………....….……...15

4. Эволюция ОС…………………………………………………………….....16

5. Семейство Windows (Microsoft)………………………………………......19

6. Семейство MacOS (Apple)……………………………………....……....…22

7. Семейство Unix……………………………………………………………...24

            7.1 Операционная система UNIX………………………….....………..24

            7.2 Операционная система LINUX…………………………………….25

                  7.2.1 Общая характеристика ОС LINUX……………………….….25

                  7.2.2 Дистрибутивы LINUX…………………………………...…...26

                  7.2.3 Графические интерфейсы LINUX…………………………...26

8. Заключение…………………………………………………………………..28

9. Вывод…………………………………………………………………………28

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

Введение

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

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

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

  1. Общие сведения.
    1. Определение ОС.

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

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

    1. Назначение  ОС.

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

     Операционная  система является посредником между  ЭВМ и её пользователем. Она делает работу с ЭВМ более простой, освобождая пользователя от обязанностей распределять ресурсы и управлять ими. Операционная система осуществляет анализ запросов пользователя и обеспечивает их выполнение. Запрос отражает необходимые ресурсы  и требуемые действия ЭВМ и  представляется последовательностью  команд на особом языке директив операционной системы. Такая последовательность команд называется заданием.[1] 

    1. Функции ОС.

  Основными функциями, которые выполняются  операционной системой,  являются:

      1) приём от пользователя заданий  или команд, сформулированных на  соответствующем языке и их  обработка;

      2) приём и исполнение программы  запроса на запуск или приостановку  других программ;

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

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

      5) идентификация программ;

      6) обеспечение работы системы  управления файлами базы данных, что позволяет резко увеличить  эффективность программного обеспечения;

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

      8) обеспечение функции по организации  и управлению всеми операциями  ввода и вывода;

      9) удовлетворение жёстким ограничениям  на время  выполнения в режиме  реального времени;

      10) распределение памяти:

             а) организация виртуальной памяти;

             б) в большинстве современных  систем.

      11) планирование и диспетчеризация  в соответствии с заданием  на выполнение;

      12) организация обмена сообщениями  и данными между выполняющимися  программами;

      13) защита одной программы от  влияния других программ, обеспечение  сохранности данных;

      14) предоставление услуг на случай  частичного сбоя системы;

      15) обеспечение работы систем  программирования, с помощью которых  пользователи готовят свои программы.[6] 

  1. Архитектура ОС.

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

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

     ядро  — модули, выполняющие основные функции ОС;

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

    1. Ядро.
 

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

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

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

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

    
    1. Вспомогательные модули.
 

     Вспомогательные модули ОС обычно подразделяются на следующие  группы:

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

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

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

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

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

     Ядро  в привилегированном  режиме

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

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

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

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

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

Архитектура ОС, основанная на привилегированном  ядре и приложениях пользовательского режима, стала, по существу, классической. Ее используют многие популярные операционные системы, в том числе многочисленные версии UNIX, VAX VMS, IBM OS/390, OS/2, и с определенными модификациями — Windows NT.[4] 

Многослойная  структура ядра

     Ядро  может состоять из следующих слоев.

  • Средства аппаратной поддержки ОС. До сих пор об операционной системе говорилось как о комплексе программ, но, вообще говоря, часть функций ОС может выполняться и аппаратными средствами. Поэтому иногда можно встретить определение операционной системы как совокупности программных и аппаратных средств, что и отражено на рис. 3.8. К операционной системе относят, естественно, не все аппаратные устройства компьютера, а только средства аппаратной поддержки ОС, то есть те, которые прямо участвуют в организации вычислительных процессов: средства поддержки привилегированного режима, систему прерываний, средства переключения контекстов процессов, средства защиты областей памяти и т. п.
  • Машинно-зависимые компоненты ОС. Этот слой образуют программные модули, в которых отражается специфика аппаратной платформы компьютера. В идеале этот слой полностью экранирует вышележащие слои ядра от особенностей аппаратуры. Это позволяет разрабатывать вышележащие слои на основе машинно-независимых модулей, существующих в единственном экземпляре для всех типов аппаратных платформ, поддерживаемых данной ОС. Примером экранирующего слоя может служить слой HAL операционной системы Windows NT.
  • Базовые механизмы ядра. Этот слой выполняет наиболее примитивные операции ядра, такие как программное переключение контекстов процессов, диспетчеризацию прерываний, перемещение страниц из памяти на диск и обратно и т. п. Модули данного слоя не принимают решений о распределении ресурсов — они только отрабатывают принятые «наверху» решения, что и дает повод называть их исполнительными механизмами для модулей верхних слоев. Например, решение о том, что в данный момент нужно прервать выполнение текущего процесса А и начать выполнение процесса В, принимается менеджером процессов на вышележащем слое, а слою базовых механизмов передается только директива о том, что нужно выполнить переключение с контекста текущего процесса на контекст процесса В.
  • Менеджеры ресурсов. Этот слой состоит из мощных функциональных модулей, реализующих стратегические задачи по управлению основными ресурсами вычислительной системы. Обычно на данном слое работают менеджеры (называемые также диспетчерами) процессов, ввода-вывода, файловой системы и оперативной памяти. Разбиение на менеджеры может быть и несколько иным, например менеджер файловой системы иногда объединяют с менеджером ввода-вывода, а функции управления доступом пользователей к системе в целом и ее отдельным объектам поручают отдельному менеджеру безопасности. Каждый из менеджеров ведет учет свободных и используемых ресурсов определенного типа и планирует их распределение в соответствии с запросами приложений. Например, менеджер виртуальной памяти управляет перемещением страниц из оперативной памяти на диск и обратно. Менеджер должен отслеживать интенсивность обращений к страницам, время пребывания их в памяти, состояния процессов, использующих данные, и многие другие параметры, на основании которых он время от времени принимает решения о том, какие страницы необходимо выгрузить и какие — загрузить. Для исполнения принятых решений менеджер обращается к нижележащему слою базовых механизмов с запросами о загрузке (выгрузке) конкретных страниц. Внутри слоя менеджеров существуют тесные взаимные связи, отражающие тот факт, что для выполнения процессу нужен доступ одновременно к нескольким ресурсам — процессору, области памяти, возможно, к определенному файлу или устройству ввода-вывода. Например, при создании процесса менеджер процессов обращается к менеджеру памяти, который должен выделить процессу определенную область памяти для его кодов и данных.
  • Интерфейс системных вызовов. Этот слой является самым верхним слоем ядра и взаимодействует непосредственно с приложениями и системными утилитами, образуя прикладной программный интерфейс операционной системы. Функции API, обслуживающие системные вызовы, предоставляют доступ к ресурсам системы в удобной и компактной форме, без указания деталей их физического расположения.
 

 

Рис. 3.3. Многослойная структура ядра ОС

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

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

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

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

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

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

     Переносимость операционной системы

     Если  код операционной системы может быть сравнительно легко перенесен с процессора одного типа на процессор другого типа и с аппаратной платформы одного типа на аппаратную платформу другого типа, то такую ОС называют переносимой (portable), или мобильной.

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

  • Большая часть кода должна быть написана на языке, трансляторы которого имеются на всех машинах, куда предполагается переносить систему. Такими языками являются стандартизованные языки высокого уровня. Большинство переносимых ОС написано на языке С, который имеет много особенностей, полезных для разработки кодов операционной системы, и компиляторы которого широко доступны. Программа, написанная на ассемблере, является переносимой только в тех случаях, когда перенос операционной системы планируется на компьютер, обладающий той же системой команд. В остальных случаях ассемблер используется только для тех непереносимых частей системы, которые должны непосредственно взаимодействовать с аппаратурой (например, обработчик прерываний), или для частей, которые требуют максимальной скорости (например, целочисленная арифметика повышенной точности).
  • Объем машинно-зависимых частей кода, которые непосредственно взаимодействуют с аппаратными средствами, должен быть по возможности минимизирован. Так, например, следует всячески избегать прямого манипулирования регистрами и другими аппаратными средствами процессора. Для уменьшения аппаратной зависимости разработчики ОС должны также исключить возможность использования по умолчанию стандартных конфигураций аппаратуры или их характеристик. Аппаратно-зависимые параметры можно «спрятать» в программно-задаваемые данные абстрактного типа. Для осуществления всех необходимых действий по управлению аппаратурой, представленной этими параметрами, должен быть написан набор аппаратно-зависимых функций. Каждый раз, когда какому-либо модулю ОС требуется выполнить некоторое действие, связанное с аппаратурой, он манипулирует абстрактными данными, используя соответствующую функцию из имеющегося набора. Когда ОС переносится, то изменяются только эти данные и функции, которые ими манипулируют. Например, в ОС Windows NT диспетчер прерываний преобразует аппаратные уровни прерываний конкретного типа процессора в стандартный набор уровней прерываний IRQL, с которыми работают остальные модули операционной системы. Поэтому при переносе Windows NT на новую платформу нужно переписать, в частности, те коды диспетчера прерываний, которые занимаются отображением уровней прерывания на абстрактные уровни IRQL, а те модули ОС, которые пользуются этими абстрактными уровнями, изменений не потребуют.
  • Аппаратно-зависимый код должен быть надежно изолирован в нескольких модулях, а не быть распределен по всей системе. Изоляции подлежат все части ОС, которые отражают специфику как процессора, так и аппаратной платформы в целом. Низкоуровневые компоненты ОС, имеющие доступ к процессорно-зависимым структурам данных и регистрам, должны быть оформлены в виде компактных модулей, которые могут быть заменены аналогичными модулями для других процессоров. Для снятия платформенной зависимости, возникающей из-за различий между компьютерами разных производителей, построенными на одном и том же процессоре (например, MIPS R4000), должен быть введен хорошо локализованный программный слой машинно-зависимых функций.[4]
 
  1. Классификация ОС.

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

Операционные  системы Характеристики  операционной системы
Характер  взаимодействия пользователя с заданием Число одновременно обслуживаемых пользователей Обеспечиваемый  режим работы ЭВМ
Пакетной  обработки Взаимодействие  невозможно или ограничено Один или  несколько Однопрограммный или мультипрограммный
Разделения  времени Диалоговый Несколько Мультипрограммный
Реального времени Оперативный   Многозадачный
Диалоговая Диалоговый Один Однопрограммный
 

     3.1. Операционные системы пакетной обработки.

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

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

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