рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

ОПЕРАЦИОННЫЕ СИСТЕМЫ, СРЕДЫ И ОБОЛОЧКИ

ОПЕРАЦИОННЫЕ СИСТЕМЫ, СРЕДЫ И ОБОЛОЧКИ - раздел Образование, Федеральное Агентство По Образованию Омский Государственный Институт...

Федеральное агентство по образованию

Омский государственный институт сервиса

Кафедра высшей математики и информатики

 

С. Ф. Храпский

 

 

ОПЕРАЦИОННЫЕ СИСТЕМЫ, СРЕДЫ И ОБОЛОЧКИ

ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Учебное пособие

 

 

Д О П У Щ Е Н О

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

В качестве учебного пособия

Для студентов высших учебных заведений, обучающихся

по специальности «Прикладная информатика (в сфере сервиса)»

 

УДК 681.3

Х – 90

Храпский С. Ф.

Операционные системы, среды и оболочки. Основные теоретические сведения: Учебное пособие. – Омск: ОГИС, 2005. – 268 c.

 

ISBN 5-93252-039-6

 

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

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

Учебное пособие подготовлено в соответствии с требованиями ГОС ВПО специальности 351400 «Прикладная информатика (в сфере сервиса)».

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

УДК 681.3

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

 

Рецензенты:

д-р техн. наук, профессор В. Ю. Юрков

(Сибирская государственная автомобильно-дорожная академия)

 

канд. техн. наук, доцент В. И. Стариков

(Омский государственный институт сервиса)

 

Ответственный за выпуск

зав. кафедрой ВМиИ, канд. пед. наук, доцент О. Н. Лучко

 

ISBN 5-93252-039-6 Ó Омский государственный

институт сервиса

Оглавление

Предисловие………………………………………...……………………………………..... Введение……………………………………………………………………………………... 1. Управление процессами в автономных однопроцессорных вычислительных машинах…………………………...…………… 1.1. Понятия вычислительного процесса и ресурса…………………………………….. 1.2. Планирование процессов…………………………………………………………….. 1.3. Межпроцессное взаимодействие……………………………………………………. 1.4. Понятия потока («нити») и многопоточности……………………………………… Контрольные вопросы и задания………………………………………………………… 2. Управление ресурсами в автономных однопроцессорных компьютерах…….…. 2.1. Управление памятью…………………………………………………………………. 2.2. Управление вводом-выводом………………………………………………………... 2.3. Управление файлами и файловая система………………………………………….. Контрольные вопросы и задания…………………...……………………………………. 3. Управление процессами и ресурсами в автономных многопроцессорных вычислительных машинах………………………………………………………………. 3.1. Реализация операционных систем многопроцессорных вычислительных машин. 3.2.Планирование и синхронизация в многопроцессорных вычислительных машинах…….................………………...... Контрольные вопросы и задания………………………………………...………………. 4.Управление процессами и ресурсами в многомашинных вычислительных системах.................................................................................................. 4.1. Способы организации управления процессами и ресурсами в многомашинных вычислительных системах……………………………………………. 4.2. Понятия сетевой и распределенной операционных систем………………………... 4.3. Варианты реализации распределенных операционных систем……………………. Контрольные вопросы и задания…………………………...……………………………. 5. Общие концепции разработки операционных систем………………………….. 5.1. Основные принципы построения операционных систем ………………………….. 5.2. Архитектурные особенности проектирования операционных систем……………. 5.3. Принципы построения системных и прикладных программных интерфейсов…... Контрольные вопросы и задания……………………...…………………………………. 6. История развития операционных систем и эволюция их функциональных характеристик………………………..……….…..... 6.1.Операционные системы разных этапов разработки вычислительных машин.......... 6.2. История развития и характеристики операционных систем UNIX......................... 6.3. История развития и характеристики операционных систем семейства Windows.. Контрольные вопросы и задания……………………………...…………………………. 7. Пример практической реализации операционной системы: UNIX………………. 7.1. Обзор системы UNIX…………………………………………………………………. 7.1.1. Общие представления…………………………………………………………….. 7.1.2. Интерфейсы системы UNIX……………………………………………………… 7.1.3. Оболочка и утилиты системы UNIX…………………………………………….. 7.1.4. Структура ядра системы UNIX…………………………………………………... 7.2. Процессы в UNIX……………………………………………………………………... 7.2.1. Основные понятия………………………………………………………………… 7.2.2. Реализация процессов в UNIX…………………………………………………… 7.2.3. Планирование в системе UNIX…………………………………………………... 7.3. Управление памятью в UNIX………………………………………………………… 7.3.1. Основные понятия………………………………………………………………… 7.3.2. Реализация управления памятью в UNIX……………………………………….. 7.4. Ввод-вывод в системе UNIX…………………………………………………………. 7.4.1. Основные понятия………………………………………………………………… 7.4.2. Реализация ввода-вывода в системе UNIX……………………………………… 7.4.3. Потоки данных в UNIX……………………………………….....……...………... 7.5. Файловые системы UNIX…………………………………………………………….. 7.5.1. Основные понятия………………………………………………………………… 7.5.2. Реализация классической файловой системы UNIX…………………....……… 7.5.3. Реализация файловой системы Berkeley Fast…………………………………... 7.5.4. Реализация файловой системы Linux.................................................................... 7.5.5. Реализация файловой системы NFS...................................................................... 7.6. Безопасность в UNIX..................................................................................................... 7.6.1. Основные понятия................................................................................................... 7.6.2. Реализация безопасности в UNIX.......................................................................... Контрольные вопросы и задания........................................................................................ 8. Пример практической реализации операционной системы: Windows 2000.......... 8.1. Обзор структуры операционной систем Windows 2000............................................. 8.1.1. Структура системы.................................................................................................. 8.1.2. Реализация объектов................................................................................................ 8.1.3. Подсистемы окружения........................................................................................... 8.2. Процессы и потоки в Windows 2000............................................................................ 8.2.1. Основные понятия.................................................................................................... 8.2.2. Межпроцессное взаимодействие............................................................................ 8.2.3. Реализация процессов и потоков............................................................................ 8.2.4. Загрузка Windows 2000............................................................................................ 8.3. Управление памятью в Windows 2000......................................................................... 8.3.1. Основные понятия.................................................................................................... 8.3.2. Реализация управления памятью............................................................................ 8.4. Ввод-вывод в системе Windows 2000........................................................................... 8.4.1. Основные понятия.................................................................................................... 8.4.2. Реализация ввода-вывода в Windows 2000............................................................ 8.5. Файловые системы Windows 2000................................................................................ 8.5.1. Файловые системы типа FAT................................................................................. 8.5.2. Файловая система типа NTFS................................................................................. 8.6. Безопасность в Windows 2000....................................................................................... 8.6.1. Основные понятия.................................................................................................... 8.6.2. Реализация защиты в Windows 2000...................................................................... Контрольные вопросы и задания........................................................................................ Заключение.............................................................................................................................. Библиографический список................................................................................................. Словарь терминов и определений...................................................................................... Алфавитно-предметный указатель....................................................................................            

Предисловие

 

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

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

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

Учебное пособие подготовлено кандидатом технических наук, проректором ОГИС по информационным технологиям Сергеем Филипповичем Храпским.

В разделах 7 и 8 использованы материалы книги Э. Таненбаума «Современные операционные системы» (см. Библиографический список).

Данное учебное пособие по порядку изучения является следующим за учебным пособием С.Ф. Храпского «Вычислительные системы, сети и телекоммуникации» (ОГИС, 2005 г.). Поэтому при изложении материала предполагается наличие у читателя предварительных знаний по основным понятиям и терминологии вычислительной техники.

 

 

Автор

 

 


Введение

 

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

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

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

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

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

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

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

 


Управление процессами в автономных

Однопроцессорных вычислительных машинах

Понятия вычислительного процесса и ресурса

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

Планирование процессов

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

Межпроцессное взаимодействие

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

Понятия потока («нити») и многопоточности

Когда говорят о процессах, то тем самым хотят отметить, что операци­онная система поддерживает их обособленность: у каждого процесса имеется свое… Однако желательно иметь еще и возможность задействовать внутренний… Многопоточность обеспечивает возможность параллельного вы­полнения нескольких видов операций в одной прикладной…

Резюме

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

 

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

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

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

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

 

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

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

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

Контрольные вопросы и задания

1. Дайте определение понятиям «вычислительный процесс» и «ресурс».

2. Как классифицируются процессы и ресурсы?

3. Решение каких задач включает в себя планирование процессов?

4. Перечислите виды состояний процессов.

5. Что такое контекст и дескриптор процесса?

6. Каковы возможные причины выхода процесса из состояния выполнения?

7. Охарактеризуйте наиболее распространенные алгоритмы плани-рования процессов.

8. В чем заключается сущность алгоритмов планирования процес-сов, основанных на квантовании?

9. Опишите различия между относительными и абсолютными прио-ритетами.

10. Дайте определение понятиям вытесняющая и невытесняющая многозадачность.

11. Дайте определение понятию «прерывание».

12. Какие этапы реализуются механизмом обработки прерываний?

13. Приведите примеры внешних прерываний.

14. Какими событиями вызываются внутренние прерывания?

15. Поясните понятие программного прерывания.

16. Охарактеризуйте применяемые дисциплины обслуживания прерываний.

17. В чем заключается механизм синхронизации процессов?

18. Что такое «критическая область» программы и с какими целями она используется?

19. С помощью каких механизмов осуществляется взаимодействие процессов?

20. В чем различие понятий очередей процессов и взаимоблоки-ровок процессов?

21. Перечислите способы преодоления тупиковых ситуаций при взаимодействии процессов.

22. Опишите понятие монитора как высокоуровневого средства синхронизации процессов.

23. В чем различие понятий «процесс» и «поток»?

24. С какой целью в ОС используется механизм потоков («нитий»)?


Управление ресурсами в автономных

Однопроцессорных компьютерах

 

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

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

Управление вводом-выводом

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

Управление файлами и файловая система

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

Резюме

 

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

Для идентификации команд и переменных используются символьные имена (метки), виртуальные адреса и физические адреса.

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

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

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

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

 

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

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

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

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

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

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

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

Информация на магнитных дисках размещается и передается бло­ками. В некоторых ОС такая наименьшая единица обмена называется кластером. При этом кластер может состоять из нескольких блоков.

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

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

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

Некоторые ОС обеспечивают отображение файлов в адресное пространство выполняемого процесса.

Контрольные вопросы и задания

1. Охарактеризуйте существующие методы управления оперативной памятью.

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

3. Укажите отличие блок-ориентированных устройств ввода-вывода от байт-ориентированных?

4. В чем заключается смысл разбиения программного обеспечения ввода-вывода на несколько уровней?

5. Приведите примеры разделяемых и выделенных устройств ввода-вывода.

6. Опишите механизм прямого доступа устройств к памяти.

7. Дайте определение понятиям «система управления файлами» и «файловая система».

8. Какие функции в операционных системах выполняет система управления файлами?

9. Опишите структуру магнитного диска.

10. Дайте понятие логической организации файлов.

11. Охарактеризуйте наиболее известные способы физической организации файлов.

12. Какие уровни составляют многоуровневую модель функционирования файловой системы?


Управление процессами и ресурсами в автономных многопроцессорных вычислительных машинах

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

Планирование и синхронизация в многопроцессорных вычислительных машинах

На однопроцессорной ВМ планирование одномерно. Единственный вопрос, на который должен быть каждый раз получен ответ, – какой процесс должен быть… Рассмотрим планирование независимых процессов. Простейший алгоритм планирова­ния независимых процессов (или потоков) состоит в поддержании единой струк­туры данных…

Резюме

 

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

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

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

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

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

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

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

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

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

При планировании процессов, связанных друг с другом каким-либо способом, используется алгоритм «совместного использования (или разделения) пространства».

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

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

Контрольные вопросы и задания

1. В чем заключается основное отличие в реализации ОС для многопроцессорных ВМ от ОС однопроцессорных ВМ?

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

3. Какими достоинствами и недостатками обладает способ организации ОС многопроцессорных ВМ по схеме «ведущий-ведомый»?

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

5. Какие факторы усложняют планирование процессов в многопроцессорных ВМ по сравнению с аналогичным планированием в однопроцессорных машинах?

6. Какой механизм применяется для преодоления удержания процессом спин-блокировки?

7. Представьте достоинства использования двухуровневого алгоритма планирования процессов в многопроцессорных ВМ.

8. Опишите алгоритм «совместного использования пространства», его преимущества и недостатки.

9. Каким образом выполняется синхронизация центральных процессоров в многопроцессорных ВМ?

 

 


Управление процессами и ресурсами

В многомашинных вычислительных системах

Способы организации управления процессами

И ресурсами в многомашинных вычислительных системах

Одним из эффективнейших направлений развития вычислитель-ной техники стало построение так называемых многомашинных вычислительных систем (далее –… Под ММВС сосредоточенного типа понимают многомодульную (или многоузловую)… ММВС распределенного типа или распределенные вычислительные системы имеют существенное сходство с ММВС…

Понятия сетевой и распределенной операционных систем

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

Варианты реализации распределенных

Операционных сис­тем

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

Резюме

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

Различают два класса многомашинных вычислительных систем: ММВСсосредоточенного типа и ММВС распределенного типа (которые обычно называют распределенными вычислительными системами или вычислительными сетями).

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

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

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

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

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

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

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

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

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

Одним из наиболее эффективных способов построения распределенных ОС является установка специального промежуточного уровня программного обеспечения поверх сетевой операционной сис­темы. Этот уровень предоставляет однородный уровень для взаимодействующих с ним приложений. Среди различных типов про­межуточного программного обеспечения следует выделить документное, файловое, объектное и координационное. Примерами промежуточного программного обеспече­ния служат такие системы, как WWW, AFS, CORBA, Linda, Jini.

 

Контрольные вопросы и задания

 

1. С какими целями ВМ объединяют в многомашинные вычислительные системы?

2. Охарактеризуйте особенности построения и отличия ММВС сосредоточенного и распределенного типов.

3. В чем важнейшее отличие ММВС от автономных (централизованных) ВМ?

4. Посредством чего в ММВС осуществляется межпроцессное взаимодействие?

5. Представьте основные системные вызовы для отправки и получения сообщений.

6. Чем отличаются блокирующие (синхронные) системные вызовы от неблокирующих (асинхронных)?

7. Какие проблемы возникают при организации программ с неблокирующи­ми примитивами и какие методы применяются для разрешения этих проблем?

8. В чем заключается основная идея так называемого вызова удаленных процедур?

9. Опишите механизмы реализации вызовов удаленных процедур.

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

11. Дайте определение понятиям «сетевая операционная система» и «сетевой протокол».

12. По какому прин­ципу строятся сетевые средства связи?

13. Опишите основные функции вертикальных и горизонтальных протоколов.

14. Что понимается под стеком протоколов вычислительной сети?

15. В чем отличие распределенных операционных систем от традиционных сетевых ОС?

16. Охарактеризуйте наиболее эффективные способы реализации распределенных операционных сис­тем.

17. Приведите примеры практического построения разных типов про­межуточного программного обеспечения.


Общие концепции разработки

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

 

Основные принципы построения операционных систем

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

Архитектурные особенности проектирования

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

В общем случае «структура» монолитнойОС представляет собой как раз отсутствие структуры. Такая ОС написана как набор процедур, каждая из которых… 1. Главная программа, которая вызывает требуемые сервисные процедуры; 2. Набор сервисных процедур, реализующих системные вызовы;

Принципы построения системных и прикладных программных интерфейсов

Операционная система всегда выступает как интерфейс между аппаратурой машины и пользователем с его задачами. Под интерфейсами операционных систем… 1. Управление процессами, которое включает в себя следующий набор основ­ных… – запуск, приостановка и снятие процесса с выполнения;

Резюме

 

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

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

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

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

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

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

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

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

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

 

Контрольные вопросы и задания

1. Перечислите основные принципы построения операционных систем.

2. Опишите принцип модульности построения ОС.

3. Охарактеризуйте принцип генерируемости ОС.

4. Какие преимущества дает реализация принципа функциональной избыточности?

5. Изложите основные положения принципа виртуализации.

6. В чем заключается принцип независимости программ от внешних устройств?

7. Что дает на практике построение ОС с учетом принципа совместимости?

8. Покажите практическое значение принципа переносимости ОС.

9. Опишите принципы обеспечения безопасности.

10. Перечислите и охарактеризуйте основные структурные модели, применяемые при проектировании ОС.

11. Для выполнения каких задач предназначены системные и приклад­ные программные интерфейсы?

12. Какие возможности предоставляют разработчику программного обеспечения функции прикладного программного интерфейса?

13. Опишите основные варианты реализации функций прикладного программного интерфейса, укажите их достоинства и недостатки.


История развития операционных систем

И эволюция их функциональных характеристик

Операционные системы разных этапов разработки вычислительных машин

Следующим важным этапом развития ВМ стал переход в 1960-х годах от отдельных полупроводниковых элементов типа транзисторов к интегральным… Наряду с организацией мультипрограммного режима для систем пакетной обработки… Следующий период в эволюции операционных систем связан с появлением больших интегральных схем (БИС). В 1980-х годах…

История развития и характеристики

Операционных систем UNIX

История операционной системы UNIX началась в 1969 году с совместного проекта Массачусетского технологического института, исследовательской… Поначалу UNIX была сравнительно маленькой, очень простой в использовании и… Параллельно с указанной ветвью операционной системы UNIX специалисты Калифорний­ского университета в Беркли…

История развития и характеристики

Операционных систем семейства Windows

Особое значение в истории и сегодняшнем дне операционных систем имеет семейство продуктов Windows корпорации Microsoft как наиболее популярных ОС… Как уже отмечалось выше, вплоть до версий Windows 3.1/3.11 это была не… – новое 32-разрядное ядро;

Резюме

 

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

 

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

Следующий период в эволюции операционных систем связан с появлением в 1980-х годах ВМ на больших интегральных схем. ВМ стали доступны отдельным небольшим организациям и учреждениям, а впервые предложенные в то время «персональные компьютеры» были доступны уже отдельному человеку. ВМ все чаще объдинялись в распределенные вычислительные сети. Такие ВМ и сети на их основе стали широко использоваться неспециалистами, что потребовало разработки «дружественного» программного поддержки сетевого взаимодействия. На рынке операционных систем в то время начали доминировать системы двух классов: многопользовательские многозадачные (мультипрограммные) ОС клона UNIX и однопользовательские однозадачные (однопрограммные) ОС клона MS-DOS.

ОС UNIX получила несколько ветвей развития исходной архитектуры. Это ОС System V (корпорации AT&T) и BSD (Калифорний­ского университета в Беркли). Впоследствии на основе обеих ветвей был создан ряд новых версий ОС UNIX. Третья самостоятельная ветвь развития UNIX начиналась с микроядерной системы MINIX, за которой в 1991 году последовала зна­чительно более мощная многоза­дачная многопользовательская ОС LINUX.

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

Операционные системы корпорации Microsoft под названием MS-DOS и их аналоги других корпораций были разработаны для персональных компьютеров клона IBM PC. Управление компьютером при помощи команд DOS, вводимых в режиме командной строки, требует определенных знаний, большой аккуратности и внимания. Для того, чтобы сделать общение с компьютером более простым, были предложены так называемые программы-оболочки, представляющие собой программные надстройки операционной системы, позволяющие пользователю осуществлять действия по управлению ресурсами компьютера в рамках более развитого и удобного, чем командная строка, псевдографического интерфейса,. Следующим историческим шагом в развитии оболочек операционных систем стало появление в 1986 г. графической многооконной операционной оболочки Windows от корпорации Microsoft, которая работала на базе MS-DOS, а основой пользовательского интерфейса Windows послужил графический интерфейс пользователя GUI, представляющий собой в данном случае иерархически организованную систему окон и других графических объектов. Дальнейшим развитием семейства Microsoft Windows стала разработка полноценных операционных систем Windows 95 (Windows 4.0) и Windows NT, положившим начало двух ветвей ОС от Microsoft: Windows 95/98/ME и Windows NT/2000/XP/2003.

Полноценной ОС Windows стала начиная с четвертой версии, получившей наименование Windows 95. Ключевыми позициями, отличающими Windows 95 от Windows 3.х, явились новое 32-разрядное ядро, усовершенствованный механизм многозадачности, улучшенная поддержка аппаратного обеспечения, новые и существенно обновленные приложения. Следующими версиями стали Windows 98, Windows 98 SE и Windows ME. Главными достоинствами новых систем явилось включение более мощных версий браузера Internet Explorer, расширение поддержки новых аппаратных устройств с новыми интерфейсами.

Параллельно с развитием линии ОС Windows 9.х корпорация Microsoft в 1988 году начала разработку и непрерывно продолжает развивать линию принципиально отличающихся от Windows 9.х операционных систем «новой технологии» – Windows NT (NT – New Technology). Windows NT является 32-х разрядной ОС с приоритетной многозадачностью. В качестве фундаментальных компонентов в состав этой ОС входят развитый сетевой сервис и средства обеспечения безопасности. Windows NT совместима со многими другими операционными и файловыми системами, а также с разнородными сетями, поддерживает работу высокопроизводительных многопроцессорных вычислительных комплексов.

На смену версии Windows NT 4.0. пришла существенно усовершенствованная и усиленная ОС Windows 2000 Professional. Серверной версией Windows 2000 Professional является система Windows 2000 Server, включающаяет множество дополнительных специальных функций.

В конце 2001 г. корпорация Microsoft выпустила новую версию ОС – Windows XP, продолжившую линию Win­dows NT и по сути являющейся модифицированной ОС Windows 2000 Professional. Новая серверная версия системы Windows Server 2003 обладает рядом преимуществ по сравнению с Windows 2000 Server. Это самая быстрая, самая надежная и наиболее защищенная из всех серверных ОС Windows, выпущенных Microsoft до настоящего времени.

Значительную роль в развитии ОС играет фирма Novell со своим сетевым операционными системами семейства NetWare.

Историческое значение имеет ОС OS/2 корпорации IBM, которая появилась на рынке раньше Windows 95 и была первой работающей 32-х разрядной ОС для персональных компьютеров, а кроме того поддерживала вытесняющую многозадачность, виртуальную память и имела средства работы в сети Internet.

Следует отметить также некоторые специализированные ОС. Например, IOS компании Cisco Systems предназначена исключительно для выполнения коммуникационных задач, MacOS ориентирована на конкретную аппаратную платформу компьютеров семейства Macintosh, PalmOS и Windows CE работают в сверхминиатюрных так называемых «карманных» компьютерах.

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

Контрольные вопросы и задания

1. Охарактеризуйте начальные этапы разработки и развития ОС.

2. Опишите основные характерные особенности ОС семейства MS-DOS и историю их эволюции.

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

4. Дайте характеристику ОС семейства UNIX, представьте области практического применения наиболее популярных версий UNIX.

5. В чем особенности реализации и функционирования сетевых операционных систем компании Novell?

6. Охарактеризуйте ОС семейства Windows 95/98/ME.

7. Назовите главные достоинства ОС линии Windows NT.

8. Какие качества характерны для современных серверных версий ОС Windows?

9. Перечислите известные специализированные ОС.

 


Пример практической реализации

Операционной системы: UNIX

Обзор системы UNIX

Общие представления

Интерфейсы системы UNIX

Помимо операционной системы и библиотеки системных вызовов, все вер­сии UNIX содержат большое количество стандартных программ, некоторые из них… Таким образом, можно говорить о трех интерфейсах в операционной систе­ме UNIX:…

Оболочка и утилиты системы UNIX

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

Структура ядра системы UNIX

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

Процессы в UNIX

Основные понятия

Единственными активными сущностями в системе UNIX являются процессы. Процессы UNIX очень похожи на классические последовательные процессы, кото­рые рассматривались в разделе 1. Каждый процесс запускает одну программу и изначально получает один поток управления. Другими словами, у процесса есть один счетчик команд, указывающий на следующую исполняемую команду процессора. Боль­шинство версий UNIX позволяют процессу после того, как он запущен, создавать дополнительные потоки. UNIX представляет собой многозадачную систему, так что несколько незави­симых процессов могут работать одновременно. У каждого пользователя может быть одновременно несколько активных процессов, так что в большой системе могут одновременно работать сотни и даже тысячи процессов. Действительно, на большинстве однопользовательских рабочих станций (даже без участия пользователя) работают десятки фоновых процессов, называемых демо­нами (daemon).Они запускаются автоматически при загрузке системы. Демоны позволяют планировать в системе UNIX активность на минуты, часы, дни и месяцы вперед, управлять входящей и исходящей элек­тронной почтой, очередями на принтер, проверять наличие свободных страниц памяти и т. д. Демоны реализуются в системе UNIX относительно просто, так как каждый из них представляет собой отдельный процесс, независи­мый ото всех остальных процессов.

В операционной системе UNIX посредством системного вызова fork создается точная копия исходного процесса (так называемого родительского процесса). Новый процесс называется дочерним процессом. У ро­дительского и у дочернего процессов есть свои собственные образы памяти. Если родительский процесс впоследствии изменяет какие-либо свои переменные, из­менения остаются невидимыми для дочернего процесса, и наоборот.

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

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

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

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

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

В первых версиях системы UNIX понятия потоков не существовало. После введения этого понятия и возможности управления потоками были стандартизированы соответствующие системные вызовы в виде части стандарта POSIX – P1003.1c.

В исходном варианте стандарта POSIX не указывается, должны ли потоки реализовываться в про­странстве ядра или в пространстве пользователя. Преимущество потоков в пользо­вательском пространстве состоит в том, что они легко реализуются без необходи­мости изменения ядра, а переключение потоков осуществляется очень эффективно. Недостаток потоков в пространстве пользователя заключается в том, что если один из потоков заблокируется (например, на операции ввода-вывода, семафоре или страничном прерывании), все потоки процесса блокируются. Ядро полагает, что существует только один поток, и не передает управление процессу потока, пока блокировка не снимется. Таким образом, системные вызовы, определенные в части стан­дарта P1003.1c были подобраны так, чтобы потоки могли быть реализова­ны любым способом. До тех пор, пока пользовательские программы четко придер­живаются семантики стандарта POSIX – P1003.1c, оба способа реализации работают корректно. Когда используется системная реализация потоков, они явля­ются настоящими системными вызовами. При использовании потоков на уровне пользователя они полностью реализуются в динамической библиотеке в простран­стве пользователя.

Синхронизация потоков может осуществляться при помощи мьютексов. Как правило, мьютекс охраняет какой-либо ресурс, например буфер, совместно исполь­зуемый двумя потоками. Чтобы гарантировать, что только один поток в каж­дый момент времени имеет доступ к общему ресурсу, предполагается, что потокиблокируют (захватывают) мьютекс перед обращением к ресурсу и разблокируют (отпускают) его, когда ресурс им более не нужен. До тех пор пока потоки со­блюдают данный протокол, состояния состязания можно избежать. Напомним, что название мьютекс (mutex) образовано от английских слов mutual exclusion – взаимное исключение, так как мьютексы по­добны двоичным семафорам, то есть семафорам, способным принимать только зна­чения 0 и 1. Таким образом мьютекс может находиться в одном из двух состояний: блокированный и разблокированный. Поток может заблокировать мьютекс с помощью системного вызова. Если мьютекс уже заблокирован, то поток, обратившийся к этому вызову, блокируется. Когда поток, захвативший мьютекс, выполнил свою работу в критической области, он должен освободить мьютекс, обратившись к соответствующему системному вызову.

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

 

Реализация процессов в UNIX

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

Планирование в системе UNIX

Поскольку UNIX всегда была многозадачной системой, ее алгоритм планирования с самого начала развития системы разрабатывался так, чтобы обеспечить… У каждой версии UNIX свой слегка отличающийся низкоуровневый алгоритм… Когда запускается низкоуровневый планировщик, он ищет очередь, начиная с самого высокого приоритета (то есть с…

Основные понятия

 

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

Сегмент данных содержит переменные, строки, массивы и другие данные про­граммы. Он состоит из двух частей: инициализированных данных и неинициали­зированных данных. По историческим причинам вторая часть называется BSS (Bulk Storage System – запоминающее устройство большой емкости или массовое запоминающее устройств). Инициализированная часть сегмента данных содержит переменные и константы компилятора, значения которых должны быть заданы при запуске программы. Например, на языке С можно объявить символьную строку и в то же время за­дать ее значение, то есть проинициализировать ее. Когда программа запускается, она предполагает, что в этой строке уже содержится некий осмысленный текст. Чтобы реализовать это, компилятор назначает строке определенное место в адрес­ном пространстве и гарантирует, что в момент запуска программы по этому адресу будет располагаться соответствующая строка. С точки зрения операционной сис­темы, инициализированные данные не отличаются от текста программы – тот и другой сегменты содержат сформированные компилятором последовательности битов, загружаемые в память при запуске программы.

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

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

Третий сегмент – это сегмент стека. На большинстве вычислительных машин он начи­нается около старших адресов виртуального адресного пространства и растет вниз к 0. Если указатель стека оказывается ниже нижней границы сегмента стека, как правило, происходит аппаратное прерывание, при котором операционная сис­тема понижает границу сегмента стека на одну страницу памяти. Программы не управляют явно размером сегмента стека. Когда программа запускается, ее стек не пуст. Напротив, он содержит все пере­менные окружения (оболочки), а также командную строку, введенную в оболочке при вызове этой программы. Таким образом, программа может узнать параметры, с которыми она была запущена.

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

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

На некоторых вычислительных машинах аппаратное обеспечение поддерживает раздельные адресные пространства для команд и для данных. Если такая возможность есть, система UNIX может ею воспользоваться. Например, на компьютере с 32-разряд­ными адресами при возможности использования раздельных адресных пространств можно получить 4 Гбайт адресного пространства для команд и еще 4 Гбайт адрес­ного пространства для данных. Передача управления по адресу 0 будет восприни­маться как передача управления по адресу 0 в текстовом пространстве, тогда как при обращении к данным по адресу 0 будет использоваться адрес 0 в пространстве данных. Таким образом, это свойство удваивает доступное адресное пространство.

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

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

 

Реализация управления памятью в UNIX

До версии 3BSD большинство систем UNIX основывались на свопинге (подкач­ке), работавшем следующим образом. Когда загружалось больше процессов, чем… Перемещением данных между памятью и диском управлял верхний уровень… 1. Системному вызову fork требовалась память для дочернего процесса.

Основные понятия

 

Подход, применяемый в операционной системе UNIX для доступа программ к устройствам ввода-вывода (таким как диски, принтеры, сетевые устройства и т.п.), заключается в интегрировании всех устройств в файловую систему в виде так называемых специальных файлов. Каждому устройству ввода-вывода назначается имя пути, обычно в ката­логе /dev. Например, диск может иметь путь /dev/hd1, у принтера может быть путь /dev/lр, а у сети – /dev/net. Доступ к этим специальным файлам осуществляется так же, как и к обычным файлам. Для этого не требуется никаких специальных команд или системных вызо­вов, а используются обычные системные вызовы read и write. Программы мо­гут открывать, читать специальные файлы, а также писать в них тем же способом, что и в обычные файлы. Таким образом, для выполнения ввода-вывода не требуется специального механизма.

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

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

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

Каждый сокет поддерживает определенный тип работы в сети, указываемый при создании сокета. Наиболее распространенными типами сокетов являются: 1) надежный байтовый поток (ориентиро-ванный на соединение), 2) надежный поток пакетов (ориенти-рованный на соединение), 3) ненадежная передача пакетов.

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

Второй тип сокетов отличается от первого тем, что он сохраняет границы меж­ду пакетами. Если отправитель пять раз отдельно обращается к системному вызо­ву write, каждый раз отправляя по 512 байт, а получатель запрашивает 2560 байт по сокету типа 1, он получит все 2560 байт сразу. При использовании сокета типа 2 ему будут выданы только первые 512 байт. Чтобы получить остальные байты, получателю придется выполнить системный вызов read еще четыре раза.

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

При создании сокета один из параметров указывает протокол, используемый для него. Для надежных байтовых потоков, как правило, используется протокол TCP (Transmission Control Protocol – протокол управления передачей). Для ненадежной передачи пакетов обычно применяется протокол UDP (User Data Protocol – пользовательский протокол данных). Все эти протоколы составляют основу Интернета. Для надежного потока пакетов специального протокола нет.

Прежде чем сокет может быть использован для работы в сети, с ним должен быть связан адрес. Этот адрес может принадлежать к одному из нескольких про­странств адресов. Наиболее распространенным пространством является простран­ство адресов Интернета, использующее 32-разрядные числа для идентификации конечных адресатов в протоколе IPv4 и 128-разрядные числа в протоколе IPv6.

Как только сокеты созданы на машине-источнике и машине-приемни­ке, между ними может быть установлено соединение (для ориентированной на соединение связи). Одна сторона обращается к системному вызову listen, указы­вая в качестве параметра локальный сокет. При этом системный вызов создает буфер и блокируется до тех пор, пока не прибудут данные. Другая сторона обра­щается к системному вызову connect, задавая в параметрах дескриптор файла для локального сокета и адрес удаленного сокета. Если удаленная машина прини­мает вызов, тогда система устанавливает соединение между двумя сокетами.

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

Реализация ввода-вывода в системе UNIX

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

Потоки данных в UNIX

Так как символьные специальные файлы имеют дело с символьными потоками, а не перемещают блоки данных между памятью и диском, они не пользуются… Первое решение, реализованное в системе BSD, основано на структурах данных,… Второе решение реализовано в системе System V под названием потоков данных. Потоки данных основаны на возможности…

Основные понятия

Файл в системе UNIX – это последовательность байтов произвольной длины (от 0 до некоторого максимума), содержащая произвольную информацию. Не делается принципиального различия между текстовыми (ASCII) файлами, двоичными фай­лами и любыми другими файлами. Значение битов в файле целиком определяется владельцем файла. Системе это безразлично. Изначально размер имен файлов был ограничен 14 символами, но в системе Berkeley UNIX этот предел был расширен до 255 символов, что впоследствии было принято в System V, а также в большин­стве других версий. В именах файлов разрешается использовать все ASCII-симво­лы, кроме символа NUL.

По соглашению многие программы ожидают, что имена файлов должны состоять из основного имени и расширения, отделяемого от основного имени файла точкой (которая в системе UNIX также считается символом). Эти со­глашения никак не регулируются операционной системой, но некоторые компи­ляторы и другие программы ожидают файлов именно с такими расширениями. Расширения могут иметь произвольную длину, кроме того, файлы могут иметь по нескольку расширений.

Для удобства использования файлы могут группироваться в каталоги. Катало­ги хранятся на диске в виде файлов, и до определенного предела с ними можно работать как с файлами. Каталоги могут содержать подкаталоги, что приводит к иерархической файловой системе. Корневой каталог называется / и, как правило, содержит несколько подкаталогов. Символ / также используется для разделения имен каталогов.

Существует два способа задания имени файла в системе UNIX, как в оболочке, так и при открытии файла из программы. Первый способ заключается в использо­вании абсолютного пути, указывающего, как найти файл от корневого каталога. Пример абсолютного пути: /man/labs/operat/numb4. Он сообщает системе, что в корневом каталоге следует найти каталог man, затем в нем найти каталог labs, ко­торый содержит каталог operat, а в нем расположен файл numb4.

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

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

Кроме обычных файлов, системой UNIX также поддерживаются символьные специальные файлы и блочные специальные файлы. Символьные специальные файлы используются для моделирования последовательных устройств ввода-вы­вода, таких как клавиатуры и принтеры. Если процесс откроет файл /dev/tty и про­читает из него, он получит символы, введенные с клавиатуры. Если открыть файл /dev/lp и записать в него данные, то эти данные будут распечатаны на принтере.

Блочные специальные файлы, часто с такими именами, как /dev/hd1, могут исполь­зоваться для чтения и записи необработанных дисковых разделов, минуя файло­вую систему. Таким образом, поиск байта номер k, за которым последует чтение, приведет к чтению k-то байта на соответствующем дисковом разделе, игнорируя i-узел и файловую структуру. Необработанные блочные устройства используют­ся для страничной подкачки и свопинга программами установки файловой систе­мы (например, mkfs) и программами, исправляющими ломаные файловые систе­мы (например, fsck).

При наличии у вычислительной машины нескольких дисков возникает вопрос управления ими. Одно из решений заключается в том, чтобы установить самостоятельную файло­вую систему на каждый отдельный диск и управлять ими как отдельными файло­выми системами. При таком решении пользователь должен помимо каталогов указывать также и устройство, если оно отличается от используемого по умолчанию. Такой подход применяется в операционных системах MS-DOS, Windows 98 и VMS. Решение, применяемое в операционной системе UNIX, заключается в том, чтобы позволить монтировать один диск в дерево файлов другого диска. Например, можно смонтировать дискету в каталог жесткого диска. При этом пользователь будет видеть еди­ное дерево файлов и уже не должен думать о том, какой файл на каком устройстве хранится.

Другим интересным свойством файловой системы UNIX является бло­кировка. В некоторых приложениях два и более процессов могут одновременно использовать один и тот же файл, что может привести к конфликту. Одно из ре­шений данной проблемы заключается в том, чтобы создать в приложении крити­ческие области. Однако если эти процессы принадлежат независимым пользова­телям, такой способ координации действий, как правило, очень неудобен. Рассмотрим, например, базу данных, состоящую из многих файлов в одном или нескольких каталогах, доступ к которым могут получить никак не связанные меж­ду собой пользователи. С каждым каталогом или файлом можно связать семафор и достичь взаимного исключения, заставляя процессы выполнять операцию down на соответствующем семафоре, прежде чем читать или писать определенные дан­ные. Недостаток этого решения заключается в том, что недоступным становится весь каталог или файл, даже если процессам нужна всего одна запись. По этой причине стандартом POSIX предоставляется гибкий и детальный ме­ханизм, позволяющий процессам за одну неделимую операцию блокировать даже единственный байт файла или целый файл по желанию. Механизм блокировки требует от вызывающего его процесса указать блокируемый файл, начальный байт и количество байтов. Если операция завершается успешно, система создает запись в таблице, в которой указывается, что определенные байты файла заблокированы.

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

 

Реализация классической файловой системы UNIX

Все системы UNIX могут под­держивать несколько дисковых разделов, каждый со своей файловой системой.

В классической системе UNIX раздел диска содержит файловую систему со следующей структурой. Блок 0 не используется системой и час­то содержит программу загрузки компьютера. Блок 1 представляет собой супер­блок. В нем хранится критическая информация о размещении файловой системы, включая количество i-узлов, количество дисковых блоков, а также начало списка свободных блоков диска (обычно несколько сот записей). При уничтожении супер­блока файловая система окажется нечитаемой. Следом за суперблоком располагаются i-узлы (i-nodes, сокращение от index-nodes – индекс-узлы). Они нумеруются от 1 до некоторого максимального числа. Каждый i-узел имеет 64 байт в длину и описывает ровно один файл, i-узел содер­жит учетную информацию (включая всю информацию, возвращаемую системным вызовом stat, который ее просто берет в i-узле), а также достаточное количество информации, чтобы найти все блоки файла на диске. Следом за i-узлами располагаются блоки с данными. Здесь хранятся все фай­лы и каталоги. Если файл или каталог состоит более чем из одного блока, блоки файла не обязаны располагаться на диске подряд. В действительности блоки боль­шого файла, как правило, оказываются разбросанными по всему диску.

Каталог в классической файловой системе представляет собой несортированный набор 16-байтовых записей. Каждая запись состоит из 14-байтного имени файла и номера i-узла. Чтобы открыть файл в рабочем каталоге, система просто считывает каталог, сравнивая имя искомого файла с каж­дой записью, пока не найдет нужную запись или пока не закончится каталог.

Если искомый файл присутствует в каталоге, система извлекает его i-узел и использует его в качестве индекса в таблице i-узлов (на диске), чтобы найти соответствующий i-узел и считать его в память. Этот i-узел помещается в таблицу i-узлов – структуру данных в ядре, содержащую все i-узлы открытых в данный мо­мент файлов и каталогов. Формат i-узлов варьируется от одной версии UNIX к другой. Как минимум i-узел должен содержать все поля, возвращаемые системным вызовом stat.

Поиск файла по абсолютному пути, например /man/labs/operat немного сложнее. Сначала система находит корневой каталог, как правило, использующий i-узел с но­мером 2 (i-узел 1 обычно резервируется для хранения дефектных блоков). Затем он ищет в корневом каталоге строку «man», чтобы получить номер i-узла каталога /man. Затем считывается этот i-узел, и из него извлекаются номера блоков, в которых располагается каталог /man. После этого считывается каталог /man, в котором ищет­ся строка «labs». Когда нужная запись найдена, из нее извлекается номер i-узла для каталога /man/labs и т. д. Таким образом, использование относительного имени фай­ла не только удобнее для пользователя, но также представляет существенно мень­шее количество работы для файловой системы.

Рассмотрим далее, как система считывает файл. По дескриптору файла файловая система должна найти i-узел соответствую­щего файла. С каждым дескриптором файла должен быть связан указатель в файле, определяющий байт в файле, кото­рый будет считан или записан при следующем обращении к файлу. Указатель помещается в таблицу деск­рипторов файла. При этом каждый процесс, открывающий файл, получает соб­ственную позицию в файле. Для передачи указателя от одного процесса другому вводится в обращение новая таблица – таблица открытых файлов, которая располагается между таблицей дескрипторов файлов и таблицей i-узлов. Указатели хранятся в файле, а бит чтения/записи в этой таблице. Задача таблицы открытых файлов заключа­ется в том, чтобы позволить родительскому и дочернему процессам совместно использовать один указатель в файле, но для посторонних процессов выделять отдельные указатели.

Каждый i-узел содержит дисковые адреса первых 10 блоков файла. Если позиция в файле попадает в его первые 10 блоков, то считывается нужный блок файла, а данные копируются пользователю. Для поддержки файлов, длина которых превышает 10 блоков, в i-узле содержится дисковый адрес одинарного косвенного блока. Этот блок содержит дисковые адреса дополни­тельных блоков файла. Например, если размер блока составляет 1 Кбайт, а диско­вый адрес занимает 4 байта, то одинарный косвенный блок может хранить до 256 дис­ковых адресов. Такая схема позволяет поддержать файлы размером до 266 Кбайт. Для файлов, размер которых превосходит 266 Кбайт, используется двойной косвенный блок. Он содержит адреса 256 одинарных косвенных блоков, каждый из которых содержит адреса 256 блоков данных. Такая схема позволяет поддер­жать файлы размером до 10 + 2 в степени 16 блоков (67 119 104 байт). Если и этого оказыва­ется недостаточно, в i-узле есть место для тройного косвенного блока. Его указа­тели показывают на 256 двойных косвенных блоков.

Реализация файловой системы Berkeley Fast

Каждый каталог BSD, поддерживающей имена файлов длиной до 255 сим­волов, состоит из некоторого целого коли­чества дисковых блоков, так что каталоги… Поскольку поиск в каталогах производится линейно, он может занять много… Вторым существенным изменением, введенным в Berkeley, было разбиение диска на группы цилиндров, у каждой из которых…

Реализация файловой системы Linux

Файловая система Ext2 очень похожа на файловую систему Berkeley Fast с небольшими изменениями. Вместо того, чтобы использовать группы цилин­дров,… Работа файловой системы похожа на функционирование быстрой файловой системы… Другой файловой системой Linux является файловая система /рrос (process – процесс). Идея этой файловой системы…

Реализация файловой системы NFS

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

Основные понятия

 

Каждый пользователь операционной системы UNIX регистрируется в системе, получая свой уникальный UID (User ID – идентификатор пользователя). UID представляет собой целое число в пределах от 0 до 65 535. Идентификатором владельца помеча­ются файлы, процессы и другие ресурсы. По умолчанию владельцем файла явля­ется пользователь, создавший этот файл, хотя владельца можно сменить.

Пользователи могут организовываться в группы, которые также нумеруются 16-разрядными целыми числами, называемыми GID (Group ID – идентификатор группы). Назначение пользователя к группе выполняется вручную системным администратором и заключается в создании нескольких записей в системной базе данных, в которой содержится информация о том, какой пользователь к какой группе принадлежит. Вначале пользователь мог принадлежать только к одной группе, но теперь в некоторых версиях системы UNIX пользователь может одно­временно принадлежать к нескольким группам.

Основной механизм безопасности в операционной системе UNIX заключается в следующем. Каж­дый процесс несет на себе UID и GID своего владельца. Когда создается файл, он получает UID и GID создающего его процесса. Файл также получает набор разре­шений доступа, определяемых создающим процессом. Эти разрешения определя­ют доступ к этому файлу для владельца файла, для других членов группы владель­ца файла и для всех прочих пользователей. Для каждой из этих трех категорий определяется три вида доступа: чтение, запись и исполнение файла, что обознача­ется соответственно буквами r, w и х (read, write, execute). Возможность исполнять файл, конечно, имеет смысл только в том случае, если этот файл является испол­няемой двоичной программой. Попытка запустить файл, у которого есть разре­шение на исполнение, но который не является исполняемым (то есть не начинает­ся с соответствующего заголовка), закончится ошибкой. Поскольку существует три категории пользователей и три вида доступа для каждой категории, все режимы доступа к файлу можно закодировать 9 битами.

Пользователь, UID которого равен 0, является особым пользователем и назы­вается суперпользователем (superuser или root). Суперпользователь может читать и писать все файлы в системе, независимо от того, кто ими владеет и как они защищены. Процессы с UID=0 также обладают возможностью обращаться к не­большой группе системных вызовов, доступ к которым запрещен для обычных пользователей. Как правило, пароль суперпользователя известен только систем­ному администратору.

Каталоги представляют собой файлы и обладают теми же самыми режимами защиты, что и обычные файлы. Отличие состоит в том, что бит х интерпретиру­ется в отношении каталогов как разрешение не исполнения, а поиска в каталоге. У специальных файлов, соответствующих устройствам ввода-вывода, есть те же самые биты защиты. Благодаря этому может использоваться тот же самый механизм для ограничения доступа к устройствам ввода-вывода. Существует общая проблема регулируемого доступа ко всем устройствам ввода-вывода и другим системным ресурсам. Эта проблема решается с помощью добавления к указанным выше 9 бит нового бита защиты – бита SETUID. Когда выполняется программа с уста­новленным битом SETUID, то запускаемому процессу присваивается не UID вы­звавшего его пользователя или процесса, a UID владельца файла. Когда процесс пытается открыть файл, то проверяется его рабочий UID, а не UID запустившего его пользователя. Таким образом, если программой, обращающейся к принтеру, будет владеть демон с установленным битом SETUID, тогда любой пользователь сможет запустить ее и запущенный процесс будет обладать полномочиями демона, но только для запуска этой программы (которая может устанавливать задания в очередь на принтер).

Помимо бита SETUID, есть также еще и бит SETGID, работающий аналогич­но и временно предоставляющий пользователю рабочий GID программы. Однако на практике этот бит почти не используется.

Реализация безопасности в UNIX

С этого момента начинает работу оболочка с установленными UID и GID, а так­же стандартными потоками ввода, вывода и ошибок, настроенными на… Когда любой процесс пытается открыть файл, система сначала проверяет биты… В операционной системе Linux защита файлов и ресурсов осуществляется так же, как и в UNIX.

Резюме

 

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

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

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

Доступ к устройствам ввода-вывода осуществляется при помощи специальных файлов, у каждого из которых есть старший номер устройства и младший номер устройства. Для снижения числа обращений к диску в блочных устройствах вво­да-вывода применяется буферный кэш. Для управления кэшем используется ал­горитм LRU (Least-Recently-Used – «наиболее давнего использования»). Сим­вольный ввод-вывод может осуществляться в обработанном и необработанном режимах. Для дополнительных возможностей символьного ввода-вывода приме­няются дисциплины линии связи или потоки.

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

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

 

 

Контрольные вопросы и задания

 

1. Опишите интерфейсы ОС UNIX.

2. Каковы особенности оболочки и утилит системы UNIX?

3. Дайте определение программы, называемой фильтром.

4. Как называются файлы, содержащие команды оболочки?

5. В чем заключается идея стандартизации обслуживающих программ UNIX?

6. Представьте состав нижнего уровня ядра UNIX.

7. Какие функции выполняет уровень системы виртуальной памяти UNIX?

8. Назовите главные функции уровня интерфейсов системы UNIX.

9. Какие функции выполняют в UNIX фоновые процессы, называемые демо­нами?

 

10. Опишите механизмы взаимодействия и синхронизации процессов в UNIX.

11. Какие структуры данных, относящиеся к процес­сам, поддерживает ядро системы UNIX?

12. Перечислите категории информации, хранящейся в таблице процессов.

13. Какие данные составляют структуру пользователя?

14. Опишите этапы создания процесса в системе UNIX.

15. Охарактеризуйте методы планирования в ОС семейства UNIX .

16. Из каких сегментов состоит адресное пространство в UNIX?

17. В чем заключается свойство отображения файлов на адресное пространство памяти?

18. Опишите способы реализации управления памятью в UNIX .

19. Как работает механизм страничной подкачки в UNIX?

20. Поясните структуру карты памяти и реализацию алгоритма замещения страниц.

21. Опишите реализацию ввода-вывода в ОС UNIX .

22. Дайте определение понятию «сокет» и перечислите наиболее распространенные типы сокетов.

23. Охарактеризуйте решения, применяемые в UNIX для структурирования драйверов символьных устройств и придания им свойства модульности.

24. Какие типы файлов поддерживаются в ОС UNIX?

25.Как реализована классическая файловая система UNIX.

26. В чем заключаютсяособенности реализация файловой системы Berkeley Fast?

27. Представьте реализацию файловых систем Linux.

28. Охарактеризуйте файловую систему NFS.

29. Каким образом реализуется свойство автомонтировки файловых систем в UNIX?

30. К каким проблемам приводит использование кэширования данных

в файловой системе NFS?

31. Опишите функционирование системы безопасности в UNIX.


Пример практической реализации

Операционной системы: Windows 2000

Обзор структуры операционной систем Windows 2000

 

Структура системы

Одно из многих усовершенствований системы NT по сравнению с Windows 3.1 заключалось в ее модульной структуре. Она состояла из относительно… Тем не менее в операционной системе Windows 2000 сохранилась некоторая… Рассмотрим подробнее различ­ные компоненты системы, начиная с самых нижних уровней и постепенно продви­гаясь наверх. …

Реализация объектов

Объекты представляют собой, вероятно, самое важное понятие операционной си­стемы Windows 2000. Они предоставляют однородный и непротиворечивый…   Ключом к пониманию объектов является тот факт, что исполняемый объект представляет собой просто набор последовательных…

Подсистемы окружения

Существует три типа таких компонентов: динамические биб­лиотеки DLL (Dynamic Link Library – динамически подключаемая библиотека), подсистемы… Операционной системой Windows 2000 поддерживаются три различных… Рассмотрим способ реализации этих интерфейсов на примере Win32. Програм­ма, пользующаяся интерфейсом Win32, как…

Основные понятия

 

В операционной системе Windows 2000 поддерживаются традиционные процес­сы, способные общаться и синхронизироваться друг с другом так же, как это дела­ют процессы в UNIX. Каждый процесс содержит по крайней мере один поток, со­держащий, в свою очередь, как минимум одно волокно (облегченный поток). Более того, для управления определенными ресурсами процессы могут объединяться в задания. Все вместе – задания, процессы, потоки и волокна – образует общий набор инструментов для управления ресурсами и реализации параллелизма как на однопроцессорных, так и на многопроцессорных машинах.

Задание в Windows 2000 представляет собой набор, состоящий из одного или нескольких процессов, управляемых как единое целое. В частности, с каждым заданием ассоциированы квоты и лимиты ресурсов, хранящиеся в соот­ветствующем объекте задания. Квоты включают такие пункты, как максимальное количество процессов (не позволяющее процессам задания создавать бесконтроль­ное количество дочерних процессов), суммарное время центрального процессора, доступное для каждого процесса в отдельности и для всех процессов вместе, а также максимальное количество используемой памяти для процесса и для всего задания. Задания также могут ограничивать свои процессы в вопросах безопасности, на­пример, запрещать им получать права администратора (суперпользователя) даже при наличии правильного пароля.

Как и в системе UNIX, процессы представляют собой контейнеры для ресур­сов. У каждого процесса есть 4-гигабайтное адресное пространство, в котором пользователь занимает нижние 2 Гбайт (в версиях Windows 2000 Advanced Server и Datacenter Server этот размер может быть по желанию увеличен до 3 Гбайт), а операционная система занимает остальную его часть. Таким образом, операци­онная система присутствует в адресном пространстве каждого процесса, хотя она и защищена от изменений с помощью аппаратного блока управления памятью MMU. У процесса есть идентификатор процесса, один или несколько потоков, список дескрипторов (управляемых в режиме ядра) и маркер доступа, хранящий информацию защиты. Процессы создаются с помощью вызова Win32, который принимает на входе имя исполняемого файла, определяющего начальное содер­жимое адресного пространства, и создает первый поток.

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

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

Важно понимать, что потоки представляют собой концепцию планирования, а не концепцию владения ресурсами. Любой поток может получить доступ ко всем объектам его процесса. Все, что ему для этого нужно сделать, – это заполучить дес­криптор и обратиться к соответствующему вызову Win32. Для потока нет ника­ких ограничений доступа к объекту, связанных с тем, что этот объект создан или открыт другим потоком. Система даже не следит за тем, какой объект каким потоком создан. Как только дескриптор объекта помещен в таблицу дескрипторов про­цесса, любой поток процесса может его использовать.

Помимо нормальных потоков, работающих в процессах пользователя, в опера­ционной системе Windows 2000 есть множество процессов-демонов, не связанных ни с каким пользовательским процессом (они ассоциированы со специальной си­стемой или простаивающими процессами). Некоторые демоны выполняют адми­нистративные задачи, как, например, запись «грязных» (модифицированных) страниц на диск, тогда как другие формируют пул, и ими могут пользоваться компоненты исполняющей системы или драйверы, которым нужно выполнить какие-либо асинхронные за­дачи в фоновом режиме. Переключение потоков в операционной системе Windows 2000 занимает до­вольно много времени, так как для этого необходимо переключение в режим ядра, а затем возврат в режим пользователя. Для предоставления сильно облегченного псевдопараллелизма в Windows 2000 используются волокна, подобные потокам, но планируемые в пространстве пользователя создавшей их программой (или ее системой поддержки исполнения). У каждого потока может быть несколько воло­кон, так же как у процесса может быть несколько потоков, с той разницей, что когда волокно логически блокируется, оно помещается в очередь блокированных волокон, после чего для работы выбирается другое волокно в контексте того же потока. Операционная система не знает о смене волокон, так как все тот же поток продолжает работу. Так как операционная система ничего не знает о волокнах, то с ними, в отличие от заданий, процессов и потоков, не связаны объекты испол­няющей системы. Для управления волокнами нет и настоящих системных вызо­вов. Однако для этого есть вызовы Win32 API. Они относятся к тем вызовам Win32 API, которые не обращаются к системным вызовам.

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

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

Межпроцессное взаимодействие

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

Реализация процессов и потоков

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

Загрузка Windows 2000

Прежде чем операционная система Windows 2000 сможет начать работу, она долж­на загрузиться. Процесс загрузки создает начальные процессы. С точки… Затем программа ntldr считывает файл Boot.ini, представляющий собой… После запуска операционная система выполняет некоторые общие процедуры инициализации, а затем вызывает компоненты…

Основные понятия

В операционной системе Windows 2000 у каждого пользовательского процесса есть собственное виртуальное адресное пространство. Виртуальные адреса 32-разряд­ные, поэтому у каждого процесса 4 Гбайт виртуального адресного пространства. Нижние 2 Гбайт за вычетом около 256 Мбайт доступны для программы и данных процесса; верхние 2 Гбайт защищенным образом отображаются на память ядра. Страницы виртуального адресного пространства имеют фиксированный размер (4 Кбайт на компьютере с процессором Pentium) и подгружаются по требованию. Нижние и верхние 64 Кбайт каждого виртуального адресного пространства в обычном состоянии не отображаются на физическую память. Это делается преднамеренно, что­бы облегчить перехват программных ошибок. Недействительные указатели часто имеют значение 0 или -1, и попытки их использования в системе Windows 2000 вызовут немедленное прерывание вместо чтения или, что еще хуже, записи слова по неверному адресу. Однако когда запускаются старые программы MS-DOS в ре­жиме эмуляции, нижние 64 Кбайт могут отображаться на физическую память.

Начиная с адреса 64 К, могут располагаться приватные данные и программа пользователя. Они могут занимать почти 2 Гбайт. Последний фрагмент этих 2 Гбайт памяти содержит некоторые системные указатели и таймеры, используемые со­вместно всеми пользователями в режиме доступа «только чтение». Отображение этих данных в эту область памяти позволяет всем процессам получать к ним дос­туп без лишних системных вызовов.

Верхние 2 Гбайт виртуального адресного пространства содержат операционную систему, включая код, данные и выгружаемый и невыгружаемый пулы (использу­емые для объектов и т. д.). Верхние 2 Гбайт используются совместно всеми про­цессами, кроме таблиц страниц, которые являются индивидуальными для каждо­го процесса. Верхние 2 Гбайт процессам в режиме пользователя запрещены для записи, а по большей части также запрещены и для чтения. Причина, по которой они размещаются здесь, заключается в том, что когда поток обращается к систем­ному вызову, он переключается в режим ядра, но остается все тем же потоком. Если сделать всю операционную систему и все ее структуры данных (как и весь пользо­вательский процесс) видимыми в адресном пространстве потока, когда он переклю­чается в режим ядра, то отпадает необходимость в изменении карты памяти или выгрузке кэша при входе в ядро. Все, что нужно сделать, – это переключиться на стек режима ядра. Платой за более быстрые системные вызовы при данном подходе является уменьшение приватного адресного пространства для каждого процес­са. Большим базам данных уже сейчас становится тесно в таких рамках, вот поче­му в версиях Windows 2000 Advanced server и Datacenter Server есть возможность использования 3 Гбайт для адресного пространства пользовательских процессов.

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

Виртуальная страница может также находиться в зарезервированном состоя­нии, в таком случае эта страница не может отображаться, пока резервирование не будет явно удалено. Например, когда создается новый поток, в виртуальном ад­ресном пространстве резервируется 1 Мбайт пространства для стека, но фиксиру­ется только одна страница. Такая техника означает, что стек может вырасти до 1 Мбайт без опасения, что какой-либо другой поток захватит часть необходимого непрерывного виртуального адресного пространства. Помимо состояния (свободная, зарезервированная или фиксированная), у страниц есть также и другие атрибуты, например страница может быть доступной для чтения, записи или исполнения.

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

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

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

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

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

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

 

 

Реализация управления памятью

В отличие от планировщика, выбирающего отдельные потоки для запуска и не заботящегося о процессах, менеджер памяти занимается исключительно… В операционной системе Windows 2000 опережающая подкачка страниц не… Страничные прерывания подразделяются на пять категорий:

Основные понятия

 

Менеджер ввода-вывода родственен менеджеру plug-and-play. Основная идея ме­ханизма plug-and-play заключается в настраиваемой шине. За многие годы было разработано множество шин, включая PC Card, PCI, USB, IEEE 1394 и SCSI, по­этому менеджер plug-and-play может послать каждому разъему запрос и попросить устройство назвать себя. Определив, что за устройство подключено к шине, менед­жер plug-and-play выделяет для него аппаратные ресурсы, такие как уровни пре­рываний, находит необходимые драйверы и загружает их в память. При загрузке каждого драйвера для него создается объект драйвера. Для некоторых шин, напри­мер SCSI, настройка происходит только во время загрузки операционной системы. Для других шин, таких как USB и IEEE 1394, она может производиться в любой момент, для чего требуется тесный контакт между менеджером plug-and-play, драй­вером шины (который и выполняет настройку) и менеджером ввода-вывода.

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

1.Полностью действующий.

2.Режим сниженного энергопотребления-1: мощность, потребляемая централь­ным процессором, снижается, ОЗУ и кэш работают, возможен мгновенный переход в режим полного действия.

3.Режим сниженного энергопотребления-2: центральный процессор и ОЗУ работают; кэш центрального процессора отключен; возможно продолжение работы с текущего значения счетчика команд.

4.Режим сниженного энергопотребления-3: центральный процессор и кэш отключены; ОЗУ работает; возможен перезапуск с фиксированного адреса.

5.«Зимняя спячка»: центральный процессор, кэш и ОЗУ отключены; возмо­жен перезапуск из сохраненного на диске файла.

6. Выключен: все выключено; требуется полная перезагрузка.

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

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

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

Реализация ввода-вывода в Windows 2000

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

Файловые системы типа FAT

Логический раздел, отформатированный под файловую систему FAT (File Allocation Table – таблица размещения файлов), состоит из следующих областей: … 1.Загрузочный сектор содержит программу начальной загрузки операционной… 2. Основная копия FAТ содержит информацию о размещении файлов и катало­гов на диске.

Файловая система типа NTFS

Система NTFS (New Technology File System – файловая система новой технологии) представляет собой новую сложную файловую систему, разработанную… Длина имени файла в системе NTFS ограничена 255 символами, полная длина пути… Вызовы функций Win32 API для управления файлами и каталогами в первом приближении подобны соответствующим им в UNIX,…

Основные понятия

 

Операци­онная система Windows 2000 обладает рядом достаточно совершенных и эффективных свойств безопасности, включая следующие:

1. Безопасная регистрация в системе с мерами предосторожности против по­пыток применения фальшивой программы регистрации.

2. Дискреционное управление доступом.

3. Управление привилегированным доступом.

4. Защита адресного пространства для каждого процесса.

5. Обнуление страниц перед выделением их процессу.

6. Аудит безопасности.

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

У каждого пользователя (и группы) операционной системы Windows 2000 есть идентификатор безопасности SID (Security IDentifier), по которому операцион­ная система отличает его от других пользователей. Идентификаторы безопаснос­ти представляют собой двоичные числа с коротким заголовком, за которым следу­ет длинный случайный компонент. Каждый SID должен быть уникален в пределах всей планеты. Когда пользователь запускает процесс, этот процесс и его потоки работают под идентификатором пользователя. Большая часть системы безопасно­сти спроектирована так, чтобы гарантировать предоставление доступа к каждому объекту только потокам с авторизованными идентификаторами безопасности.

У каждого процесса есть маркер доступа, в котором указывается SID и другие свойства. Как правило, он назначается при регистрации в системе процедурой winlogon. Заголовок маркера содержит некоторую админи­стративную информацию. По значению поля срока действия можно определить, когда маркер перестанет быть действительным. Поле Groups (группы) указывает группы, к которым принадлежит процесс. Это поле необходимо для соответствия требованиям стандарта POSIX. Поле Default DACL (Default Discretionary Access Control List – список разграничительного контроля доступа по умолчанию) представляет собой список управ­ления доступом, назначаемый объектам, созданным процессом, если не опреде­лены другие списки ACL. Идентификатор безопасности пользователя указывает пользователя, владеющего процессом. Ограниченные идентификаторы SID по­зволяют ненадежным процессам принимать участие в заданиях вместе с надеж­ными процессами, но с меньшими полномочиями и меньшими возможностями причинения ущерба.

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

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

Другим основным понятием является дескриптор защиты. У каждого объекта есть ассоциированный с ним дескриптор защиты, содержащий список пользова­телей и групп, имеющих доступ к данному объекту. Дескриптор защиты состоит из заголовка, за которым следует список DACL с одним или несколькими элемен­тами АСЕ (Access Control Entry – элемент списка контроля доступа ACL). Два основных типа элементов списка – это разрешение и запрет доступа. Разрешаю­щий элемент содержит SID пользователя или группы и битовый массив, опре­деляющий набор операций, которые процессы с данным идентификатором SID могут выполнять с определенным объектом. Запрещающий элемент работает ана­логично, но совпадение идентификаторов означает, что обращающийся процесс не может выполнять перечисленные операции.

Кроме списка DACL у дескриптора защиты есть также список SACL (System Access Control List – системный список контроля доступа), который похож на DACL, только вместо пользователей и групп, имеющих доступ к объекту, в нем перечисляются операции с этим объектом, регистрируемые в специальном журна­ле. В операционной системе Windows 2000 также пре­доставляются дополнительные возможности аудита для регистрации доступа к объектам.

Реализация защиты в Windows 2000

Защита в автономной системе Windows 2000 реализуется при помощи нескольких компонентов. Регистрацией в системе управляет программа winlogon, а… Как только пользователь регистрируется в системе, выполняется операция защиты… Помимо разрешающих записей, списки DACL могут также содержать запре­щающие записи. Поскольку менеджер безопасности…

Резюме

 

Структура операционной системы Windows 2000 включает в себя уровень аппа­ратных абстракций HAL, ядро, исполняющую систему и тонкий уровень систем­ных служб, перехватывающий входящие системные вызовы. Кроме того, опера­ционная система содержит множество драйверов устройств, включая файловую систему и интерфейс графических устройств GDI. Уровень HAL скрывает от верхних уровней определенные различия в аппаратуре. Ядро пытается скрыть от исполняющей системы остальные различия, чтобы сделать ее почти полностью машинно-независимой.

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

Операционная система Windows 2000 поддерживает процессы, задания, пото­ки и волокна. У процессов есть виртуальные адресные пространства, кроме того, процессы являются контейнерами ресурсов. Потоки представляют собой едини­цы исполнения и планируются операционной системой. Волокна являются уп­рощенными потоками, планируемыми полностью в пространстве пользователя. Задания представляют собой наборы процессов и используются для выделения квот ресурсов. При планировании используется приоритетный алгоритм, в кото­ром управление получает готовый поток с максимальным приоритетом.

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

Ввод-вывод осуществляется драйверами устройств, согласующимися с моде­лью Windows Driver Model. При запуске каждого драйвера инициализируется объект драйвера, содержащий адреса процедур, к которым может обращаться опе­рационная система, чтобы добавить новое устройство или выполнить операцию ввода-вывода. Драйверы могут собираться в стеки или действовать как фильтры.

В основе файловой системы NTFS лежит главная файловая таблица MFT, в ко­торой содержится по одной записи для каждого файла или каталога. У каждого файла есть множество атрибутов, которые могут храниться в записи таблицы MFT или вне таблицы – на диске. Среди прочих возможностей файловая система NTFS под­держивает сжатие и шифрование.

Защита основывается на списках управления доступом ACL. У каждого про­цесса есть маркер управления доступом, идентифицирующий процесс, а также указывающий, какими особыми привилегиями он обладает. С каждым объектом ассоциирован дескриптор защиты. Дескриптор защиты указывает на список раз­граничительного управления доступом DACL, содержащий записи списка ACL, разрешающие или запрещающие доступ к этому объекту отдельным пользовате­лям или группам.

Контрольные вопросы и задания

1. Опишите структурное построение ОС Windows 2000.

2. Каковы функции так называемого уровня аппаратных абстракций Windows 2000?

3. Охарактеризуйте ядро ОС Windows 2000.

4. Какие объекты носят наименование управляющих объектов?

5. Перечислите объекты, которые относятся к типу объектов диспетчеризации.

6. Представьте состав исполняющей системы Windows 2000.

7. Какие функции выполняет менеджер объектов?

8. Какова роль менеджера процессов?

9. Для выполнения каких функций применяется интерфейс графических устройств GDI?

10. Опишите реализацию объектов в Windows 2000.

11. Какие компоненты системы Windows 2000 работают в режиме пользователя?

12. Перечислите интерфейсы прикладного программирования API, поддерживаемые Windows 2000.

13. Дайте определения понятиям «задание», «процесс», «поток», «волокно» в Windows 2000.

14. Опишите способы межпроцессного взаимодействия в Windows 2000.

15. Как осуществляется реализация процессов и потоков в Windows 2000?

16. Перечислите этапы загрузки ОС Windows 2000.

17. Что понимается под виртуальной страницей памяти и в каких состояниях она может находиться?

18. Как реализуется управление памятью в ОС Windows 2000?

19. Опишите реализацию ввода-вывода в ОС Windows 2000.

20. Какие режимы поддерживает менеджер энергопотребления?

21. Охарактеризуйте файловые системы типа FAT.

22. Представьте особенности организации файловой системы NTFS и ее достоинства по сравнению с файловыми системами типа FAT.

23. Какова структура главной файловой таблицы MFT в NTFS?

24. Каким образом производится сжатие данных файла в NTFS?

25. Перечислите и охарактеризуйте основные понятия системы безопасности Windows 2000.

26. Опишите особенности реализации защиты в ОС Windows 2000.


Заключение

 

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

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

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

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

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

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

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

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

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

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

Важнейшей вехой в истории и современном состоянии операциионных систем является семейство многопользовательских многозадачных систем UNIX. UNIX получила несколько ветвей развития исходной архитектуры. Двумя главными из таких ветвей стали System V (корпорации AT&T) и BSD (Калифорний­ского университета в Беркли). Впоследствии на основе обеих этих ветвей был создан ряд новых версий ОС UNIX. Третья самостоятельная ветвь развития UNIX начиналась с относительно простой «учебной» системы MINIX, за которой в 1991 году последовала зна­чительно более мощная многоза­дачная многопользовательская ОС LINUX. Операционные системы типа UNIX широко используется на вычислительных маши­нах различных классов от ноутбуков до суперкомпьютеров.

Для персональных компьютеров клона IBM PC были разработаны однопользовательские однозадачные операционные системы типа MS-DOS корпорации Microsoft и их аналоги других корпораций. Управление компьютером в среде MS-DOS осуществлялось в режиме командной строки. Для того, чтобы сделать общение с компьютером более простым, были предложены так называемые программы-оболочки, представляющие собой программные надстройки операционной системы, позволяющие пользователю осуществлять действия по управлению ресурсами компьютера в рамках более развитого и удобного, чем командная строка, псевдографического интерфейса. Следующим историческим шагом в развитии оболочек операционных систем стало появление в 1986 г. графической многооконной операционной оболочки Windows от корпорации Microsoft, которая работала на базе MS-DOS, а основой пользовательского интерфейса Windows послужил так называемый графический интерфейс пользователя GUI, представляющий собой иерархически организованную систему окон и других графических объектов. Дальнейшим развитием семейства Microsoft Windows стала разработка полноценных операционных систем Windows 95 (Windows 4.0) и Windows NT, положившим начало двух ветвей ОС от Microsoft: Windows 95/98/ME и Windows NT/2000/XP/2003.

Линия систем «новой технологии» Windows NT принципиально отличается от линии Windows 9.х. В качестве фундаментальных компонентов в состав семейства Windows NT входят развитый сетевой сервис, поддержка работы высокопроизводительных многопроцессорных вычислительных комплексов, средства обеспечения эффективной безопасности. На смену версии Windows NT 4.0. в 2000 году пришла существенно усовершенствованная и усиленная ОС Windows 2000 Professional. Серверной версией Windows 2000 Professional является система Windows 2000 Server, включающаяет множество дополнительных специальных функций. В конце 2001 г. корпорация Microsoft выпустила новую версию – Windows XP, продолжившую линию Win­dows NT. Новая серверная версия Windows Server 2003 обладает рядом преимуществ по сравнению с Windows 2000 Server.

Значительную роль в развитии ОС играет фирма Novell со своим сетевым операционными системами семейства NetWare. Историческое значение имеет система OS/2 корпорации IBM, которая появилась на рынке раньше Windows 95 и была первой 32-х разрядной операционной системой для персональных компьютеров.

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

Любая из современных операционных систем имеет свои особенности построения и практической реализации, применяет те или иные способы и механизмы управления процессами и ресурсами, использует различные по степени универсальности и совместимости прикладные интерфейсы, обладает разным уровнем функциональности и может позиционироваться для определенных сфер применения. Для каждой из систем можно указать ее преимущества и недостатки, сильные и слабые стороны. Естественно, что предприятию или отдельному пользователю хотелось бы работать с оптимальной операционной системой, удовлетворяющей комплексу наиболее важных требований. «Идеальная» операционная система скорее всего должна иметь такую же степень интеграции и такую же поддержку, как Microsoft Windows 2000/XP/Server 2003, такую же превосходную отказоустойчивость, как Solaris 8 компании Sun Microsystems, такую же службу справочника, какой снабжена Novell NetWare 5.1, а также универсальность и гибкость, свойственные системе Linux.

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

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

Например, в ближайших (на момент подготовки данного учебного пособия) планах корпорации Microsoft выпуск новых версий Windows XP. К ним относятся Windows XP Media Center Edition (MCE) 2004, включающая несколько новых специализированных модулей и призванная превратить персональный компьютер в полнофункциональный развлекательный центр, а также Windows XP 64-bit Edition, являющаяся модификацией XP для компьютеров с 64-разрядными процессорами. Microsoft ведет разработку операционной системы нового поколения, именуемой как Windows Longhorn. По заявлениям Microsoft эта система станет революционной версией, основанной на внедрении новых технологий. Планируется выпуск ее 32- и 64-разрядных модификаций.

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


Библиографический список

2. Андреев А. Г. и др. Microsoft Windows XP. Руководство администратора/ Под общ. ред. А. Н. Чекмарева. – СПб.: БХВ – Петербург, 2003. – 848 с.:… 3. Бэкон Д., Харрис Т. Операционные системы. – СПб.: Питер, 2004. – 800 с.:… 4. Вишневский А. В. Windows Server 2003. Для профессионалов. – СПб.: Питер, 2004. – 767 с.: ил.

Словарь терминов и определений


 


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

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

Гонка

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

Критическая секция (критическая область)

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

Кэширование информации

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

Логическая запись

наименьший элемент данных, которым может оперировать программист при обмене с внешним устройством.

 

 

Логическая организация файла

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

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

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

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

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

Модуль операционной системы

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

Операционная оболочка

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

Операционная система

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

Операционная система сетевая

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

Операционная среда

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

Планирование процессов

распределение процессов между имеющимися ресурсами.

 

Планировщик

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

Подсистема буферизации

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

Подсистема управления процессами

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

Правила синхро­низации

определяют порядок взаимосвязи процессов.

Прерывание

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

Приоритет

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

Процесс

последовательность операций при выполнении программы или ее части в совокупности с используемыми данными.

Реентерабельность

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

Ресурс

любой потребляемый (расходуемый) объект вычислительной машины или системы, который может быть выделен его по­требителю – процессу – на определенный интервал времени.

 

Сетевой протокол

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

Супервизор

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

 

Таблица управления процессом

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

Транзитные программные модули операционной системы

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

Файл

набор данных, организованных в виде совокупности записей определенной структуры.

 

Файловая система

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

Физическая организация файла

описывает правила расположения файла на устройстве внешней памяти, в частности, на диске.

Ядро операционной системы

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

 

 


Алфавитно-предметный указатель


 


А

Адрес

виртуальный 34

физический 34

 

Б

Блок информации 81

Блокирующая переменная 23

Буфер обмена 26

 

В

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

Виртуальное адресное простран-

ство 34

Взаимоблокировка 26

Вызов

блокирующй (синхроннй) 82

неблокирующй (асинхроннй) 82

Вычислительная (компьютерная)

сеть 81

Вычислительная машина

многопроцессорная 65, 80

однопроцессорная 8, 65

Вычислительная система

многомашинная 80

сосредоточенного типа 80

распределенного типа 80

 

Д

Дескриптор процесса 12

Диспетчеризация 12

Доступ к файлу

избирательный 57

мандатный 57

 

И

Инкапсуляция 110

Интерфейс-оболочка 7, 121, 137

Интерфейс

графический 7, 111, 123,

командной строки 7, 122

К

Квантование 13

Кластер 55

Контекст процесса 12

Контроллер прямого доступа

к памяти 49

Критическая секция (критическая

область) программы 23

Кэш-память 43

 

Л

Логическая запись 55

Локальность данных в кэш-памяти

пространственная 44

временная 44

 

М

Метод очередей ресурсов 12

Механизм прямого доступа к

памяти 49

Многозадачность

вытесняющая 14, 15

невытесняющая 14, 15

Многопоточность 29

Многоуровневая модель 58

Модуль операционной системы 97

Монитор 27

Мультипрограммный режим 119

Мультипроцессор 65

Мьютекс 25

 

О

Операционная среда 6, 7

Операционная система (ОС) 6, 7

Операционная оболочка 7, 121

Организация файла

логическая 55

физическая 55

 

 

П

Пакетная обработка информации 118

Перемещающий загрузчик 34, 35

Планирование процессов 11, 69

Подсистема

буферизации 57

управления процессами 11

Поток 28, 29

Право доступа к файлу 57

Прерывание 16

внешнее (асинхронное) 18

внутреннее (синхронное) 18

программное 19

Прикладной программный

интерфейс 51, 112, 113

Приоритет 1, 13, 19

Процесс 8

взаимодействующий 9

взаимосвязанный 9

внешний 9

внутренний 9

выполняемый 11

готовый 11

завершенный 11

изолированный 9

интерактивный 8

конкурирующий 9

новый 11

ожидающий 11

пакетный 8

пользовательский 9

порождающий 8

порож­денный 8

равный 8

реального времени 8

системный 21

тождественный 8

эквивалентный 8

Р

Распределенная операционная

система 89, 90

 

Распределение памяти

страничное 38

сегментное 41

странично-сегментное 42

Реентерабельность 97

 

Ресурс 10

активный 10

виртуальный 10

воспроизводимый 10

временный 10

второстепенный 10

жесткий 10

информационный 10

ис­пользуемый параллельно 10

ис­пользуемый последовательно 10

основной 10

пассивный 10

постоянный 10

потребляе­мый 10

программный 10

простой 10

со­ставной 10

физический 10

эластичный 10

 

С

Свопинг 42

Сетевая операционная система 88

Сетевой протокол 88

Семафор 24, 25

Символьное имя 34

Система управления файлами 50, 51

Сообщение 81

Спин-блокировка 24

Спулинг 48

Стаб

клиентский 86

серверный 87

Супервизор прерываний 21

 

Т

Транзитный программный модуль

Таблица управления процессом

(ТУП) 11

 

У

Устройство ввода-вывода 44

байт-ориентированное 45

блок-ориентированное 45

выделенное 46

разделяемое 46

 

Ф

Фрагментация памяти 36

Файл 10, 50

двоичный 54

каталог 54

обычный 54

специальный 54

текстовый 54

Файловая система 50, 51

 

Я

Ядро операционной системы 97, 98

 


 


Храпский Сергей Филиппович

ОПЕРАЦИОННЫЕ СИСТЕМЫ, СРЕДЫ И ОБОЛОЧКИ

ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

 

 

Редактор Л. Г.Сигитова

 

Лицензия ЛР № 021278 от 06.04.98 г.

Подписано в печать 01.09.05. Формат 60х84 1/16.

Бумага типогр. Оперативная печать.

Усл. печ. л. 15.05. Уч.-изд. л. 14,35. Тираж 60 экз.

Издат. № 366. Заказ 387. Цена договорная.

 

 

Издательско-полиграфический центр ОГИС

644099, Омск, ул. Красногвардейская, 9

– Конец работы –

Используемые теги: операционные, системы, среды, оболочки0.064

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: ОПЕРАЦИОННЫЕ СИСТЕМЫ, СРЕДЫ И ОБОЛОЧКИ

Что будем делать с полученным материалом:

Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Еще рефераты, курсовые, дипломные работы на эту тему:

Лекция 1. Тема: Операционная система. Определение. Уровни операционной системы. Функции операционных систем. 1. Понятие операционной системы
Понятие операционной системы... Причиной появления операционных систем была необходимость создания удобных в... Операционная система ОС это программное обеспечение которое реализует связь между прикладными программами и...

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

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

ОПЕРАЦИОННЫЕ СИСТЕМЫ, СРЕДЫ И ОБОЛОЧКИ
ОПЕРАЦИОННЫЕ СИСТЕМЫ СРЕДЫ И ОБОЛОЧКИ Учебное пособие...

Операционные системы, среды и оболочки
Рецензенты... Кафедра Автоматизированных Информационных Технологий Экономического факультета... Кафедра прикладной математики Уральского государственного технического университета УПИ...

Операционные системы, среды и оболочки
Операционные системы среды и оболочки...

Введение в операционные системы. Определение, назначение, состав и функции операционных систем
Государственное образовательное учреждение высшего профессионального образования... ТОЛЬЯТТИНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СЕРВИСА...

Конспект лекций по дисциплине ОПЕРАЦИОННЫЕ СИСТЕМЫ И СРЕДЫ
На сайте allrefs.net читайте: Конспект лекций по дисциплине ОПЕРАЦИОННЫЕ СИСТЕМЫ И СРЕДЫ. Колледж...

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

0.038
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам