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

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

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

ОПЕРАЦИОННЫЕ СИСТЕМЫ - раздел Образование, ...

Министерство образования и науки Российской Федерации   ГОУ ВПО "Российский государственный торгово-экономический университет" Ивановский филиал   Кафедра экономической информатики и вычислительной техники  

 

 

Ершов Б.Л.

 

 

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

  Иваново 2011

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

Ресурс может быть выделен задаче операционной системой в трёх случаях: · ресурс свободен и в системе нет запросов на него от задач с более высоким… · текущий запрос и ранее выданные запросы позволяют совместное использование ресурса;

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

 

 
 

 

 



а)

 

б)

Рис. 1.7. Монопрограммный (а) и мультипрограммный (б) режимы работы

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

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

Поскольку процессы могли содержать разные задачи, то появился многозадачный режим, а т.к. задачи могут принадлежать разным пользователям, то появился и многопользовательский режим. В мультизадачном режиме в противовес мультипрограммному режиму обеспечивается взаимодействие между вычислениями. Для подчёркивания этой разницы были введены термины "легковесные процессы" (thin), они же потоки выполнения, нити и треды (threads). Легковесными они называются потому, что процессору не требуется для их реализации организовывать полноценную виртуальную машину. Единственно, что имеют легковесные процессы своего, это процессорное время, всё остальное у связанных легковесных процессов общее. Наличие легковесных процессов позволило организовать много поточное выполнение задач.

 

Контрольные вопросы:

1. Перечислите основные функции операционной системы?

2. Что такое привилегированные и непривилегированные команды?

3. Что такое модули операционной системы?

4. Что такое ядро операционной системы?

5. Что такое монолитное ядро?

6. Нарисуйте и поясните структуру слоёной операционной системы?

7. Что такое супервизор?

8. Что такое микроядерная операционная система?

9. Что такое BIOS, где она находится при старте вычислительной машины и где помещается во время её работы?

10. Что такое переносимый и непереносимый модуль операционной системы?

11. Что такое системный запрос?

12. Что такое интерфейс прикладного программирования?

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

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

15. Как обеспечить переносимость программ из одной операционной системы в другую?

16. Что такое очередь, и как она работает?

17. Как происходит адресация в стеке?

18. Что такое стек, и как он работает?

19. Можно ли прочитать данные, записанные в стек, после их считывания?

20. Что такое машинная команда? Какова её структура (формат)?

21. Что такое адресация? Какие существуют способы адресации?

22. Что такое непосредственная адресация?

23. Что такое прямая адресация?

24. Что такое регистровая адресация?

25. Что такое косвенная адресация?

26. Каким образом процессор распознаёт способ адресации операндов в машинной команде?

27. Что такое прерывание?

28. Что такое состояние процесса вычислений? Где оно хранится?

29. Что такое контекст программы?

30. Что такое дескриптор программы, и какова его структура?

31. Нарисуйте и поясните схему обслуживания прерывания в простых системах?

32. Нарисуйте и поясните схему обслуживания прерывания в сложных системах?

33. Чем отличаются схемы обслуживания прерывания в простых и сложных системах?

34. Какова структура программы, обслуживающей прерывание?

35. Что такое синхронные (внутренние), асинхронные (внешние) и программные (события) прерывания?

36. Перечислите источники внешних прерываний.

37. Перечислите источники внутренних прерываний.

38. Что такое маскирование прерываний?

39. Как решается вопрос о порядке обслуживания одновременно возникших запросов на прерывания?

40. Что такое приоритет прерываний? Как можно изменить приоритет?

41. Что такое режим прерываний? Как он устанавливается?

42. Что такое дисциплина обслуживания прерывания? Для чего необходимо это понятие?

43. Перечислите и поясните основные дисциплины обслуживания прерываний.

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

45. Что такое дисциплина обслуживания прерываний с абсолютным приоритетом?

46. Что такое дисциплина обслуживания прерываний LCFS (FIFO)?

47. Расположите в порядке возрастания приоритета источники прерываний: системный таймер, внешние устройства, средства контроля процессора и программные прерывания.

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

49. Что такое процесс? Приведите примеры.

50. Дайте современное определение понятия "Задача".

51. Что такое ресурс? Приведите примеры ресурсов.

52. Что такое дескриптор процесса, и какова его структура?

53. Нарисуйте и поясните диаграмму состояния процесса.

54. Что такое делимые и неделимые ресурсы? Приведите примеры.

55. Опишите три ситуации выделения ресурса задаче.

56. Что такое одновременное и параллельное (попеременное) разделение ресурсов? Приведите примеры.

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

58. Как разделяется внешняя память? В чём особенность разделения памяти как ресурса?

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

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

61. Что такое однократно используемые программные модули? Могут ли они быть разделяемыми ресурсами? Почему?

62. Что такое непривилегированные программные модули? Могут ли они быть разделяемыми ресурсами? Почему?

63. Что такое привилегированные программные модули? Могут ли они быть разделяемыми ресурсами?

64. Почему привилегированные программные модули могут быть разделяемыми ресурсами?

65. Что такое реентабельные программные модули? Могут ли они быть разделяемыми ресурсами?

66. Почему реентабельные модули могут быть разделяемыми ресурсами?

67. Что такое повторно входимые программные модули? Могут ли они быть разделяемыми ресурсами? Почему?

68. Что такое мультипрограммный режим работы операционной системы? Поясните временной диаграммой.

69. Почему в мультипрограммном режиме производительность вычислительной системы увеличивается? Поясните временной диаграммой.

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

71. Что такое мультизадачный режим работы операционной системы?

72. Что такое легковесные процессы?

73. Что такое потоки выполнения?

74. Что такое нити?

75. Что такое треды?

76. Что такое разделение времени?

 


2. УПРАВЛЕНИЕ ПАМЯТЬЮ В ОПЕРАЦИОННЫХ СИСТЕМАХ

2.1. Память и отображения,
виртуальное адресное пространство

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

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

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

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

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

 
 

 

 


Рис. 2.1. Память и отображения

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

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

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

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

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

Рассматривая соотношение объёмов виртуальной памяти VV и физической памяти VР, можно выявить три очевидных случая:

· VV < VР – ныне практически не встречается, характерно для 16-разрядных машин и предусматривает:

§ деление оперативной памяти на разделы размером по 64 К;

§ загрузку программы в один из разделов

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

· VV = VР – часто встречающийся случай, характерный для недорогих вычислительных комплексов

· VV > VР – наиболее часто встречающийся случай, характерный даже для персональных компьютеров и, тем более, для более сложных вычислительных систем.

 

2.2. Простое непрерывное распределение
и распределение с перекрытием

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

· области, занимаемой операционной системой;

· области, занимаемой задачей;

· свободной области памяти.

Для обеспечения наибольшего объёма памяти, отводимой для задач, в области, отведённой для операционной системы должны находиться самые необходимые модули операционной системы, которые называются ядром. Остальные могут подгружаться по мере необходимости. Наличие разных внешних устройств требует выделения как специальных областей памяти под буферы[3] внешних устройств, так и памяти под их драйверы. Поэтому, объём памяти, реально занимаемый операционной системой, имеет для различных комплексов переменный размер. Максимальный размер области, занимаемой операционной системой может быть предсказан. Поэтому память, использующаяся задачами, и свободная память образуют непрерывные области. Нет необходимости жёстко привязывать виртуальные адреса программ к реальным физическим адресам на стадии программирования. Эту привязку выполняет загрузчик программы.

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

В практике встречаются случаи создания программ, общий объём модулей которой превышает размер оперативной памяти, отводимой для хранения кодов программ и данных. В этом случае программа создаётся из множества модулей. Часть их находится в памяти постоянно в течение времени работы программы. Часть модулей находится в памяти программы только во время их исполнения, а по мере завершения заменяется другими. Такие модули называются оверлейными[4]. Распределение памяти, использующее оверлейные модули, называется распределением с перекрытием.

 

2.3. Распределение памяти статическими разделами

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

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

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

Серьёзный недостаток распределения памяти на статические разделы привёл к попыткам распределения памяти на разделы с переменными границами (динамическим разделами) и к фрагментации задач.

 

2.4. Распределение памяти с динамическими разделами

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

· выделяется первый подходящий раздел;

· выделяется самый подходящий раздел;

· выделяется самый неподходящий раздел, имеющий больший объём, чем задача (самый эффективный способ).

При завершении задачи освободившийся фрагмент по возможности присоединяется к смежному с ним свободному фрагменту.

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

 

2.5. Распределение памяти с фрагментацией задач

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

Сегментная организация памяти (рис. 2.2) предусматривает:

· разбиение программы на логические части, которые называются сегментами;

· выделение каждому сегменту физической памяти, раз мер которой определяется исходя из заявленного объёма сегмента.

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

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

 
 

 


Рис. 2.2. Схема адресации при сегментной организации памяти

При передаче управления задаче операционная система заносит в регистр таблицы дескрипторов сегментов адрес (А) указанной таблицы. Виртуальный адрес элемента программы (ЭП) состоит из номера сегмента (S) и смещения (D). Сумма адреса А и номера сегмента S является адресом дескриптора сегмента в таблице дескрипторов сегментов текущей задачи. Сумма адреса начала сегмента NS и смещения D даёт адрес элемента программы ЭП в текущем сегменте. Бит Р=1 указывает, что сегмент находится в оперативной памяти машины.

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

· FIFO (First In First Out) – первым пришёл, первым выбыл;

· LRU (Least Resently Used) – выбывает дольше других неиспользуемый;

· LFU (Least Frequently Used) – выбывает реже других используемый;

· Random – случайный выбор сегмента, подлежащего выбытию.

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

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

Недостатками сегментного способа организации памяти являются:

· большие потери времени на чтение дескриптора и вычисление физического адреса ячейки;

· значительные затраты памяти и процессорного времени на ведение и обработку таблиц дескрипторов;

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

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

Операционная система в этом случае ведёт таблицу страниц. Виртуальный адрес элемента программы (рис. 2.3,б) состоит из номера страницы Pg и номера ячейки I внутри страницы (индекса). Благодаря одинаковому размеру физических страниц памяти стало возможно говорить о двумерной модели адресного пространства (рис. 2.3,а). Одной из координат пространства является номер страницы, а второй – индекс. Описание страницы, включающее в себя адрес страницы NP в памяти, код прав доступа, бит присутствия в памяти P и т.д. называется дескриптором страницы.

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

 

 

 


Рис. 2.3. Двумерная модель адресного пространства (а) и схема адресации (б)
при страничной организация памяти

Для обслуживания свопинга страниц применяются дисциплины замещения FIFO, LFU и LRU, которые упоминались при описании сегментного распределения памяти. Как правило, используются дисциплины аппаратно зависимые LFU и LRU, однако в семействе операционных систем Windows для обеспечения аппаратной независимости используется неэффективная дисциплина FIFO. Для компенсации её недостатка используется приём "буферизация". Он заключается в предварительной пометке страницы, подлежащей выводу во внешнюю память или расформированию. Если при дальнейшей работе страница и дальше используется редко или кратковременно, то она выгружается или расформировывается. Если до момента расформирования или выгрузки страница вызывается, то она уходит в конец очереди FIFO, а на её место помещается следующий кандидат. Таким образом, в голове очереди FIFO практически постоянно находятся часто или длительно используемые страницы.

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

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

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

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

Операционная система ведёт таблицу дескрипторов сегментов текущей задачи и таблицу страниц сегмента задачи. При запуске программы в регистр дескрипторов сегментов записывается адрес таблицы дескрипторов сегментов. Вычисление физического адреса элемента программы осуществляется в три этапа:

· вычисление адреса дескриптора сегмента как суммы адреса таблицы дескрипторов и номера сегмента;

· вычисление адреса дескриптора страницы как суммы адреса начала сегмента и номера страницы;

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

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

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

 
 

 


Рис. 2.4. Трёхмерная модель адресного пространства (а) и схема адресации (б)
при страничной организация памяти

 

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

 

Контрольные вопросы:

1. Что такое символьные имена?

2. Что такое логическое адресное пространство?

3. Что такое виртуальное адресное пространство?

4. Что такое физическое адресное пространство?

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

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

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

8. Какую особенность имеют программы при полной идентичности виртуального адресного пространства и пространства имён программы?

9. Как происходит определение физического адреса по базовому адресу и смещению при загрузке программы?

10. Как физический адрес определятся при выполнении программы, если загрузчик программы не участвует в его определении?

11. Что такое простое непрерывное распределение памяти?

12. Какие недостатки имеет простое непрерывное распределение памяти?

13. Что такое распределение памяти с перекрытием?

14. Что такое оверлейные модули?

15. Что такое распределение памяти статическими разделами?

16. Какие недостатки имеет распределение памяти статическими разделами?

17. Что такое свопинг разделов?

18. Что такое фрагментация памяти?

19. Что такое распределение памяти с динамическими разделами?

20. Какой недостаток имеет распределение памяти с динамическими разделами?

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

22. Как происходит распределение памяти при её сегментной организации7

23. Какие недостатки имеет сегментная организация памяти?

24. Что такое таблица сегментов, какой она имеет формат и в каких целях она ведётся операционной системой?

25. Какой формат имеет логический адрес при сегментной организации памяти?

26. Как при сегментной организации памяти вычисляется физический адрес?

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

28. Каковы недостатки сегментного способа организации памяти?

29. Что такое страница памяти?

30. Какой формат имеет логический адрес при страничной организации памяти?

31. Как распределяется память при её страничной организации?

32. Что такое таблица страниц? Каков её формат? В каких целях она ведётся?

33. Как определяется физический адрес при страничной организации памяти?

34. Каковы недостатки страничной организации памяти?

35. Что такое сегментно-страничная организация памяти?

36. Какой формат имеет логический адрес при сегментно-страничной организа­ции памяти?

37. Как определяется физический адрес при сегментно-страничной организации памяти?

38. Опишите двумерную модель памяти?

39. Опишите трёхмерную модель памяти. При каких упрощениях возможно говорить о трёхмерной модели памяти?


3. УПРАВЛЕНИЕ ПРОЦЕССАМИ

3.1. Реализация последовательного процесса
в операционной системе

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

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

Таким образом, при управлении процессами операционная система выполняет следующие основные функции:

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

· планирование процессов;

· диспетчеризация задач;

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

 

3.2. Планирование и диспетчеризация процессов и задач

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

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

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

Актуальность долгосрочного планирования процессов с развитием вычислительных систем снизилась. И, наоборот, возросла актуальность краткосрочного (динамического) планирования процессов и задач, которое приходится осуществлять практически при появлении каждого события. Динамическое планирование принято называть диспетчеризацией задач. Диспетчеризацию задач осуществляет другой блок супервизора – диспетчер задач. Диспетчер запускается раз 30 – 100 мс.

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

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

Стратегия планирования основана на следующих основных принципах:

· по возможности заканчивать вычислительные процессы в том же порядке, в котором они были начаты;

· отдавать предпочтение более коротким вычислительным задачам;

· предоставлять всем процессам пользователей одинаковое время ожидания.

В стратегии планирования используется понятие "задача переднего плана" (foreground task). Этот термин родился из предположения "параллельная работа одного пользователя со множеством задач маловероятна". Поэтому из множества задач одного пользователя самый высокий приоритет имеет текущая задача, т.е. задача с которой он работает в текущий момент времени. В то же время для обеспечения нормальной работы коммуникационных процессов задачи ввода-вывода и управления должны иметь более высокий приоритет, чем задачи пользователя.

В широко распространённой системе Windows имеется возможность переключения стратегий обслуживания. В них по умолчанию установлена стратегия предоставления процессора задаче переднего плана. Однако, открыв окно "Система : Свойства" можно изменить стратегию. Например, в Windows 2000 можно выбрать "Оптимизировать быстродействие приложений", а в Windows XP – "Обеспечить наивысшее быстродействие".

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

Дисциплин обслуживания (диспетчеризации) существует достаточно много (рис. 3.1). Прежде всего, они делятся на бесприоритетные и приоритетные. Бесприоритетные дисциплины не учитывают ни важность задач. Ни время их обслуживания. Приоритетные дисциплины предоставляют отдельным задачам право попасть на первоочередное обслуживание. Приоритет может быть постоянным и изменяемым (динамическим).

 


 

Рис. 3.1. Классификация дисциплин диспетчеризации

Наиболее просто реализуется дисциплина обслуживания в порядке очереди (FCFS – первым пришёл, первым обслужен).

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

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

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

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

Последние три дисциплины хорошо применяются для пакетных режимов. Однако они создают две проблемы:

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

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

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

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

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

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

В некоторых операционных системах, в частности UNIX, уровни приоритетов задач рассчитываются достаточно часто и лежат в диапазоне 0 – 127, причём приоритеты в диапазоне 96 – 127 являются фиксированными, в диапазоне 66-95 – системными и в диапазоне 0 – 65 – приоритеты режима задач. Системные и задачные приоритеты являются динамическими.

В системах Windows NT/2000/XP диспетчер поддерживает 32 уровня приоритета, причём задачи делятся на два класса: задачи реального времени и переменного приоритета. Приоритеты задач реального времени находятся в диапазоне 16 –31, все остальные имеют динамически изменяемый приоритет в диапазоне 1 – 15. При прерывании задачи операционная система снижает приоритетна единицу, а при освобождении задачи из очереди ожидания.

В системе OS/2 имеется четыре класса приоритетов, меняющихся в пределах класса в диапазоне 0 – 31. Это обеспечивается наличием 128 очередей задач с разными приоритетами.

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

При разработке дисциплины диспетчеризации весьма актуальной является проблема гарантированного обслуживания[5]. Диспетчеризация на основе жёстких временных ограничений иногда приводит к более быстрому выполнению задач, которые реально в нём не нуждаются, за счёт других задач. Существует три способа обеспечения гарантированного обслуживания процесса:

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

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

· выделение процессу такого количества процессорного времени, которое гарантирует завершение процесса к некоторому наперёд заданному сроку.

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

Для сравнения алгоритмов диспетчеризации применяется ряд критериев:

· Загрузка центрального процессора (в среднем для персональных систем 2 – 3%, для серверов от 15 – 40% до 90 – 100%);

· Пропускная способность центрального процессора, измеряется количеством процессов, выполняемым за единицу времени;

· Время оборота – время, затраченное на выполнение процесса с момента его появления до момента исчезновения;

· Время ожидания – время нахождения процесса в очереди готовых процессов;

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

Основные причины снижения производительности системы:

· большие накладные расходы на переключение процессора;

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

В мультипроцессорных системах повышение производительности достигается вследствие применения:

· совместного планирования, при котором все неблокированные потоки одного приложения одновременно ставятся на выполнение процессорами и одновременно снимаются с выполнения;

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

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

 

3.3. Управление параллельными процессами

3.3.1. Понятие параллельных процессов

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

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

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

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

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

    Рис. 3.2. Обобщённая модель взаимодействующих процессов Коды процессов Р1 и Р2 имеют критические (CS1, CS2) и обычные (PR1, PR2) секции. Процессы Р1 и Р2 могут выполняться произвольное число раз, имеют общую область памяти Х и обращаются к критическому разделяемо­му ресурсу КР.

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

Begin . . . {начало программного кода}
Parbegin {начало описания параллельных процессов}
S11; S12; . . . S1N {список N операторов процесса № 1 }
AND {разделитель описаний процессов }
S11; S12; . . . S1Q {список Q операторов процесса № 2 }
Parend {конец описания параллельных процессов}
End {конец программного кода}

Рис. 3.3. Код, описывающий параллельные взаимодействующие процессы

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

В [1] описано несколько примеров конкурирующих процессов, в частности два не синхронизированных процесса Р1 и Р2, имеющих общую переменную Х, размещённую в оперативной памяти. Процесс Р1 имеет собственную переменную R1, а процесс Р2 – собственную переменную R2. Разумеется, эти переменные размещаются в памяти по разным адресам. Процесс Р1 состоит из трёх операторов присваивания: R1:=X, R1:=R1+1 и X:=R1[6]. Процесс Р2 включает в себя тоже три оператора присваивания: R2:=X, R2:=R2+1 и X:=R2. Предположим, что к моменту начала выполнения процессов переменная Х имеет значение 10.

Пусть при выполнении процессов сложилась ситуация, в которой сначала выполнялся процесс Р1, а потом Р2. Тогда реализуется цепочка операторов, показанная в табл. 3.1. Ситуация, в которой после первого оператора процесса Р1 выполнится первый оператор процесса Р2 показана в табл. 3.2.

Таблица 3.1. Первый вариант взаимодействия конкурирующих процессов
Выполняемый оператор Значения переменных
X R1 R2
R1:=X Не определена
R1:=X+1 Не определена
X:=R1 Не определена
R2:=X
R2:=R2+1
X:=R2
       

 

Таблица 3.2. Второй вариант взаимодействия конкурирующих процессов
Выполняемый оператор Значения переменных
X R1 R2
R1:=X Не определена
R2:=X
R1:=X+1
X:=R1
R2:=R2+1
X:=R2

 

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

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

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

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

 

3.3.2. Методы реализации взаимных исключений

В [1] приведены основные требования, предъявляемые к критическим секциям:

· в любой момент времени только один процесс должен находиться в своей критической секции;

· продолжительность нахождения процесса в критической секции не может быть бесконечно долгой;

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

§ процесс, работающий вне своей критической секции не должен блокировать критическую секцию другого процесса;

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

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

Эти требования могут быть реализованы множеством средств, описанных Дейкстрой в [4] ещё в 1972 г. К ним относятся:

· блокировка памяти;

· специальные команды типа "проверка и установка";

· средства, предоставляемые системой управления прерываниями:

§ семафорные операции;

§ мониторы;

§ почтовые ящики, конвейеры и очереди сообщений.

 

3.3.3. Блокировка памяти

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

· применение одной общей переменной (переключателя);

· применение двух общих переменных;

· применение двух общих переменных с усилением взаимных исключений;

· применение трёх общих переменных (алгоритм Декера).

Применение одной общей переменной предусматривает создание переменной, называемой "переключателем" и могущей принимать значения 1 или 2. Значение переключателя равное единице разрешает выполнение секции CS1 (рис. 3.2), а значение переключателя равное двум – выполнение секции CS2. Выполнение критической секции одного процесса не блокирует выполнение обычной секции другого.

В начальный момент запуска процессов переключатель ставится в состояние единица. При этом процесс Р1 выполняет критическую секцию PS1, а процесс Р2 – секцию PR2. Отработав критическую секцию, процесс Р2 ставит переключатель в состояние двойка и переходит к выполнению обычной секции PR1. Процесс Р2 начинает выполнять критическую секцию CS2. После её завершения переключатель устанавливается в положение единица, система приходит в исходное состояние, и всё повторяется.

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

Применение двух переменныхпредусматривает создание двух общих для процессов Р1 и Р2 логических переменных, которые называются флагами, могут иметь значения True или False. Эти переменные называются переключателями. Далее для определённости рассмотрения реализации взаимного исключения они будут иметь имена "перекл_1" и "перекл_2". Значение True флага перекл_1 означает, что процесс Р1 находится в критической секции CS1, а значение True флага перекл_2 указывает на нахождение в критической секции CS2 процесса Р2.

Перед вхождением в критическую секцию процесс Р1 проверяет состояние флага перекл_2 и, если он имеет значение False, устанавливает свой флаг перекл_1 в состояние True и начинает выполнять свою критическую секцию. После её завершения процесс восстанавливает состояние False флага перекл_1. Если перекл_2 в момент проверки находился в состоянии True, то процесс Р1 мог выполнять обычную секцию или становился в очередь ожидания разрешения на вхождение в критическую секцию. Аналогичным образом действует и процесс Р2, но для него разрешением на вхождение в критическую секцию является значение False флага перекл_1, а управляет он флагом перекл_2.

Такой алгоритм не даёт полной гарантии взаимного исключения, т.к. перевод флагов из одного состояния в другое и вхождение в критическую секцию имеют конечную длительность. За время изменения состояния флага перекл_1 процессом Р1 и вхождения в критическую секцию процесс Р2 (если он имеет более высокое быстродействие) может успеть изменить флаг перекл2 и войти в свою критическую секцию, а процесс Р1 этого не заметит. Возможна и обратная ситуация, если процесс Р1 имеет более высокое быстродействие, чем процесс Р2.

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

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

Алгоритм Декера предусматривает создание трёх переменных перекл_1, перекл_2 и Очередь. Переменные перекл_1 и перекл_2, как и ранее, гарантируют выполнение взаимного исключения. Переменная очередь, указывает какой из процессов, конкурирующих за критический ресурс, должен войти в свою критическую секцию. Переменная очередь не изменяется во время принятия решения о порядке вхождения процессов в критические секции. Её изменение присходит в конце выполнения критической секции. Таким образом, согласно алгоритму Деккера возможны три ситуации вхождения процессами в критические секции:

· перекл_1=True и перекл_2=False;

· перекл_1=False и перекл_2=True;

· перекл_1=True и перекл_2=True и оба процесса желают сойти в критическую секцию.

В первой ситуации право входа в критическую секцию имеет процесс Р1 независимо от значения переменной очередь, во второй ситуации право входа в критическую секцию принадлежит процессу Р2, а в третьей право входа процессов в критическую секцию определяет значение переменной очередь.

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

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

 

3.3.4. Применение специальных операций
типа "проверка–установка"

Причиной возникновения проблем при реализации взаимного исключения посредством блокировки памяти является реализация механизма двумя командами "проверить флаг" и "становить флаг". Во время исполнения этой пары операций доступ к флагам имеют все процессы, конкурирующие за критический ресурс. Попытка решить эту проблему аппаратными средствами была сделана ещё в знаменитых машинах IBM 360 и IBM 370. В них появилась единая неделима команда TS (Test and Set) проверки и установки переменных. Т.к. эта команда неделима, то на время её использования одним процессом проверяемая переменная становится недоступна другим процессам.

Команда TS имеет формат:

TS (операнд_1, операнд_2).

В процессе её выполнения в операнд_1 копируется значение из операнд_2, а операнд_2 получает значение единица.

Для реализации взаимного исключения, как и в случае блокировки памяти, создаются два флага перекл_1 и перекл_2, а также переменная common.Все три переменные являются общими для конкурирующих за критический ресурс процессов. При запуске процессов Р1 и Р2 переменная common получает значение нуль. Перед вхождением в свои критические секции процессы Р1 и Р2 ставят свои флаги в состояние единица и выполняют команду TS:

· процесс Р1: перекл_1:=1; TS(перекл_1,common);

· процесс Р2: перекл_2:=1; TS(перекл_2,common).

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

В архитектуре IA32 команда TS получила своё развитие, в результате которого появились три команды BTC, BTS и BTR.

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

 

3.3.5.Семафоры и их применение

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

Эта идея реализована в семафорных примитивах Дейкстры. Семафором называется переменная специального типа, которая доступна параллельным процессам. Для управления семафором S процессы могут использовать только две операции: "открыть" V(S) и "закрыть" P(S).

При старте процессов должна выполняться инициализация семафора, т.е. задание ему начального значения. Инициализация семафора осуществляется операцией InitSem(Имя_семафора, Начальное_состояние).

Семафор (S) является дополнительным критическим ресурсом, который указывается в качестве параметра операции, а операции P(S) и V(S) являются примитивами. Они неделимы и взаимно исключают друг друга.

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

В настоящее время существует достаточно много семафорных механизмов, описанных в [5] и различающихся следующими параметрами:

· начальное значение семафора;

· диапазон допустимых значений семафора;

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

· количество семафоров, доступных примитивам для обработки.

Различают семафоры с разным числом состояний. Существуют двоичные семафоры, имеющие два состояния: "открыт" и "закрыт". Такие семафоры называются мьютексами. Существуют семафоры, имеющие N состояний. Среди них различают семафоры столько положительными значениями и семафоры, допускающие отрицательные значения. В таких семафорах отрицательные значения указывают длину очереди процессов, ожидающих критический ресурс.

Два варианта реализации семафора показаны на рис. 3.4. В обоих случаях описания примитивов можно оформит в виде процедур или процедур-функций. Примитив P(S) вызывается процессом перед вхождением в критическую секцию. Примитив V(S) вызывается после выполнения критической секции.

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

 

P(S): S:=S-1; If S<0 Then WAIT(S)

V(S): If S<0 Then RELEASE(S); S:=S+1

а)

P(S): If S>=1 Then S:=S-1 Else WAIT(S)

V(S): If S<0 Then RELEASE(S); S:=S+1

б)

Рис. 3.4. Неудачный (а) и удачный (б) варианты реализации примитивов P(S) и V(S)

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

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

 

Var S: Semafor Begin InitSem(S,1) {описание переменной S типа Semafor} {начало программного кода} {инициализация семафора S значением единица}
Parbegin {начало описания параллельных процессов}
while true do {организация бесконечного процесса Р1 }
begin P(S) CS1 V(S) end {начало описания тела процесса Р1} {вызов примитива P(S)} {выполнение критической секции процесса Р1} {вызов примитива V(S)} {конец описания тела процесса Р1}
AND {разделитель описаний процессов }
while true do {организация бесконечного процесса Р2 }
begin P(S) CS1 V(S) end {начало описания тела процесса Р2} {вызов примитива P(S)} {выполнение критической секции процесса Р2} {вызов примитива V(S)} {конец описания тела процесса Р2}
Parend {конец описания параллельных процессов}
End {конец программного кода}

Рис. 3.5. Пример применения семафора

Один и тот же программный код (рис. 3.5) при использовании разных вариантов реализации семафора даст разный результат. Вариант реализации, показанный на рис. 3.4,б, будет надёжно работать, тогда как вариант рис. 3.4,а приведёт к ситуации, в которой заблокированы оба процесса (рис. 3.6.).

 
 

 


Рис. 3.6. Возникновение ситуации блокирования обоих процессов

Эта ситуация может возникнуть следующим образом. При запуске процессов Р1 и Р2 в семафор записана (+1). Оба процесса находятся в состоянии готовности. В момент времени t1 примитив P(S), вызванный процессом Р1 сбросит семафор в нуль. Во время выполнении критической секции CS1 процесса Р1 значение семафора равно нулю.

Однако в момент t2 примитив P(S), вызванный процессом Р2 запишет в семафор значение (-1), а сам процесс Р2 будет остановлен. В момент t3 примитив V(S) восстановит в семафоре значение ноль и переведет процесс Р2 в состояние готовности. Процесс Р1 останется в состоянии готовности.

Если Р2 попытается войти в свою критическую секцию, то это ему не удастся. В момент времени t4 в семафоре будет восстановлено значение (-1), процес Р2 будет остановлен и поставлен в очередь к семафору. Дальнейшая попытка процесса Р1 войти в свою критическую секцию будет также неудачна, процесс Р1 будет остановлен, и возникнет ситуация блокирования обоих процессов, из которой выхода нет.

Реализация неделимости примитивов P(S) и V(S) в однопроцессорной системе достигается простым отключением прерываний в критических секциях процессов и их последующим включением при выходе из неё. В многопроцессорных системах этот вариант не проходит, т.к. не запрещает одновременный запрос критического ресурса со стороны множества процессоров. Поэтому механизм семафоров несколько усложняется и дополняется аппаратной поддержкой взаимного исключения доступа для разных процессоров. Это может быть достигнуто, например, использованием неделимых команд "проверка – установка" TS, которые описаны в 3.3.4.

Некоторые особенности имеет применение двоичных семафоров (мьютексов). Они имеют два состояния "отмечен" (открыт) и "не отмечен" (закрыт). Мьютексы предназначены для организации взаимного исключения для потоков выполнения (задач) одного или нескольких процессов.

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

Для работы с мьютексами используются системные вызовы (функции):

· CreateMutex() – создание мьютекса;

· OpenMutex() – открытие мьютекса;

· WaitForSingleObject() – ожидание события от одного объекта;

· WaitForMultipleObject() – ожидание события от множества объектов;

· ReleaseMutex() – освобождение мьютексм.

 

3.3.6. Мониторы

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

Более лучшее решение вопроса о взаимном исключении в 80-х гг. прошлого века предложил Ч. Хоар. Он предложил механизм мониторов. Монитором в параллельном программировании называют пассивный набор разделяемых переменных и повторно входимых процедур (см. раздел 1.6). Повторно входимые процедуры обеспечивают доступ к разделяемым переменным. В каждый момент времени монитором может пользоваться только один процесс. Процедуры монитора исполняются только по требованию процессов.

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

Пример реализации простейшего монитора для выделения процессам одного ресурса показан на рис. 3.7 [1].

monitor Resource; condition free; var busy: boolean; {заголовок описания монитора} {условие ожидания – свободный} {описание переменной занят}
Procedure REQUAEST; begin if busy then WAIT(free);   busy:=True; TakeOff end; {заголовок процедуры Запрос ресурса}   {если монитор занят, то блокировать вызвавший} {процесс до сигнала Свободен} {перевод монитора в состояние Занят} {предоставить ресурс ожидающему процессу}  
Procedure RELEASE; begin TakeOn; busy:=False; SIGNAL(free); end; {заголовок процедуры Освободить ресурс}   {взять предоставленный ресурс} {освободить монитор} {послать сигнал Свободен ожидающим процессам}

Рис. 3.7. Пример реализации простейшего монитора

Исполняющийся процесс запрашивает ресурс, вызывая процедуру REQUAEST. Если монитор занят (busy:=True), то процесс блокируется и ставится в очередь ожидания. Дальнейшее выполнение процедуры откладывается. Если монитор свободен, то он переводится в состояние "Занят" и предоставляет критический ресурс вызвавшему REQUAEST процессу.

Процесс, использующий ресурс, вызывает процедуру RELEASE, забирает его в своё пользование. Использовав ресурс, процесс переводит монитор в состояние "Свободен" и подаёт сигнал "Свободен" ожидающим процессам. Рано или поздно очередь пользования ресурсом дойдёт до отложенного процесса, по сигналу "Свободен" он снова сделает попытку вызывать REQUAEST и, в конце концов, получит в своё распоряжение критический ресурс.

По сравнению с семафорами мониторы имеют следующие преимущества:

· высокая гибкость, т.е. способность мониторов приспосабливаться к новым задачам;

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

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

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

 

3.3.7. Почтовые ящики, конвейеры и очереди сообщений

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

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

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

Для работы с почтовым ящиком используются системные функции:

· SAND_MASSAGE(Получатель, сообщение, буфер) – копирование сообщения в буфер, запись адреса буфера в переменную Буфер, добавление буфера в очередь к получателю;

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

· SAND_ANSWER(Результат, Ответ, Буфер) – запись информации, определённой переменной Ответ в буфер, указанный переменной Буфер; переменная Результат указывает является ли ответ пустым или нет;

· WAIT_ANSWER(Результат, Ответ, Буфер) – блокирование процесса, вызвавшего функцию до появления в его буфере какого-либо ответа; переменная результат указывает, является ли ответ пустым или нет, переменная Ответ получает ответ, переменная Буфер указывает адрес буфера, содержащего ответ; при передаче процесса на выполнение на процессоре, процесс получает ответ, а буфер очищается.

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

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

Почтовые ящики как средство организации обмена данными между процессами имею следующие достоинства:

· процессу нет надобности знать о других процессах до получения от них сообщений;

· два процесса могут обменяться несколькими сообщениями за один раз;

· операционная система гарантирует невмешательство в обмен сообщениями и ответами процессов, не имеющих к нему никакого отношения;

· вследствие существования очередей буферов работа процессов-отправи­телей сообщений не зависит от процессов-получателей.

Недостатками почтовых ящиков являются:

· появление дополнительных ресурсов, подлежащих управлению, которыми являются сами почтовые ящики;

· статический характер почтовых ящиков.

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

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

 
 

 



а)

       
 
   

 



б)

Рис. 3.8. Принцип действия конвейера

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

Разумеется, читать данные из конвейера может только тот процесс, который "знает" идентификатор конвейера. Недостатком конвейера является ограничение его ёмкости 64 К, что ограничивает размер передаваемых сообщений.

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

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

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

Контрольные вопросы

1. Что такое мультипрограммный и мультизадачный режимы работы операционной системы?

2. Что такое дескриптор процесса? Какова его роль при прерывании процесса?

3. В каких состояниях могут находиться процессы в операционной системе?

4. Поясните пожалуйста основные функции операционной системы при управлении процессами.

5. Что такое планирование и диспетчеризация процессов?

6. Что такое стратегия планирования? На каких принципах она основана?

7. Что означает термин "Задача переднего плана"?

8. Что такое бесприоритетные дисциплины обслуживания? Какие они бывают?

9. Поясните линейные дисциплины обслуживания.

10. Поясните циклические дисциплины обслуживания.

11. Что такое приоритетные дисциплины обслуживания? Перечислите и поясните группы дисциплин, относящихся к приоритетным дисциплинам.

12. Что такое дисциплины с фиксированным приоритетом?

13. Что такое дисциплины с динамическим приоритетом?

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

15. Что такое вытесняющие и невытесняющие дисциплины обслуживания?

16. Что такое дисциплины SJN и SRT?

17. Что такое карусельная дисциплина обслуживания? Как она реализуется?

18. Чем отличается планирование процессов от диспетчеризации?

19. Какими способами обеспечивается гарантированное обслуживание процесса?

20.

 


4. ПРОБЛЕМА ТУПИКОВ И ЕЁ РЕШЕНИЕ

4.1. Проблема тупиков, разделяемые ресурсы
и модели параллельных процессов

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

При рассмотрении проблемы разделяемые ресурсы делятся на два класса:

· повторно используемые (RR) ресурсы, они же системные ресурсы (SR);

· потребляемые (они же расходуемые) ресурсы (CR).

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

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

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

· модель повторно используемых ресурсов Хольта;

· сети Петри;

· модель пространства состояний системы.

 

4.2. Модель повторно используемых ресурсов Холта[7]

Модель Холта представляет собой граф состояний ресурсов и процессов, имеющий вершины двух типов и направленные дуги (стрелки), показывающие запрос и выделение ресурса процессу. Вершинами графа являются процессы и ресурсы. Процессы обозначаются прямоугольниками (квадратами), а ресурсы – кружками. Число точек в кружке показывает количество единиц ресурса. Условные обозначения модели Хольта приведены в табл. 4.1. Пример модели Хольта [1] для двух процессов, в которой возможен тупик, показан на рис. 4.1. На модели показано ситуация, в которой процесс ПР1 запрашивает две единицы ресурса R1 и одну единицу ресурса R2. В то же время процесс ПР2 уже захватил две единицы ресурса R1 и запросил единственную единицу ресурса R2. На долю процесса ПР1 осталась только одна единица ресурса R1 и процесс может перейти в режим ожидания.

Таблица 4.1. Условные обозначения модели Холта

Обозначение Смысл обозначения
ПР

 

 

  Процесс ПР
      Ресурс R с четырьмя единицами
      Запрос единицы ресурса
      Выделение единицы ресурса

 

Рис. 4.1. Пример модели Холта с тупиком

В зависимости от последовательности захвата ресурса процессами и правила освобождения ресурсов в этой ситуации, возможно, возникнет тупик. Если правило освобождения ресурса предусматривает возможность освобождения ресурса только после получения процессом всех ресурсов, и процесс ПР1 захватил ресурс R2 раньше процесса ПР2, то тупик возникнет. Тупик возникнет потому, что процесс ПР1 будет находиться в режиме ожидания недостающей единицы ресурса R1 и не сможет освободить ресурс R2, а процесс ПР2 не сможет освободить недостающую единицу ресурса R1, т.к. не имеет ресурса R2.

При обмене процессами сообщениями через почтовые ящики по кольцевой схеме (рис. 4.2) возможно возникновение тупика. Процессы ПР1, Пр2, Пр3 создают сообщения М1, М2 и М3 соответственно. Посылка сообщения является запросом разделяемого ресурса типа CR, приём сообщения – освобождением запрошенного ресурса. Следует помнить, что процесс может послать сообщение только в почтовый ящик при наличии свободного гнезда.

 
 

 


Рис. 4.2. Кольцевая схема обмена сообщениями через почтовые ящики

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

 

. . .  
Parbegin  
ПР1: Начало описания процесса ПР1
SAND_MASSAGE(ПР2, М1, ПЯ2); Посылка сообщения процессу ПР2
WAIT_MASSAGE(ПР3, М3, ПЯ1); Ожидание сообщения от процесса ПР3
. . .  
ПР2: Начало описания процесса ПР2
SAND_MASSAGE(ПР3, М2, ПЯ3); Посылка сообщения процессу ПР3
WAIT_MASSAGE(ПР1, М1, ПЯ2); Ожидание сообщения от процесса ПР1
. . .  
ПР3: Начало описания процесса ПР3
SAND_MASSAGE(ПР1, М3, ПЯ1); Посылка сообщения процессу ПР1
WAIT_MASSAGE(ПР2, М2, ПЯ3); Ожидание сообщения от процесса ПР2
. . .  
Parend  

Рис. 4.3. Текст программы при кольцевой схеме обмена сообщениями

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

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

Примером другого тупика являетс тупик на ресурсах CR и SR. Два процесса ПР1 и ПР2 запрашивают у ресурса R1, имеющего тип CR, три и две единицы соответственно, а ресурс их имеет только четыре. Процессы обмениваются сообщениями, которые являются системными ресурсами SR и проходят через почтовый ящик ПЯ.

 
 

 

 


Рис. 4.4. Модель Холта, иллюстрирующая тупик

Процесс ПР1 использует ресурс для своей работы, а ПР2 – только на время обработки сообщения. Модель Хольта для такого взаимодействия процессов показана на рис. 4.4, текст программы, реализующей взаимодей­ствие процессов процессы с помощью мониторов, приведён на рис. 4.5.

Мониторы реализованы с помощью операторов REQUEST (запрос ресурса) и RELEASE (освобождение ресурса). Первый процесс захватывает ресурс R1 в самом начале работы и освобождает в конце. Второй ресурс ждёт прихода сообщения от процесса ПР1, затем запрашивает ресурс R1, затем обрабатывает сообщение и только после этого освобождает ресурс.

 

  . . .  
Parbegin  
ПР1: Начало описания процесса ПР1
REQUEST(R1,3); Запрос 3-х единиц ресурса R1
. . .  
SAND_MASSAGE(ПР2, М1, ПЯ); Посылка сообщения М1 процессу ПР2
WAIT_ANSWER(М2, ПЯ); Ожидание ответа М2 от процесса ПР2
. . .  
RELEASE(R1,3); Освобождение 3-х единиц ресурса R1
ПР2: Начало описания процесса ПР2
. . .  
WAIT_MASSAGE(ПР1, М1, ПЯ2); Ожидание сообщения от процесса ПР1
REQUEST(R1,2); Запрос 3-х единиц ресурса R1
. . .; Обработка сообщения
RELEASE(R1,2); Освобождение 3-х единиц ресурса R1
SAND_ANSWER(М1, ПЯ); Посылка ответа процессу ПР1
. . .  
Parend  

Рис. 4.5. Текст программы при кольцевой схеме обмена сообщениями

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

Возникновение тупика возможно и на ресурсах системных ресурсах типа SR. Пусть два процесса ПР1 и ПР2 обращаются к ресурсам R1 и R2. Взаимное исключение доступов к ресурсам реализуется на семафорах S1 и S2. Работа процессов с семафорами показана на рис. 4.6, граф Хольта – на рис. 4.5, анализ состояний с помощью пространства состояний – на рис. 4.7.

 

. . .  
Parbegin  
ПР1: Начало описания процесса ПР1 ПР2: Начало описания процесса ПР1
. . .   . . .  
1: P(S2); Закрытие S2 5: P(S1); Закрытие S1
. . .   . . .  
2: P(S1); Закрытие S1 6: P(S2); Закрытие S2
. . .   . . .  
3: V(S1); Открытие S1 7: V(S1); Открытие S2
. . .   . . .  
4: V(S2); Открытие S2 8: V(S2); Открытие S1
. . .   . . .  
    Parend  

Рис. 4.6. Управление семафорами в примере тупика на системных ресурсах SR

На рис. 4.6 метками 1 – 4 показаны номера операторов процесса ПР1, а метками 4 – 8 – номера операторов процесса ПР2. На рис. 4.7 стрелки, направленные к ресурсам показывают запрос ресурса, а направленные от ресурсов – захват ресурсов. Из рис. 4.7. видно, что возможно возникновение тупиков, т.к. процессы могут одновременно запросить одни и те же ресурсы. Всё зависит от последовательности работы семафоров во времени.

   
 
 

 

 


Рис. 4.7. Граф модели Холта для примера тупика на ресурсах SR

ПР2
       
 
   
ПР1
 

 

 


Рис. 4.8. Пространство состояний процессов ПР1 и ПР2

 

На рис. 4.8 пунктирные линии 1 – 4 и 5 – 8 соответствуют операторам процессов ПР1 и ПР2 соответственно. Изменение состояний процессов показано жирными направленными линиями Т1 и Т2. Эти линии называются траекториями. Пересечение пунктирных линий траекториям показывает моменты выполнения операторов. В исходных состояниях обе траектории начинаются из прямоугольника, находящегося в нижнем левом углу системы координат, т.е. ни один из операторов не выполнен.

Траектория Т1 безопасна, т.е. к моменту запроса процессом ПР2 ресурсов R1 (точка В) оба ресурса захвачены процессом ПР1, и процесс ПР2 окажется в режиме ожидания (поэтому траектория Т1 не пересекает линию 5). Пересечение траекторией Т1 линии 3 показывает освобождение ресурса S1, и процесс ПР2 выполняется до оператора 6, однако, в точке С процесс ПР2 опять заблокирован, потому что ещё не освобождён ресурс R2. После выполнения оператора 4 процесс ПР2 окончательно деблокируется, и процесс ПР2 выполняется до конца, освобождая ресурсы R1 и R2.

Траектория Т2 приводит к тупику. В точке Х процессы ПР1 и ПР2 благополучно захватили ресурсы R2 и R1 соответственно, а в точке Y они обратились к уже захваченным ресурсам, процессы заблокировали друг друга.

 

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

 

 

В [1] отмечено, что для появления тупиков должны одновременно выполняться четыре условия:

· взаимное исключение не запрещает монопольный доступ к разделяемым ресурсам (условие взаимного исключения);

· удержание процессом захваченного ресурса на время ожидания доступа к недостающим для продолжения его работы разделяемым ресурсам (условие ожидания);

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

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

 

4.3. Сети Петри

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

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

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

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

 

 
 

 

 


а)

    б)
Рис. 4.9. Пример изображения сети Петри при двух разметках

 

В аналитической форме сеть Петри представляется в виде 5 компонент:

P = (B, D, I, O, M),

где B – конечное непустое множество позиций,
  D – конечное непустое множество переходов,
  I – входная функция, задающая для каждого перехода множество его входных позиций,
  O – выходная функция, задающая для каждого перехода множество его входных позиций,
  M – разметка сети.

Компоненты B и D являются перечнями вершин-позиций и вершин переходов, в которых обозначения вершин разделены запятыми. Для рис. 4.9 эти компоненты имеют вид: b1,b2,b3,b4,b5 и d1,d2,d3,d4.

Входные и выходные функции являются матрицами, в которых столбцы соответствуют переходам, а строки – позициям. В матрицах I и О элементы, находящиеся на пересечении столбцов, соответствующих переходам, и строк, соответствующих входным вершинам-позициям перехода, равны единице, в противном случае – нулю. Для рис. 4.9 эти матрицы показаны на рис. 4.10, а,б.

Разметка сети для рис. 4.9,а описывается последовательностью чисел (1,0,0,0,1), а для рис. 4.9,б – последовательностью (0,1,1,0,1). Единицы показывают наличие фишек в вершинах-позициях, а нули – их отсутствие. На рис. 4.9,а активен только переход d2, т.к. он имеет только одну входную вершину b1, в которой находится фишка. Переход d3 пассивен, т.к. он имеет две входных вершины и только в одной из них находится фишка. Осуществление события d2 сделало активным переход d1 и d3, т.к. фишка из вершины b1 перешла в вершины b2и b3. Смена разметки из М0 в М1 обозначается следующим образом:

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

 

 

  d1 d2 d3 d4
b1
b2
b3
b4
b5

Fа)

 

  d1 d2 d3 d4
b1
b2
b3
b4
b5

б)

Рис. 4.10. Входная (а) и выходная (б) функции для сети Петри (для рис. 4.9).

При анализе сети Петри исследования ведутся, как правило, в трех направлениях:

· исследование достижимости конкретной разметки М1 при наличии некоторой стартовой разметки М0 (т.е. исследование возможности достижения конкретного состояния системы при определенных начальных условиях);

· исследование живости переходов, т.е. возможности срабатывания переходов в данной сети при начальной разметке (т.е. выявление невозможных состояний системы);

· исследование безопасности сети – выявление невозможности появления в любой позиции более одной фишки (т.е. возможность работы сети в стационарном режиме).

Основным недостатком сетей Петри является невозможность моделиро­вать временные характеристики объектов.

Ниже приведены примеры исследования параллельных процессов с помощью сетей Петри. Первый пример описан в разделе 4.2 (рис. 4.4, 4.5). Для удобства изучения материала рисунки примера повторены ниже (рис. 4.11).

 
 

 

 


Рис. 4.11. Граф модели Холта

    Рис. 4.13. Сеть Петри для первого примера
. . .
Parbegin
ПР1:
1: REQUEST(R1,3);
. . .
2: SAND_MASSAGE(ПР2, М1, ПЯ);
3: WAIT_ANSWER(М2, ПЯ);
. . .
4: RELEASE(R1,3);
ПР2:
. . .
5: WAIT_MASSAGE(ПР1, М1, ПЯ2);
6: REQUEST(R1,2);
. . .;
7: RELEASE(R1,2);
8: SAND_ANSWER(М1, ПЯ);
. . .
Parend Рис. 4.12. Код программы процессов

Позиция Р1 соответствует началу процесса ПР1, а Р9 – началу процесса ПР2. Позиция Р2 соответствует выполнению оператора 1 и получению процессом 3-х единиц ресурса R, который изображает позиция Р6. Прохождение перехода t2 соответствует выполнению оператора 2, т.е. посылке сообщения процессу ПР2. Позиция Р3 соответствует ситуации "выполнен оператор 2". Процесс остановлен до получения сообщения от процесса ПР2. Если это сообщение придёт, то процесс продолжится, выполнится оператор 4 и процесс ПР1 освободит ресурс R (переход t4). Однако процесс ПР2 ожидает сообщения от ПР1. Сообщение вызовет прохождение через переход t5 в позицию Р10. В ней процесс остановится, т.к. у ресурса R свободна только одна единица, а нужно две. Процесс ПР2 остановлен и не может послать сообщение процессу ПР1, а тот, в свою очередь, не получив сообщение, не может освободить ресурс R. Возник тупик.

Второй пример, иллюстрировавший возникновение тупика на ресурсах SR также рассматривался разделе 4.2 (рис. 4.6 и 4.7). Исследование возникновения тупика проиллюстрировано на рис. 4.14 – 4.15.

 
 

 

 


Рис. 4.14. Граф модели Холта

Р3
 
 

 


Рис. 4.16. Сеть Петри для первого примера

. . .
Parbegin
Parbegin
ПР1:
1: P(S2); . . .
2: P(S1); . . .
3: V(S1); . . .
4: V(S2); . . .
ПР2:
5: P(S1); . . .
6: P(S2); . . .
7: V(S1); . . .
8: V(S2); . . .
Parend   Рис. 4.15. Код программы процессов

На рис. 4.16 номера переходов соответствуют номерам отмеченных операторов управления семафорами, позиции Р1 и Р2 – семафорам S1 и S2. Из него видно, при прохождении перехода t1 процесс ПР1 захватывает ресурс Р2, а процесс ПР2 при прохождении перехода t5 захватывает ресурс Р1. Дальнейшие попытки выполнить переходы t2 и t6 переводят процессы в состояние ожидания, поэтому t3, t4, t7 и t8 никогда не будут выполнены.

Сети с выполняющимися переходами называются живыми. С этой точки зрения сети, показанные на рис. 4.13 и 4.16 не являются живыми.

Графическое представление сетей Петри позволяет придать наглядность процессу исследования процессов на возникновение тупиков. Применение математического описания сети Петри позволяет автоматизировать процесс исследования. Можно считать также перспективной автоматизацию процесса исследования на основе математического описания сети Петри с визуализацией процесса исследования посредством графического представления сети.

 

4.4. Модель пространства состояний системы

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

· система описывается парой <σ,π>,

где σ – множество состояний системы {S1,S2, …, Sn};

π – множество процессов {Р12, …, Рk};

· при выполнении процесса Рi система переходит в непустое подмножество своих состояний, что обозначается следующим образом: Рi: σ→{σ}.

Если процесс Pi определён на состоянии Sj, т.е. может вывести систему из этого состояния каким-либо способом, то область его значений обозначается как Рi(Sj) и равна {Sm,Sn, …, Sq}, т.е. подмножеству состояний системы. Если процесс Рi никак не может вывести систему из состояния Sj, то Рi(Sj)=0.

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

 

Таблица 4.2. Условные обозначения в модели пространства состояний системы

Обозначение Смысловое содержание
Процесс Pi может перевести систему из состояния Se в состояние Sk
  Переход системы из состояния Se в состояние Sk конечным множеством последовательно выполняющихся процессов.

 

Справедливы следующие суждения:

· система может быть переведена из состояния Se в состояние Sw посредством n ≥ 0 операций m ≥ 0 процессами;

· если процесс заблокирован в состоянии Se, т.е. не может ни требовать, ни получать, ни освобождать ресурсы, то не существует ни одного состояния Sk, в которое система может быть переведена процессом Pi, и Pi(Se) = 0;

· процесс находится в тупике в состоянии Se, если для всех состояний Sk, в которые возможен переход конечным множеством процессов, процесс Pi блокирован в состоянии Sk.

В [1] рассмотрен следующий пример. Система <σ,π> определена следующим образом:

σ = {S1,S2, S3, S4}; π = {Р12, …, Рk};

Р1(S1)={S2,S3}; (1) Р2(S1)={S3}; (2)

 

Р1(S2)=0; (3) Р2(S2)={S1,S4}; (4)

Р1(S3)={S4}; (5) Р2(S3)=0; (6)

Р1(S4)={S3}; (7) Р2(S4)=0. (8)

Диаграмма переходов такой системы показана на рис. 4.17. В соответствии с (1) из состояния S1 выходят две дуги процесса Р1 в состояния S2 и S3. Выражение (2) изображается дугой P2, выходящей из S1 и входящей в S2, выражению (3) соответствует отсутствие дуг процесса Р1, входящих из S2. Согласно (4) дуги процесса Р2 соединяют вершину S2 с S1 и S4. В соответствии с (5) и (7) две дуги процесса Р1 соединяют S3 и S­4, образуя замкнутый контур, и, наконец, (6) и (8) указывают на отсутствие дуг процесса Р2, выходящих из S3 и S4.

 

 
 

 

 


Рис. 4.17. Диаграмма переходов системы к примеру

Из рис. 4.17 следует, что для процесса Р2 существуют тупики в вершинах S3 и S4. Состояние S называется тупиковым, если существует процесс, находящийся в тупике в этой вершине. Состояние S называется опасным, если система может перейти из неё посредством конечной цепочки процессов в тупиковое состояние.

4.5. Борьба с тупиками

Существует три основных стратегии борьбы с тупиками:

· предотвращение тупиков;

· обход тупиков;

· распознавание тупика с последующим восстановлением.

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

4.5.1. Предотвращение тупиков

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

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

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

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

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

В целом стратегия предотвращения тупиков является дорогой и используется нечасто [1].

 

4.5.2. Обход тупиков

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

Пример такого анализа приведён в табл. 4.3. В текущий момент времени процессу Р1 выделено три единицы ресурса R, а процессу Р2 – 2 единицы. В этот же момент процессом Р1 запрошена 1 единица, а процессом Р2 – 2 единицы. Полная потребность процессов Р1 и Р2 – 5 и 4 единицы соответственно.

Если удовлетворить заявку процесса Р1, то ему будет выделено четыре единицы, у процесса Р2 уже есть две единицы. В резерве не останется ни одной единицы. Процесс Р2 блокирован, и нет гарантии, что в следующий момент времени процесс Р1 не затребует ещё одну единицу, а тогда процесс Р1 тоже будет заблокирован. Выделение ресурса процессору Р1 приведёт систему к опасному состоянию. Поэтому удовлетворять заявку процесса Р1 в текущий момент не следует.

 

Таблица 1. Анализ возможности возникновения тупика в текущий момент времени

Процесс Выделено единиц R Запрошено единиц R Предельная потребность единиц R Можно запросить ещё единиц R Всего в системе единиц R
Р1
Р2

 

Удовлетворение заявки процесса Р2 также приведёт систему в состояние без единой единицы ресурса в резерве, процесс Р1 уже заблокирован, но процесс Р2 может продолжаться и завершиться. Тогда он освободит сразу три единицы ресурса, что позволит завершиться и процессу Р1. Таким образом, тупик будет обойдён.

Классическое решение проблемы обхода тупика предложил Дейкстра. Его алгоритм называется алгоритмом банкира. Он похож на алгоритм принятия банком решения о возможности выдачи кредита заёмщику без ущерба для своей безопасности (рис. 4.18).

 
 

 

 


 

 

Рис. 4.18. Р-граф алгоритма банкира

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

· Вс_Р – общее количество единиц ресурса, которые может предоставить операционная система;

· Св_Р– число свободных единиц ресурса;

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

· Пол– массив, хранящий количества единиц ресурса, полученных процессами;

· Max– максимальные количества единиц, которые вообще могут быть затребованы процесами;

· ОСТ– количества единиц ресурса, которые могут быть ещё затребованы процессами;

· Зав –признаки завершения процессов.

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

· количество свободных единиц ресурса Св_Р;

· количества единиц ресурса, которые ещё могут быть затребованы процессами;

· признаки завершения процесса (присваивается значение False для подготовки к анализу возможности завершения процессов в цикле между узлами 8 и 11).

Между узлами 6 и 12 организован цикл до получения переменной Продзначения False. В этом цикле вычисляется количество свободных единиц ресурса, с учётом единиц, возвращённых процессами после их завершения. Собственно вычисления осуществляются в цикле, организованном между узлами 7 и 11. Процесс считается завершённым, а единицы ресурса возвращаются в переменную Св_Р,если количество единиц Ост(i), которые ещё может затребовать процесс, не больше количества свободных единиц ресурса. Если все процессы могут завершиться, то переменная Св_Рпримет первоначальное значение и станет равной переменной Вс_Р. В этом случае система не придёт в опасное состояние и заявка процесса может быть удовлетворена.

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

· допущение о фиксированном числе единиц ресурса, что не всегда соответствует истине;

· нереальность требования постоянства числа параллельных работающих процессов (в реальных условиях число параллельных процессов всё время меняется);

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

 

4.5.3. Обнаружение тупика

Существует несколько методов обнаружения тупика. Наиболее доступен для понимания метод редукции (сокращения) графа модели Холта. Редукция графа Холта выполняется по следующим правилам:

1. Граф модели Холта сокращается процессом Pi, который не является ни заблокированной, ни уединённой вершиной, посредством удаления всех дуг, входящих в вершину и исходящих из неё;

2. Граф ресурсов не сокращаем, если он не может быть сокращён ни одним процессом.

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

Если в результате редукции графа Холта осталась хотя бы одна не удалённая дуга, то возникнет тупик.

Ниже приведён пример редукции графа, исследовавшего тупик на ресурсах SR в разделе 4.2 (рис. 4.19).

 
 

 

 



а)

    б)     в)
Рис. 4.19. Граф Холта в исходном состоянии (а), стадии захвата процессом ПР1 ресурса R2 (б) и в стадии захвата ресурса R1 процессом ПР2 (в)

На рис. 4.19,б показан граф после захвата процессом Р1 ресурса R2. Из вершины R2 исчезла единица ресурса, и исчезли выходящая из вершины ПР1 и входящая в него дуги. Процесс ПР2 может захватить ресурс R1. Тогда с графа исчезнут дуги исходящая из вершины ПР2 и входящая в неё. Поскольку процесс ПР2 захватил ресурс R1, то из вершины R1 исчезла единица ресурса R1. Это состояние системы показано на рис. 4.19,в. Оба процесса запрашивают ресурсы, которые уже не имеют свободных единиц. Поэтому оба процесса заблокированы и не могут никак освободить захваченные ресурсы. Налицо тупик.

 

Контрольные вопросы:

1. Что такое тупик? Приведите примеры.

2. Каковы условия возникновения тупика?

3. Какова классификация разделяемых ресурсов в модели Холта?

4. В чем разница между системными ресурсами и расходуемыми ресурсами?

5. Из каких элементов состоит граф Холта? Приведите пример графа и интерпретируйте его.

6. Что обозначает следующий фрагмент графа Холта?

 
 

 


7. Что обозначает следующий фрагмент графа Холта?

 
 

 


8. Объясните следующий граф Холта.

 
 

 


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

10. Приведите пример возникновения тупика в системе с семафорами.

11. Приведите пример возникновения тупика в системе с мониторами.

12. Что такое сеть Петри? Из каких элементов она состоит?

13. На рисунке показан фрагмент сети Петри. Может ли завершиться процесс ПР1? Почему?

 
 

 

 


14. На рисунке показан фрагмент сети Петри. Может ли завершиться процесс ПР1? Почему?

 
 

 

 


15. На рисунке показан фрагмент сети Петри. Может ли завершиться процесс ПР1? Почему?

 
 

 

 


16. Как нейтрализовать условие взаимного исключения для предотвращения тупика?

17. Как ослабить условие ожидания для предотвращения тупика?

18. Как подавить условие отсутствия перераспределения ресурса у блокированного процесса для предотвращения тупика?

19. Как исключить условие кругового ожидания для предотвращения тупика?

 


5. ЖЁСТКИЙ ДИСК

5.1. Устройство накопителя жесткого диска (HDD)
и адресация элементов дискового пространства

 

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

 
 

 


Рис. 5.1. Схема устройства накопителя на жёстком диске

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

Для обращения к кластерам, секторам и блокам данных имеется две системы физических адресов элементов дискового пространства: CHS и LBA. В системе CHS координатами сектора являются: номер цилиндра (Cylinder), номер рабочей поверхности носителей (Нead), он же номер дорожки в цилиндре, номер сектора на дорожке (Sector).

В системе LBA (Logical Block Addressing) используется линейная адресацию секторов, начиная с сектора 1, головки 0, цилиндра 0 и заканчивая последним физическим сектором диска. Адрес начального сектора диска обозначается как LBA 0. Номер сектора в системе LBA определяется выражением:

LBA = (СхHmax + H)xSmax + S – 1

где С, H, S – координаты сектора в системе CHS,
Hmax – общее количество рабочих поверхностей дисков,
Smax – число секторов на дорожке.

5.2. Логическая структура диска

 

Дорожки, секторы и кластеры являются понятиями, относящимися к физической структуре диска. Однако пользователю удобнее работать с диском на логическом уровне, т.е. иметь дело с именованными элементами дискового пространства вместо численных адресов секторов и кластеров. Структура диска, описанная таким образом, называется логической. Схематически логическая структура диска [1] показана на рис. 5.2. Жирный прямоугольник в центре рисунка изображает дисковое пространство реального физического устройства. Оно разбито на разделы (Partition). Разделы бывают первичные (Primery) и расширенные (Extended). На диске может быть только один расширенный раздел, который в свою очередь может быть разбит на разделы. На всех разделах создаются логические диски[8]. На рис. 5.2 показаны один первичный раздел с логическим диском С: и расширенный раздел с логическими дисками D: и Е:. Один из разделов всегда активен, остальные – пассивны.

 

Главная таблица разделов          
Адрес первичного раздела Адрес расширенного раздела Прочая информация NBS и Системный загрузчик Загрузочный сектор диска С:   Первичный раздел с логическим диском С:  
  Master Boot Record    
       
Логический диск D: Загрузочный сектор диска D:    
Адрес таблицы для диска E: Прочая информация Системный загрузчик  
  Secondary Master Boot Record      
        Расширенный раздел с логическими дисками D: и Е:  
Логический диск Е: Загрузочный сектор диска Е:    
0 – конец цепочки Прочая информация Системный загрузчик  
  Secondary Master Boot Record      
         
    Нераспределённое дисковое пространство      

Рис. 5.2. Разделы жёсткого диска

На первом секторе каждого диска создаётся загрузочная запись Master Boot Record для логического диска первичного раздела и Secondary Master Boot Record для каждого логического диска расширенного раздела. На первом секторе логического диска С: располагается также специальная программа, которая называется внесистемным загрузчиком Non-Systeb Bootstrap (NSB). На любом из логических дисков может быть установлена операционная система.

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

· флаг активности раздела;

· номер головки начала раздела;

· номера сектора и цилиндра загрузочного сектора раздела (адрес начала раздела);

· кодовый идентификатор[9] операционной системы (например, 006h для FAT16);

· номер головки конца раздела;

· номера сектора и цилиндра последнего сектора раздела (адрес конца
раздела);

· младшее и старшее двухбайтовые слова относительного номера начального сектора раздела;

· младшее и старшее двухбайтовые слова размера раздела в секторах.

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

 

5.3. Создание загрузочных дисков

Загрузочные диски в разделах жёсткого диска в среде Windows создаются автоматически при установке операционной системы. Для этого с диска дистрибутива операционной системы запускается программа setup.exe. В процессе работы программы пользователь имеет возможность установить операционную систему Windows поверх имеющейся или с предварительным форматированием диска.

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


Контрольные вопросы:

1. Определите понятия: дорожка, цилиндр, сектор, кластер.

2. Поясните способы CHS и LBA адресации секторов на магнитном диске.

3. Поясните логическую структуру диска.

4. Каково содержимое Master Boot Record'а?

5. Каково содержимое Secondary Master Boot Record'а?

6. В чём проблема четырёх первичных разделов? Почему её желательно решить? Каковы способы решения этой проблемы?

7. Что такое внесистемный и системный загрузчики? Каковы их функции?

8. Опишите процесс загрузки операционной системы.

9. Каково содержимое таблиц разделов?

10. Какова процедура создания загрузочных дисков?


6. ФАЙЛОВЫЕ СИСТЕМЫ

6.1. Файлы и каталоги

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

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

Простые файлы по назначению можно разделить на исполняемые файлы, динамические библиотеки и наборы данных. Исполняемые файлы содержат программный код в двух видах: в виде команд операционной системы и в машинных кодах. На наличие программного кода указывает расширения имени (тип) файла. В частности расширение bat указывает, что файл содержит программу на языке операционной системы, например операционной системы MS DOS, состоящую из команд path, copy, type, dir, chdir и т.д. Сведущий пользователь может прочитать эту программу в среде простейшего текстового редактора и понять её без каких-либо проблем. Расширения exe и com указывают на наличие кода в машинных командах. Файлы первого из них типа содержат прикладные программы пользователей, второго – как правило, утилиты, драйверы и прочие служебные программы. Расширения ovl указывают, что эти файлы содержат программный код и подгружаются в оперативную память по мере надобности и выгружаются из неё после выполнения содержащейся в них программы.

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

Простые файлы, содержащие наборы данных имеют самые разные расширения имён. Иногда расширение несёт информацию о назначении файла, например, jpeg указывает на графический файл, содержащий архивированную по специальному алгоритму информацию. В других случаях оно указывает на программное средство, в среде которого создан файл. Например, расширения bas и pas указывают на создание файлов среде систем программирования Basic и Pascal. Во многих случаях расширения имени (тип) файла ни о чём не говорит подавляющему большинству пользователей.

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

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

 

Таблица 6.1. Наиболее употребительные атрибуты файлов

Атрибут Значение
Защита Кто и каким образом может получить доступ к файлу
Пароль Пароль для получения доступа к файлу
Создатель Идентификатор создателя файла
Владелец Текущий владелец файла
Флаг "только для чтения" 0 – для чтения-записи, 1 – только для чтения
Флаг "скрытый" 0 – обычный, 1 – не отображать в перечне файлов
Флаг "Системный" 0 – обычный, 1 – системный
Флаг "архивный" 0 – прошедший резервное копирование, 1 – нуждающийся в резервном копировании
Флаг ASCII-двоичный 0 – использован код ASCII, 1 – двоичный файл
Флаг произвольного доступа 0 – только последовательный доступ, 1 – произвольный доступ
Флаг "временный" 0 – обычный, 1 – удалять по окончании процесса
Флаги блокировки 0 – не заблокирован, иначе – заблокирован
Длина записи Количество байтов в записи
Позиция ключа Смещение ключа внутри каждой записи
Длина ключа Количество байтов в поле ключа
Время создания Дата и время создания файла
Время последнего доступа Дата и время последнего доступа к файлу
Время внесения последних изменений Дата и время внесения последних изменений
Текущий размер Количество байтов в памяти
Максимальный размер (устарел) Предельное количество байтов, до которого файл может увеличиваться
Примечание: Атрибуты, имеющие отношение к ключу используются для поиска данных

 

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

 

6.2. Понятие и функции файловой системы
и системы управления файлами.

Файловая система – это понятие, имеющее два смысла в зависимости от контекста использования:

· принципы доступа к данным, организованным в файлы;

· организация (способ размещения) файлов на том или ином носителе.

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

Файловая система позволяет перевести на логический уровень общение пользователя с файлами. Появляются логические диски, обозначенные латинскими буквами, например "а:", "с:" и т.д. К файлам обращаются по именам, а не по их физическим адресам на дисках. Файловая система определяет и способ организации данных и программ на дисках и иных носителях. Наиболее известны файловые системы FAT (ныне FAT-12), FAT-16, FAT-32, NTFS, CDFS и др.

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

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

· работа с недисковыми периферийными устройствами как с файлами;

· обмен данными между устройствами, устройствами и файлами и меду файлами;

· работа с файлами посредством обращения к программным модулям системы управления файлами;

· защита файлов от несанкционированного доступа.

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

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

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

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

 

а) б) в)
Рис. 6.1. Структуры файловых систем: одноуровневая (а), иерархическая (б), сетевая (в)

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

 

6.3. Обзор файловых систем

6.3.1. Файловая система FAT16, FAT32 и VFAT

Файловые системы FAT16, VFAT и FAT32 получила своё название по основному элементу этих файловых систем – таблице размещения файлов (File Allocation Table). Все три файловых системы предполагают разбивку диска на секторы и объединение нескольких секторов, идущих друг за другом, в кластеры. FAT16 является 16-разрядной файловой системой, позволяющей обращаться к 216 кластерам.

Файловая система FAT16 использовала формат имени файла 8.3: 8 символов отводилось для имения и 3 символа для расширения имени файла. Это достаточно жёсткое ограничение усугублялось ограниченным набором символов, допускавшихся для образования имени файла и его расширения.

Поэтому в операционных системах Windows 95 и NT, а затем и в исходных версиях Windows 2000 и XP появились файловые системы VFAT (виртуальная FAT) и FAT32. Файловая система VFAT поддерживает длинные имена файлов и совместима со стандартной системой FAT16. Совместимость обеспечивается наличием специальных утилит. Недостатком VFAT являются большие потери на кластеризацию и ограничения на размер логического диска. FAT32 является самостоятельной 32-разрядной файловой системой, наиболее совершенной из описываемых трёх систем.

Во всех трёх файловых системах пространство логического диска делится на системную область и на область данных. Обязательным элементом всех трёх систем является загрузочная запись, расположенная в начале диска
(табл. 6.2). Она состоит из блока параметров диска (BDP) и системного загрузчика (SB). Во всех трёх файловых системах присутствуют каталоги и файлы, которые описываются как файловый объект. Структуры файловых объектов в системах FAT16, VFAT и FAT32 показаны на рис. 6.2.

 


 

Таблица 6.2. Структура загрузочной записи FAT32 Содержимое Безусловный переход на системный загрузчик Системный идентификатор Размер сектора, байт Число секторов в кластере Число зарезервированных секторов Число копий FAT-таблицы 0000h 0000h Дескриптор носителя 0000h Число секторов на дорожке Число рабочих поверхностей
Обозна­чение поля Jmp 3Eh   SectSize ClstSize ResSecs FATcnt RootSize TotSecs Media FATSize TrcSecs HeadCnt
Длина поля, байт
FAT16 Содержимое Безусловный переход на системный загрузчик Системный идентификатор Размер сектора, байт Число секторов в кластере Число зарезервированных секторов Число копий FAT-таблицы Максимальное число элементов корневого каталога Число секторов на логическом диске объёмом до 32 Мбайт, иначе 0000h Дескриптор носителя Размер FAT в секторах Число секторов на дорожке Число рабочих поверхностей
Обозна­чение поля Jmp 3Eh   CectSize ClastSize ResCecs FATcnt RootSize TotSecs Media FATsize TrcSecs HeadCnt
Длина поля, байт
Смеще­­­ние, байт 00h 03h 0Bh 0Dh 0Eh 10h 11h 13h 15h 16h 18h 1Ah

 

Таблица 6.2. (продолжение) FAT32 Содержимое Число скрытых секторов Число секторов на логическом диске Число секторов в таблице FAT Расширенные флаги Версия файловой системы Номер первого кластера корневого каталога Номер сектора с резервной копией загрузочного сектора Зарезервировано Системный загрузчик * Том –логическое дисковое пространство, состоящее из одного или нескольких разделов, которое может быть воспринято файловой системой как один логический диск
Обозна­чение поля HidnSecs                        
Длина поля, байт  
FAT16 Содержимое Число скрытых секторов Число сектров на логическом диске до 32 Мбайт Тип диска (00h – FDD, 80h – HDD) Зарезервирован Маркер с кодом 29h Серийный номер тома Метка тома* Имя файловой системы Системный загрузчик Сигнатура (слово AA44h)
Обозна­чение поля HidnSecs                          
Длина поля, байт  
Смеще­­­ние, байт 1Ch 20h 24h 25h 26h 27h 28h 2Ah 2Bh 2Ch 34h 36h 3Eh 1Feh

 

Структура каталога для короткого имени FAT16 Размер файла в байтах Структура каталога для короткого имени FAT132 Размер файла в байтах Структура каталога для длинного имени VFAT и FAT32 6 – 11 символы имения файла в кодировке Unicode     Рис. 6.2. Структура файлового объекта
Номер начального кластера Младшее слово номера начального кластера 0000h
Дата последней записи Дата последней записи 6 – 11 символы имения файла в кодировке Unicode
Время последней записи Время последней записи
Зарезервировано Старшее слово номера начального кластера
Дата последнего доступа
Дата создания файла
Время создания файла
  Контрольная сумма
Зарезервировано Зарезервировано
Атрибуты Атрибуты Атрибуты
Имя файла в формате 8.3 (имя – 8 символов, расширение – 3 символа) Имя файла в формате 8.3 (имя – 8 символов, расширение – 3 символа) 1 – 5 символы имени файла в кодировке Unicode

 


На рис. 6.3 показана структура логического диска в системе FAT16. В этой файловой системе системная область создаётся при форматировании диска и включает в себя:

· загрузочную запись BR (Boot Record), структура которой приведена в табл. 6.2;

· зарезервированных секторов Rsec (Reserved Sectors);

· двух копий (основной и резервной) таблицы размещения файлов FAT1 и FAT2;

· корневого каталога диск Rdir (Root Directory).

 
 

 

 


Рис. 6.3. Структура логического диска в FAT16

Таблицы размещения файлов содержат в себе:

· перечень непосредственно адресуемых участков логического диска, отведённых для размещения на них файлов или их фрагментов;

· перечень адресов свободных областей дискового пространства;

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

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

· уменьшение таблицы FAT;

· уменьшение возможной фрагментации файлов;

· ускорение доступа к файлу.

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

Описание файловых объектов приведено на рис. 6.2. Размещение файлов на диске показано на рис. 6.4.

 

 


Рис. 6.4. Описание файла и кластеры области данных, отведённых под файл

Кластеры с номерами 00 – 1В показаны прямоугольниками. Номера кластеров стоят над их обозначениями. Символы "00" указывают, что кластеры свободны. Символы "F7" внутри обозначения 18-о кластера указывает, что этот кластер дефектный.

Номер начального кластера файла указан в описании. Файл расположен в двух цепочках кластеров 08, 09, 0А, 0В и 15, 16, 17, 18, 19, 1А, 1В. Числа внутри обозначений этих кластеров размещаются после данных, записанных в кластер, и указывают номера последующих кластеров в цепочке. В конце последнего кластера в цепочке стоит код FF – указывающий на завершение файла.

Для обращения к кластеру используется 16-разрядное слово. Отсюда и появилось число 16 в обозначении файловой системы. Вариант файловой системы super-FAT применяется в операционной системе OS/2.

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

· применение для адресации кластеров 28 бит из 32 позволяет адресовать 228 кластеров, поэтому кластеры в этой файловой системе имеют меньший размер, и потери дискового пространства на кластеризацию меньше, чем в FAT16 и VFAT;

· возможность использования резервной копии таблицы FAT вместо стандартной;

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

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

· использование для представления длинных имён файлов элементов каталогов, в т.ч. и корневого.

Поддержка длинных имен в системах VFAT и FAT32 проиллюстрирована на рис. 6.2. Имена файлов записываются в кодировке Unicode. Имя файла разделено на три части, содержащие 1 – 5, 6 – 11 и 12 – 13 символы. В описании файлового объекта с длинным именем отсутствуют даты и время создания файла, последней записи в файл, последнего доступа к файлу, а также сведения о номере начального кластера. Сведения о начальном номере кластера и отсутствущие данные о файле операционная система может взять из описания файлового элемента с коротким именем.

 

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

Файловая система NTFS оперирует с общим понятием "ТОМ", частным случаем которого является логический диск. Возможно также создание отказоустойчивого тома, занимающего несколько разделов, с использованием RAID-технологии. Применение RAID-технологии позволяет повысить или быстродействие диска, или его надёжность, или то и другое вместе. Следует иметь в виду, что при установке операционной системы для использования RAID-технологии требуются так называемые динамические диски, представляющие стандарт распределения дискового пространства фирмы Microsoft. Они несовместимы с промышленным стандартом. Поэтому если диски будут преобразованы в динамические, то на этот жёсткий диск не дастся установить ни одну операционную систему, а ранее установленные операционные системы не смогут даже запуститься. Обратное преобразование динамических дисков в стандартные диски без полной потери данных невозможно [1].

Структура тома NTFS показана на рис. 6.5. Том состоит из следующих частей:

· зона главной таблицы файлов MFT (12% ёмкости тома)

· обычная зона файлов и каталогов (88% ёмкости тома), которая делится на две области;

· копии первых 16 записей таблицы MFT, занимающие часть обычной зоны.

 

$MFT Зона MFT Зона файлов и каталогов (область 1) Копии первых 16 записей MFT Зона файлов и каталогов (область 2)

Рис. 6.5. Структура тома NTFS

Всё пространство тома делится на кластеры. Поддерживаются кластеры размером от 512 байт до 64 Кбайт. Увеличение размера кластера более чем до 4К исключает сжатие файлов и каталогов [1].

Главная таблица MFT является файлом и содержит сведения о всех остальных файлах имеющихся на диске, в том числе и о самой MFT. Она содержит имена файлов, размеры, адреса на диске файлов и их фрагментов и т.д. Таблица поделена на записи размером 1К, соответствующие файлам. Файлы, имеющие размер не более 100 байтов записываются непосредственно в таблицу MFT. Первые 16 файлов, упомянутые в таблице являются служебными и недоступны через интерфейс операционной системы. Эти файлы называются метафайлами (табл. 6.3) и находятся в корневом каталоге.

Таблица 6.3. Метафайлы тома NTFS

Имя метафайла Описание
$MFT Главная таблица файлов
$MFTmirr Копия первых 16 записей MFT
$LogFile Файл журналов
$Valume Служебная информация: метка тома и версия файловой системы
$AttrDef Список стандартных аттрибутов на томе
$ Корневой каталог
$BitMap Битовая карта свободного места тома
$Boot Загрузочный сектор
$Quota Файл прав пользователей
$Upcase Таблица соответствия строчных и прописных букв в именах файлов

 

Копия информации о метафайлах помещена в зоне файлов и каталогов. Зона MFT заполняется по мере роста таблицы MFT.

Файловая система NTFS имеет следующие особенности:

· файл идентифицируется 64-разрядной числом, которое называется файловой ссылкой и состоит из номера файла в таблице MFT и номера последовательности, который увеличивается всякий раз, когда позиция файла MFT используется повторно;

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

· наличие средств самовосстановления:

§ механизмы проверки целостности системы (журналы транзакций, журналы изменений и т.д.);

§ механизм отката при наличии незавершённых операций

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

· поддержка дисков с большими объёмами;

· повышенная отказоустойчивость;

· эмуляция других файловых систем;

· параллельная обработка потоков данных;

· сжатие отдельных файлов и каталогов;

· шифрование файлов (не рекомендуется);

· ограничение доступа к файлам и каталогам посредством создания специальных расширенных атрибутов файлов и каталогов;

· мощная модель безопасности.

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

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

NTFS поддерживает объектную модель безопасности, разработанную для Windows NT. В соответствии ней файловая система рассматривает файлы и каталоги как объекты. Для пользователей введены учётные записи. Пользователи могут объединяться в группы, для которых задаются права доступа к различным каталогам и файлам. Права доступа файлам и каталогам хранятся в списках управления доступом (ACL) каждого каталога и файла.

 

6.3.3. Файловые системы компакт-дисков

Первые накопители на компакт-дисках имели множество несовместимых файловых систем. Это было обусловлено отсутствием в первой спецификации хранения данных на CD описания файловой системы и универсальных файловых форматов. Первой попыткой ввести стандарт на файловые системы компакт-дисков является спецификация High Sierra, которая сделала компакт-диски универсальными компьютерными носителями. В настоящее время наиболее известными файловыми системами для компакт-дисков являются системы:
ISO 9660, CDFS, Joliet и UDF.

Стандарт ISO 9660 имеет три уровня:

· первый уровень накладывает на файлы и каталоги жёсткие ограничения:

§ файлы не могут быть фрагментированы;

§ имена файлов могут быть записаны только в формате 8.3, поддерживающимся MS DOS, и содержать только символы A – Z, 1 – 9 и подчеркивание;

§ имя каталога не может содержать более 8 символов и не должно иметь расширение;

§ максимальный уровень вложенности каталогов не более восьми;

· второй уровень разрешает имена файлов и каталогов длиной до 30 символов (включая расширение для файлов);

· третий уровень разрешает длину имён файлов и каталогов до 30 символов и фрагментацию файлов.

Диск в стандарте ISO 9660 (рис. 6.6) имеет следующие элементы:

· область идентификации и синхронизации;

· системная область;

· оглавление тома;

· область данных.

Данные в таком томе начинаются с 16 сектора первой дорожки. На много сессионном томе создаётся несколько аналогичных структур.

 

Область идентификации и синхронизации Системная область Оглавление тома Область данных

Рис. 6.6. Структура односессионного тома на компакт-диске в стандарте ISO 9660

Стандарт CDFS разработан для операционных систем Windows NT и соответствует второму уровню стандарта ISO 9660.

Длина имени файла или каталога, превышающая 30 символов, в настоящее время встречается достаточно часто. Поэтому стандарт ISO 9660 имеет расширение Joliet. Стандарт поддерживает:

· имена файлов и каталогов длиной до 64 символов Unicode (т.е. до 128 байт);

· расширения имён каталогов;

· не ограниченный уровень вложенности каталогов;

· многосессионную запись.

Кроме Joliet существуют также расширения стандарта ISO 9660:

· Rock Ridge для накопителей CD-ROM, поддерживающий запись дополнительной информации для файловых систем UNIX/POSIX;

· Mount Rainier, обеспечивающий эффективную обработку данных, содержащихся на носителях CD-RW и DVD+RW.

Формат UDF ориентирован на пакетную запись, т.е. на запись небольших объёмов данных на диски CD-R/RW. В целом напоминает стандарт записи на магнитные носители, поддерживает имена файлов до 255 символов, требует дисководы CD-R/RW или обычные дисководы CD-ROM, соответствующие требованиям спецификации MultyRead. Имеет следующие особенности: в именах файлов могут быть символы верхнего и нижнего регистров, максимальная длина пути до 1023 символа.

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

· CD-DA – формат для записи звуковых данных;

· CD-ROM – для алюминиевых дисков, изготавливаемых прессованием;

· Смешанный формат – комбинирует данные CD-ROM и CD-DA;

· CD-ROM/XA – формат для смешанной записи компьютерных данных и графических, звуковых и видео данных с поддержкой запис в несколько сеансов;

· PhotoCD – формат для графических данных с поддержкой многосеансовой записи;

· VideoCD – формат для высококачественной записи видеофильмов;

· Enhanced CD – формат, поддерживающий запись в два сеанса данных для мультимедиа и компьютерных данных;

· CD-I – для интерактивных мультимедийных приложений, запускающихся на компьютерах с телевизором вместо монитора;

· CD-I Brige – для интерактивных мультимедийных приложений, запускаемых на обычных компьютерах;

· CD-UDF – универсальный дисковый формат.

Формат CD-DA предусматривает создание диска, на который данные записываются за один сеанс работы. На диске может быть создано до 99 дорожек, расположенных последовательно друг за другом (рис. 6.7,а). В начале диска записывается заголовок сеанса Lead-in длительностью 120с, в конце – область Lead-out, заполненная нулями и позволяющая плееру обнаружить конец диска. Между дорожками с данными вставляются зазоры длительностью в 2 с. Данные записываются блоками по 2352 байта, средства контроля ошибок при чтении данных не предусмотрены.

Формат CD-ROM (рис. 6.7,б) в настоящее время используется, как правило, для алюминиевых компакт-дисков, создаваемых по технологии прессования. Формат предусматривает создание на диске одной дорожки, ограниченной областями Lead-in и Lead-out. Данные не диск записываются блоками двух типов:

· Mode-1 – для компьютерных данных длиной 2352 байта, из которых 2048 байт занимают данные, а 304 байта – служебные области для обнаружения ошибок;

· Mode-2 – для сжатых графических, звуковых или видеоданных длиной 2336 байт.

 

Lead-in 120 c Дорожка Зазор 2 с . . . Дорожка Зазор 2 с Lead-Out

а)

Lead-in     . . .     Lead-Out


блоки данных
б)

Lead-in Компьютерные данные (CD-ROM, Mode-1) Зазор CD-DA Зазор . . . Зазор CD-DA Зазор Lead-Out

в)

Lead-in CD-ROM, Mode-1 CD-DA . . . CD-ROM, Mode-1 CD-DA Lead-Out

г)

Lead-in CD-ROM, Mode-1 CD-DA . . . CD-ROM, Mode-1 CD-DA Lead-Out
Lead-in CD-ROM, Mode-1 CD-DA . . . CD-ROM, Mode-1 CD-DA Зазор  
  CD-ROM, Mode-1 CD-DA . . . CD-ROM, Mode-1 CD-DA Lead-Out

д)

Lead-in CD-DA Зазор CD-DA . . . CD-DA Зазор CD-DA Lead-Out
Lead-in CD-ROM, Mode-1 CD-ROM, Mode-1 . . . CD-ROM, Mode-1 CD-ROM, Mode-1 Lead-Out

е)

Рис. 6.7. Форматы данных на компакт-дисках: CD-DA (а), CD-ROM (б), смешанный (в),
односеансовый CD-ROM/XA (г), многосеансовый CD-ROM/XA с двумя сеансами (д),
Enhanced CD (е)

Смешанный формат (рис. 6.7,в) предусматривает запись на одном диске компьютерных и звуковых данных на дорожках CD-ROM (Mode-1) и CD-DA соответственно. Он позволяет добавить к программам высококачественное звуковое сопровождение. При проигрывании диска на обычном плеере делается попытка первым воспроизвести компьютерные данные как звук.

Формат CD-ROM/XA является расширением формата CD-ROM, имеющим ряд особенностей:

· чередование блоков компьютерных данных с блоками графических, звуковых и видео данных (рис. 6.7,г);

· поддержка многосеансовой записи (рис. 6.7,д).

На рис. 6.7,д показан диск с данными, записанными в два сеанса. Каждый сеанс ограничивается областями Lead-in и Lead-out, дорожки во втором сеансе разделены зазором.

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

Формат PhotoCD применяется в основном для записи графических данных и поддерживает многосеансовую запись. На физическом уровне этот формат реализован как многосеансовый формат CD-ROM/XA.

Формат Enhanced CD (рис. 5.6,е), он же CD Extra и CD Plus, обеспечивает помещение на один диск компьютерных данных и данных для мультимедиа, причем компьютерные данные записываются во втором сеансе. Это обеспечивает возможность проигрывания данных мультимедиа на обычном плеере.

Формат VideoCD используется для записи на компакт-диски видеофильмов. Первая дорожка диска записана в формате CD-ROM/XA. На ней хранятся информация о компакт-диске и программы. Следующие дорожки содержат видео информацию , сжатую по стандарту MPEG.

Форматы CD-I и CD-I Brige – предназначены для интерактивных мультимедийных приложений. Первый из них используется для приложений, написанных для небольших компьютеров, использующих вместо монитора обычные телевизоры, второй – для приложений, запускающихся на обычных компьютерах. Формат CD-I Brige представляет собой набор спецификаций, определяющих способ записи информации в формате CD-I на дисках CD-ROM/XA и используется для дисков PhotoCD и VideoCD.

 

Контрольные вопросы:

1. Определите понятия "файл", каталог", родительский каталог", "надкаталог", "вложенный каталог", "путь".

2. Какие типы файлов поддерживают операционные системы?

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

4. Что такое атрибуты файла?

5. Что такое файловая система? Каково её назначение?

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

7. Что такое монтируемые файловые системы? Поясните структуры файловых систем (одноуровневую, иерархическую, сетевую).

8. Поясните структуры файловых объектов в файловых системах FAT16, FAT32, VFAT.

9. Поясните структуру логического диска с файловой системой FAT16.

10. Поясните структуру логического диска с файловой системой VFAT.

11. Опишите размещение файлов на диске с таблицей FAT.

12. Дайте характеристику файловых систем FAT16, FAT32, VFAT.

13. Дайте характеристику файловой системы NTFS.

14. Поясните структуру тома файловой системы NTFS.

15. Каковы средства самовосстановления файловой системы NTFS?

16. Что такое объектная модель безопасности файловой системы NTFS?

17. Поясните стандарт ISO 9660 и его расширения.

18. Поясните структуру односессионного тома компакт диска.

19. Поясните формат записи CD-DA;

20. Поясните формат записи CD-ROM;

21. Поясните смешанный формат записи данных;

22. Поясните формат записи CD-ROM/XA;

23. Поясните формат записи PhotoCD;

24. Поясните формат записи VideoCD;

25. Поясните формат записи Enhanced CD;

26. Поясните формат записи CD-I и CD-I Brige;

27. Поясните формат записи CD-UDF.

 

 


7. СРЕДСТВА ЗАЩИТЫ И ВОССТАНОВЛЕНИЯ
ОПЕРАЦИОННЫХ СИСТЕМ

7.1. Цифровая подпись драйверов и её верификация

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

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

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

 

7.2. Защита и проверка системных файлов

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

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

Пользователь с учётной записью администратора может проверить версии всех установленных системных файлов специальной утилитой sfc.exe. Эта утилита запускается из командной строки. Формат вызова утилиты имеет вид:

sfc [/scannow] [/scanonce] [/scanboot] [/revert] [/purgecache] [/cachesize=x].

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

· /scannow – немедленное сканирование защищённых системных файлов;

· /scanonce – однократное сканирование защищенных системных файлов;

· /scanboot – сканирование защищенных системных файлов при перезапуске компьютера;

· /revert – восстановление стандартных параметры работы сканера;

· /purgecache – очистка кэша файлов программы защиты файлов Windows и немедленное сканирование всех защищенных системных файлов;

· /cachesize=x – назначение размера в мегабайтах (Мбайт) кэша файлов для защиты файлов Windows;

· /? – отображение справки в командной строке.

 

7.3. Откат драйверов

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

 

7.6. Безопасный режим загрузки

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

Возможны следующие варианты безопасного запуска операционной системы:

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

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

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

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

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

· вход в систему возможен, но она работает нестабильно;

· работа компьютера ухудшилась;

· приложение работает неправильно;

· при запуске не выводится экран входа в систему.

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

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

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

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

 

7.7. Мастер и точки восстановления системы

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

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

Точка восстановления создаётся мастером восстановления. Каждая точка идентифицируется по дате создания. Если точка восстановления создаётся вручную, то необходимо запустить мастер восстановления и дать команду "Создать точку восстановления".

Мастер восстановления выполняет и восстановление системы в автоматическом режиме. Для этого ему необходимо только указать на календаре к окне "Восстановление системы" точку восстановления (дата точки выделяется жирным шрифтом). При желании можно отменить результат восстановлениясистемы.

Получение доступа к мастеру производится командой "Пуск"/Все программы/Стандартные/Служебные/Восстановление системы".

 

7.8. Резервное копирование и восстановление

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

После запуска мастера пользователь средней квалификации может воспользоваться режимом мастера, опытный пользователь может перейти в расширенный режим. Далее следует запрос выполняемой операции "Архивация" или "Восстановление".

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

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

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

 

7.9. Аварийное восстановление системы.
Консоль восстановления.

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

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

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

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

 

Контрольные вопросы:

1. Что такое цифровая подпись драйверов? Как она реализуется?

2. Как проверить отсутствие неподписанных драйверов в операционной системе Windows?

3. Какие проблемы, угрожающие работоспособности системы Windows могут создать инсталляторы программных средств?

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

5. Что такое откат драйверов? В каких случаях он применяется и как осуществляется?

6. Что такое режим безопасной загрузки? Каковы варианты этого режима?

7. Какие неисправности операционной системы можно устранить, применяя режим безопасной загрузки?

8. Что такое "точка восстановления системы"? Как она создаётся и применяется?

9. Поясните систему резервного копирования и восстановления.

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

 


 

8. ЗАГРУЗЧИКИ ОПЕРАЦИОННЫХ СИСТЕМ

8.1. Понятие загрузчика и виды его реализации

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

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

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

· подготавливает аппаратуру компьютера к старту ядра операционной
системы;

· загрузка в оперативную память ядра операционной системы;

· формирование параметров, передаваемых ядру операционной системы;

· передача управления ядру операционной системы.

Например, на компьютерах архитектуры IBM PC загрузка происходит следующим образом:

· BIOS копирует Master Boot Record из 512 байт первого сектора жёсткого диска в оперативную память и передаёт управление скопированному коду (внесистемному загрузчику);

· внесистемный загрузчик читает и анализирует таблицу разделов жёсткого диска;

· внесистемный загрузчик определяет активный раздел жёсткого диска и передаёт управление системному загрузчику активного раздела;

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

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

Существует множество загрузчиков операционных систем. Наиболее известны следующие загрузчики:

· NTLDR – загрузчик ядра Windows NT;

· Windows Boot Manager (bootmgr.exe, winload.exe) – загрузчик ядра Windows Vista;

· OS/2 BootManager — загрузчик ядра OS/2;

· SILO – загрузчик Linux и Solaris для машин с архитектурой SPARC;

· Plop Boot Manager – универсальный загрузчик, запускается с помощью собственных загрузчиков Windows и Linux, а также со съемных носителей;

· SyMon – универсальный загрузчик, независим от типа операционной системы;

· Acronis OS Selector — коммерческая графическая утилита прилагаемая к Acronis Disk Director, поддерживает Windows и Linux, появляется перед каждой загрузкой системы, умеет копировать системы.

Штатным загрузчиком операционной систем Windows NT/2000/XP является загрузчик NTLDR, существующий в виде файла ntldr. Он может запускаться как с жёсткого диска, так и с переносных носителей CD-ROM и FLASH-на­копителя. В процессе загрузки он последовательно запускает следующие файлы:

· ntdetect.com – сбор информации о составе оборудования;

· ntoskrnl.exe – ядро операционной системы[10].

Для работы ntldr необходимо наличие в корневом каталоге диска, содержащего ntldr файла boot.ini, содержащего сведения, необходимые для организации загрузки. Пример текста файла boot.ini приведён на рис. 8.1.

 

[boot loader]

timeout=30

default=multi(0)disk(0)rdisk(0)partition(2)WINNT

[operating systems]

multi(0)disk(0)rdisk(0)partition(2)WINNT="Windows Server 2000" /fastdetect

multi(0)disk(0)rdisk(1)partition(2)WIN2KP="Windows XP Prof RU" /fastdetect

multi(0)disk(0)rdisk(0)partition(4)WIN2KP="Windows 2000 Prof RU" /fastdetect

multi(0)disk(0)rdisk(2)partition(2)WIN2KP="Windows XP Prof RU" /fastdetect

C:="Microsoft Windows 98"

C:CMDCONSBOOTSECT.DAT="Recovery Console MS Windows 2000"/cmdcons

Рис. 8.1. Пример текста файла boot.ini

Данный файл позволяет организовать меню выбора одной из четырёх операционных систем, перечисленных в секции operating systems. В секции boot loader указано время ожидания выбора операционной системы и операционная система, загружаемая по умолчанию.

В секции operating systems перечислены установленные операционные системы. В строке C:="Microsoft Windows 98" указано имя операционной системы, не являющейся членом семейства Windows NT, загрузчик которой находится в файле bootsect.dos, находящийся в корневом каталоге диска С:. В последней строке указан путь к файлу bootsect.dat, содержащему информацию для консоли восстановления и имя файла программы консоли восстановления
системы.

Слово multi в описании меню указывает необходимость использования драйверов из BIOS компьютера. Слово disk(0) указывает на жёсткий магнитный диск с интерфейсом IDE[11], слово rdisk(число) указывает номер накопителя, а слово partition определяет номер раздела, в который установлена операционная система.

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

 

8.2. Решение проблемы четырех разделов в MBR

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

Описание раздела содержит такую характеристику, как тип (BootID) и ссылки на начало последующие. В обычной таблице разделов содержатся указания на начала разделов. Однако если тип раздела равен 05h или 0Fh, то таблица раздела содержит ссылки на начало расширенного раздела диска. Тогда задав тип 05h или 0Fh четвёртого первичного раздела можно получить ссылку на расширенную таблицу разделов расширенного раздела (рис. 8.2.). А расширенный раздел может разбиваться на логические тома, которые операционная система представляет как логические диски. Для Windows 9x разбиение на большое число (более 26) логических дисков ничего не даёт, т.к. она не сможет присвоить новым логическим дискам имена. Но в Windows NT и последующих версиях системы это ограничение обойдено, и новым логическим дискам будут присвоены буквенно-цифровые номера. Таким образом, проблема создания большого числа логических дисков решена.

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

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


Рис. 8.2. Решение проблемы четырёх разделов

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

 

8.3. Установка загрузчиков ОС

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

Рекомендуется устанавливать операционные системы по одной на логический диск. Для установки операционных систем можно применять коммерческие и бесплатные загрузчики. В частности, при установке операционной системы Linux автоматически становится доступным бесплатный загрузчик GRUB, который можно установить и отдельно. Этот загрузчик позволяет разместить на одном диске операционные системы практически любых типов с помощью цепной или прямой загрузки. Утилит Startup Manager или KGRUBEditor позволят создать различное оформление и с удобством редактировать настройки загрузки. Недостатоком загрузчика является необходимость применения командной строки для устранения неполадок, которые могут возникнуть при переустановке Windows.

Примером коммерческого загрузчика является Acronis OS Selector. Полный набор утилит от Acronis позволяет управлять разделами, устанавливать операционные системы и создавать резервные копии данных. Из бесплатных утилит такого класса можно применять утилиту EasyBCD.

 

8.4. Настройка загрузчиков ОС

Для настройки загрузчика Windows можно применить утилиту msconfig, которая вызывается через меню Пуск командой выполнить. Рабочее окно утилиты показано на рис. 8.3, 8.4. Наибольший интерес представляют вкладки "Общие" и BOOT.INI.


Рис. 8.3. Вкладка "Общие" рабочего окна утилиты msconfig

На вкладке "Общие" можно установить тип запуска и указать обрабатываемые при запуске файлы.


Рис. 8.4. Вкладка BOOT.INI окна утилиты msconfig

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

 

8.5. Удаление загрузчиков ОС

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

В ряде случаев проще воспользоваться утилитой EasyBCD. Кнопкой Редактировать boot menu вызывается окно редактирования загрузки, выделяется ненужный загрузчик и удаляется кнопкой Delete. Против загрузчика операционной системы, загружающейся по умолчанию, установить флажок Default. После чего сохранить уставки.

Контрольные вопросы:

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

2. Что такое бутстрап?

3. Перечислите наиболее известные загрузчики операционных систем.

4. Какие файлы необходимы для работы загрузчика NTLDR? Приведите и прокомментируйте примерный текст файла boot.ini.

5. Каким образом загрузчики устанавливаются на системный диск?

6. К чему сводится настройка загрузчиков и как она осуществляется?

7. Как удаляются загрузчики операционной системы?


9. СИСТЕМНЫЙ РЕЕСТР И СИСТЕМНЫЕ СЛУЖБЫ

9.1. Назначение и структура реестра

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

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

Для редактирования реестра применяется редактор реестра, который вызывается командой "Пуск/Выполнить/regedit". Внешний вид окна редактора реестра показан на рис. 9.1. В левой части значками папок показано дерево разделов и подразделов, в правой части – значения выбранного раздела или подраздела. Редактирование реестра, как правило, сводится к перемещению по ветвям дерева к нужному разделу (подраздела) реестра, изменению его значений или созданию нового подраздела и его редактированию.


Рис. 9.1. Окно редактора реестра

Реестр Windows состоит из пяти главных разделов, которые не подлежат удалению:

· HKEY_KLASSES_ROOT – раздел содержащий сведения о соответствии файлов и создающих их программ;

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

· HKEY_CURRENT_USER – указатель на часть раздела HKEY_USERS, соответствующую текущему пользователю, которая имеет имя, состоящее из символа S и длинного ряда чисел, разделённых символом "-", и являющееся уникальным для каждого пользователя компьютера идентификатором защиты;

· HKEY_LOCAL_MACHINE – раздел, хранящий сведения об аппаратном и программном обеспечении общих для всех пользователей;

· HKEY_CURRENT_CONFIG – копия информации из других разделов и подразделов реестра.

Все изменения реестра делаются в разделах HKEY_CURRENT_USER и HKEY_LOCAL_MACHINE.

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

Таблица 9.1. Виды значений реестра

Вид значения Значок, используемый редактором Возможность создания в редакторе реестра
Строковый параметр (REG_SZ) Да
Мультистроковый параметр (REG_MULTI_SZ) Да
Расширяемый строковый параметр (REG_EXPAND_SZ) Да
Двоичный параметр (REG_BINARY) Да
Параметр DWORD длиной 32 бита (REG_DWORD) Да
Параметр QWORD длиной 64 бита (REG_QWORD) Да
Машинное слово (REG_DWORD_BIGENDIAN) Нет
Список ресурсов (REG_LIST, REG_RESOURCE_REQUIREMENTS_LIST или FULL_RESOURCE_DESCRIPTOR) Нет

 

Строковый параметр (REG_SZ) содержит последовательность символов, которая может быть прочитана и понята пользователем. Мультистроковый параметр (REG_MULTI_SZ) представляет собой последовательность строк, разделённых нулевым символом. Ввести нулевой символ с клавиатуры невозможно, его можно только скопировать из другого приложения. Расширяемый строковый параметр (REG_EXPAND_SZ) содержит специальные переменные, в которые Windows перед передачей приложению подставляет данные. Например, ссылка на звуковой файл может иметь вид: %SystemRoot%Mediadoh.wav, а в приложение будет передан параметр C:WindowsMediadoh.wav, полученный подстановкой вместо %SystemRoot% пути к системной папке C:Windows.

Двоичные значения представлены последовательностями шестнадцатеричными числами, каждая цифра которых изображает содержимое тетрады (четырёх разрядов байта), например, "1А В8 С3 СС …".

Параметры DWORD и QWORD являются обычными 32-битными и
64-битными числами соответственно, которые могут быть представлены как в шестнадцатеричной, так и в десятичной системе счисления. Редко встречающийся параметр REG_DWORD_BIGENDIAN является параметром DWORD, в котором старшее и младшее двухбайтовые слова хранятся в обратном порядке. Способ истолкования чисел, заданных указанными параметрами зависит от использующего из приложения.

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

Например, соответствия файлов и текстовых редакторов не требуют применения слоёв, в то время как 64-биная программа не может обратиться к 32-битной DLL. Поэтому соответствия не нуждаются в слоях, а описания обращений к DLL должны быть разными для 32- и 64-битных приложений и оформляются в виде двух слоёв.

 

9.2. Работа с реестром

Стандартной, но не единственной, утилитой работы с реестром является программа regedit.exe, которая называется редактором реестра. Схема рабочего окна утилиты показана на рис. 9.1. Меню "Файл" содержит команды управления реестром:

· Импорт… – импорт (загрузка) файла реестра;

· Экспорт … – сохранение файла реестра;

· Загрузить куст… – загрузить раздел (подраздел) файла реестра;

· Выгрузить куст… – сохранить раздел (подраздел) файла реестра;

· Подключить сетевой реестр – подключиться к реестру удалённого компьютера;

· Отключить сетевой реестр – отключится от реестра удалённого
компьютера.

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

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

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

Кроме системной утилиты regedit на рынке программного обеспечения предлагаются программы-редакторы реестра:

· Мастер Автозапуска 1.0 – работа с разделами реестра, отвечающими за запуск программ при загрузке Windows;

· RegWorks 1.3.4 – расширенный редактор и монитор реестра;

· Registrar Registry Manager 4.04 – приложение, позволяющее заменять штатного редактора реестра с предоставлением расширенного сервиса (откат, поиск в фоне, закладки, раскрашивание разделов и подразделов и т.д.) недоступного в Regedit;

· RegCompact.NET 1.8 – приложение, осуществляющее полную перезапись, дефрагментацию и оптимизацию реестра Windows XP.

В процессе эксплуатации компьютера происходит "засорение" операционной системы файлами-двойниками системных файлов и различными некорректными разделами и подразделами реестра. С фалами-двойниками работают средства восстановления системы (см. разделы 7.7 – 7.9). С накопившимся в реестре "мусором" работают утилиты очистки и оптимизации реестра. К ним относятся утилиты:

· InstallSpy 2.0 – контроль за изменениями в файловой системе и системном реестре, просмотр и удаление ненужных разделов и подразделов;

· NBG Clean Registry 1.8.3.2018 – поиск и удаление неправильных ссылок в реестре и ярлыках Windows;

· Registry Booster 1.2 – очистка и оптимизация системного реестра Windows;

· Registry Clean Expert 4.31, Registry Drill 4.0.02, Registry Mechanic 5.2.0.310, WinSysClean 2006 6.02, Work With Registry 4.0, Глюк Ремовер 2.4 – очистка реестра от некорректной или устаревшей информации;

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

· Advanced Registry Tracer 2.1 – анализ изменений в системном реестре;

· Regmon 7.0.3 – отслеживание обращений запускаемых или уже работающих программ к диску или системному реестру.

Резервное копирование реестра производится автоматически в точках восстановления системы (см. разд. 7). Его можно также произвести вручную командами меню "Файл" редактора реестра. Это целесообразно делать перед любыми операциями редактирования реестра. Восстановление реестра производится наряду с восстановлением системных файлов приложением "Восстановление системы". Можно восстановить реестр и вручную посредством загрузки сделанной резервной копии реестра.

 

9.3. Системные службы

Системные службы – это системные приложения, которые выполняются автоматически независимо от статуса пользователя и запускающиеся автоматически системой и вручную пользователем. Управление службами осуществляется системной программой System Control Manager (рис. 9.2, 9.3). Поэтому приложение, сконструированное как служба, должно быть способно принимать сообщения от указанной программы управления службами.


Рис. 9.2. Окно приложения System Control Manager при вызове через панель управления


Рис. 9.3. Окно приложения System Control Manager при вызове через контекстное меню

Доступ к программе System Control Manager может быть осуществлён двумя способами:

· вызовом приложения "Администрирование" через "Панель управления";

· вызовом командой "Управление" через контекстное меню значка "Мой компьютер".

Окно программы System Control Manager разделено на две панели. В правой панели помещён список служб и зарезервировано место для описания службы (практически ничего не даёт) и меню команд управления выделенной службы.

Существует несколько режимов работы служб:

· запрещена к запуску;

· ручной запуск (по запросу);

· автоматический запуск при загрузке компьютера;

· автоматический (отложенный) запуск (введён в Windows Vista и Windows Server 2008);

· обязательный запуск – автоматический запуск и невозможность (для пользователя) остановить службу.

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

 

Контрольные вопросы

1. Что такое системный реестр операционной системы Windows?

2. Какова структура системного реестра среды Windows?

3. Что такое значения системного реестра и какие виды значений существуют?

4. Как строится системный реестр 64-разрядной операционной системы Windows?

5. Опишите системную утилиту редактирования реестра.

6. Каковы утилиты работы с реестром, не входящие в состав операционной системы Windows?

7. Как выполняется резервное копирование системного реестра?

8. Что такое системные службы?

9. Как производится управление системными службами?

 


10. БЕЗОПАСНОСТЬ ОПЕРАЦИОННЫХ СИСТЕМ

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

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

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

 

10.1. Угрозы, уязвимости, атаки

Схема взаимодействия предприятия с окружающей средой при отсутствии аппаратных средств защиты информации показана на рис. 10.1. Техническая часть информационной инфраструктуры предприятия представлена маршрутизатором (М), сервером (С), коммуникационной подсетью, выполненной по различным топологических схемам и множеством рабочих мест РМ1, РМ2, … РМn. Предприятие или физическое лицо, взаимодействующее с предприятием, называется контрагентом (КА). Лицо, пытающееся получить несанкционированный доступ к информации или разрушить информацию или программное обеспечение, а также блокировать к ней доступ зарегистрированным пользователям, представлен злоумышленником (ЗУ). Взаимодействие элементов системы показано двунаправленными стрелками.

 


Рис. 10.1. Примерная схема локальной сети малого предприятия

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

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

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

Таблица 10.1. Системная классификация угроз

Параметры классификации Значения параметров Содержание значения
Виды угроз Физическая целостность данных Уничтожение и искажение
Логическая структура Искажение структуры
Содержание Несанкционированная модификация
Конфиденциальность Несанкционированное получение, Утечка информации
Право собственности Присвоение чужого труда
Происхождение угроз Случайное Отказы, сбои, ошибки Стихийные бедствия Побочные явления
Преднамеренное Злоумышленные действия людей
Предпосылки появления угроз Объективные Количественная и качественная недостаточность элементов системы
Субъективные Промышленный шпионаж Недобросовестные сотрудники Криминальные и хулиганствующие элементы Службы других государств
Источники угроз Люди   Пользователи, персонал, посторонние люди
Технические устройства   Регистрации, ввода, обработки, хранения, передачи и вывода
Модели, алгоритмы, программы Общего назначения, прикладные, вспомогательные
Технологические схемы обработки данных Ручные, интерактивные, внутримашинные, сетевые
Внешняя среда Состояние среды, побочные шумы, побочные сигналы

 

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

Атакойназывается реализация злоумышленником угрозы информационной безопасности.

 

10.2. Политика безопасности

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

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

 
 

 


Рис. 10.2. Структура политики безопасности

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

В частности, в процессе информационного обмена угрозы могут создавать три участника этого процесса:

· злоумышленник:

· ознакомление с содержанием переданного сообщения;

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

· изъятие сообщения из системы с сокрытием факта изъятия;

· создание помех в работе канала связи.

· законный источник сообщения:

· разглашение переданного конфиденциального сообщения;

· отказ от авторства действительно переданного им сообщения;

· утверждение о передаче получателю фактически не отправлен­ного сообщения.

· законный приёмник информации:

· разглашение полученного сообщения;

· отказ от факта получения сообщения, которое в действительности было получено;

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

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

 

10.3. Защита от вторжений

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

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

Несмотря на кажущуюся надёжность этого способа, эта система достаточно легко взламывается. Согласно теории шифрования, стойкость логина и пароля зависит от их длины. Однако это верно для логина и пароля, создаваемых случайным образом. Часто администратор назначает логин и пароль, имеющие смысл, а в некоторых случаях пользователю предоставляется возможность переопределить пароль или самостоятельно назначить логин и пароль (например в электронной почте). Большая вероятность наличия логинов и паролей, имеющих смысл, создаёт возможность программным способом генерировать пары логин – пароль и проверять их. Существуют и другие способы несанкционированного проникновения в систему, основанные на командах ping, telnet, dnsquery, nslookup, dig и многих других.

Существуют алгоритмы, усиливающие пароль и системы заменяющие его. К ним относятся:

· шифрование пароля после ввода его пользователем;

· алгоритм "соли", предусматривающий добавление к паролю случайного числа, меняющегося при каждом входе в систему;

· одноразовые пароли;

· система "оклик – отзыв";

· аутентификация (опознание) с помощью объекта, например, специальной пластиковой карточки;

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

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

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

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

Система "оклик – отзыв" предусматривает требование ответа на вопрос после ввода пользователем логина. Список вопросов и ответов на них заранее сгенерирован для каждого пользователя. Вопросы касаются фактов, известных пользователю, но с большой вероятностью неизвестных злоумышленнику. Примерами таких вопросов являются вопросы "Девичья фамилия Вашей бабушки?" или "Где мы встречались в апреле 2010 г.?". Если эта фамилия встречающаяся редко, то маловероятно, что она окажется в списке возможных пар логин – пароль, имеющегося у злоумышленника, а уж место встречи в заданную дату, имеющее значение для легального пользователя, злоумышленнику угадать практически невозможно.

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


10.4. Межсетевые экраны

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

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

· блокировка внешних атак, включая сканирование портов, подмену IP-ад­ресов, DoS и DDoS (атак "Отказ в обслуживании"), подбор паролей и пр.

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

· контроль приложений запрашивающих разрешение на доступ к открытым портам с проверкой по имени файла и аутентичности приложения;

· поддержка зональной защиты с дифференциальным подходом к анализу содержания контента в зависимости от зоны его поступления (Интернет или внутренняя локальная сеть);

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

· максимально прозрачная работа, применение мастеров настройки брандмауэров.

Классификация брандмауэров приведена на рис. 10.3.

 
 

 

 


Рис. 10.3. Классификация брандмауэров

Аппаратные брандмауэры существуют в виде физических устройств, не являющихся персональными компьютерами и серверами. Примерами брандмауэров, являющихся аппаратными средствами являются межсетевые экраны фирмы D-Link серий DFL и DSR.

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

Локальные брандмауэры устанавливаются на одно рабочее место или на один сервер, распределённые – на множество компьютеров и серверов.

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

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

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

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

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

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

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


Применение брандмауэров иллюстрируется рис. 10.4.

 
 

 


 

Рис. 10.4. Применение брандмауэров

Брандмауэр_1 отделяет сервер от глобальной сети Интернет и контролирует внешний трафик сети предприятия. Брандмауэр_2 разделяет на два сегмента локальную сеть предприятия и контролирует трафик между сегментами локальной сети предприятия.

Недостатками брандмауэров являются:

· Разрозненность систем защиты

· Отсутствие защиты для нестандартных или новых сетевых сервисов

· Снижение производительности

В целях повышения надёжности защиты на брандмауэры устанавливается следующее программное обеспечение:

· Intrusion Detection System (IDS – система выявления атак);

· система контроля целостности программного обеспечения и конфигурации;

· система мониторинга системы и оповещения о неисправностях.

 

10.5. Отключение ненужных служб

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

· почти всегда:

§ "Автоматическое обновление";

§ "Адаптер производительности WMI";

§ "Модуль поддержки смарт-карт";

§ "Смарт-карты";

§ "Серийный номер переносного медиа-устройства";

§ "Планировщик заданий";

§ Telnet;

§ NetMeeting Remote Desktop Sharing;

§ "Диспетчер сеанса справки для удаленного рабочего стола";

§ "Диспетчер сетевого DDE";

§ "Диспетчер учетных записей безопасности";

§ "Модуль поддержки NetBIOS через TCP/IP";

§ "Обозреватель компьютеров";

§ "Оповещатель";

§ "Рабочая станция";

§ "Сервер";

§ "Сервер папки обмена";

§ "Сетевой вход в систему";

§ "Служба сетевого DDE";

§ "Служба сетевого расположения NLA";

§ "Служба сообщений";

§ "Службы криптографии";

§ "Службы терминалов";

§ "Удаленный реестр";

§ "Фоновая интеллектуальная служба передачи";

§ "Диспетчер автоподключений удаленного доступа";

· если нет "Умной" бытовой техники:

§ "Служба обнаружения SSDP"

§ "Узел универсальных PnP-устройств"

§ при одной учётной записи пользователя:

§ "Вторичный вход в систему";

§ "Совместимость быстрого переключения пользователей";

§ если не используется RAID-массив дисков:

§ "Теневое копирование тома"

· для домашнего пользователя сети:

§ "Журналы и оповещения производительности";

§ "Служба регистрации ошибок";

§ "Уведомление о системных событиях";

· при отсутствии Wi-Fi адаптера;

§ "Беспроводная настройка";

· при пользовании сторонними программами записи на компакт-диски:

§ "Служба COM записи компакт-дисков IMAPI".

Отключение ненужных служб выполняется в окне приложения System Control Manager (рис. 9.2, 9.3). Следует иметь в виду, что отключение служб является серьёзным шагом, поэтому необходимо чётко фиксировать в своём рабочем журнале сделанные отключения, наблюдать за поведение компьютера и, в случае необходимости, отменять отключение служб.

 

10.6. Защита от спама

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

Большую стойкость обеспечивают антиспамовые фильтры, которые имеют современные почтовые серверы и клиенты (например, "The but!"). Антиспамовые фильтры являются на сегодняшний день самыми эффективными средствами защиты от спама, дающими долговременный эффект. Они являются экспертными системами, классифицирующими электронные письма на обычные и спам по множеству признаков. Как всякие экспертные системы они подлежат обучению. Фильтры, установленные на почтовых серверах, обучаются обслуживающим персоналом, а фильтры почтовых клиентов – пользователем. Уточнить настройку антиспамового фильтра сервера может пользователь электронной почты, пометив письмо знаком "Спам" в списке входящих писем.

 

10.7. Защита от вредоносных программ и вирусов
средствами операционных систем

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

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

1. Минимизация кодов модулей операционной системы.

2. Исключение использования активного содержимого.

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

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

5. Разнообразие независимых операционных систем и их версий.

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

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

8. Внедрение средств антивирусной защиты, встроенных в операционные
системы.

9. Поддержка электронной цифровой подписи для различного программного обеспечения.

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

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

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

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

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

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

 

10.8. Защита конфиденциальной информации.

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

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

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

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

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

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

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

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

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

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

 

Примечание: Ряд программ, например, некоторые архиваторы и текстовые и табличные процессоры Word и Excel дополняют эту защиту установкой паролей на файлы, защищая их целиком от чтения и/или изменения. Excel обеспечивает также защиту отдельных частей файла: страницы рабочей книги, столбца, строки и даже отдельных клеток. Но это заслуга не операционной системы, а самих программ. Квалифицированный "взломщик" может преодолеть и эту защиту в среде специальных программ взлома паролей.

 

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

· разделение пользователей на группы с определением прав доступа к файлам и каталогам;

· регистрацию групп;

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

Для поддержки администрирования системы каталоги и файлы должны иметь соответствующие атрибуты. Например, в UNIX устанавливается 9-раз­рядный защитный код файла, состоящий из триад (троек) битов, которые называются rwx-бита­ми. Бит r разрешает/запрещает чтение файла, бит w– запись данных в файл, x– исполнение файла. Первая тройка rwx-битов определяет права владельца файла, вторая – права пользователей группы, в которую входит владелец, третья – права прочих пользователей.

 

Контрольные вопросы

1. Что такое информационная безопасность?

2. Опишите схему взаимодействия локальной сети предприятия и удалённых пользователей при отсутствии брандмауэров. Укажите возможные места нарушения информационной безопасности.

3. Что такое угрозы информационной безопасности? Опишите классификацию угроз.

4. Что такое уязвимость? Приведите примеры.

5. Что такое атака. Каковы последствия успешной реализации атаки?

6. Что такое политика безопасности? Каковы её составные части?

7. Что такое вторжение? Каковы его цели?

8. Почему пара "логин и пароль" не считается достаточно надёжной. При каких условиях она всё-таки обеспечивает достаточную защиту?

9. Какие мероприятия повышают надёжность пароля и его заменяющих систем?

10. Поясните приём "шифрование пароля после ввода его пользователем".

11. Поясните алгоритм "соли".

12. Поясните одноразовые пароли, систему "оклик – отзыв".

13. Поясните аутентификация пользователя с помощью объекта.

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

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

16. Каковы функции идеального брандмауэра.

17. Поясните классификацию брандмауэров по исполнению.

18. Поясните работу брандмауэров на пакетном уровне.

19. Поясните работу брандмауэров на прикладном уровне.

20. Поясните работу брандмауэров на сеансовом и экспертном уровнях.

21. Каковы недостатки брандмауэров? Какие программные средства усиливают защиту информации брандмауэрами?

22. Что такое системные службы? Почему необходимо отключать ненужные системные службы? Как это сделать?

23. Что такое спам и как от него можно защититься?

24. Поясните роль минимизации программного кода с точки зрения защиты от вредоносных программ.

25. Почему отказ от активного содержимого повышает защищённость операционной системы от вредоносных программ?

26. Повысит чёткое разграничение программных модулей по применению привилегированного и непривилегированного режима ли защищённость компьютерной системы от вредоносных программ? Почему?

27. Каким образом можно построить управляемую пользователем защиту от перезаписи BIOS и от записи отделов разделов жёсткого диска? Что даст такая защита? Используется ли она в настоящее время?

28. В чём противоречие требований информационной безопасности и удобства пользования? Почему защищённость часто приносится в жертву удобству?

29. Поясните защиту конфиденциальной информации посредством паролей.

30. Какими способами поддерживается администрирование системы?

 

 


СПИСОК ЛИТЕРАТУРНЫХ ИСТОЧНИКОВ

1. Гордеев А.В. Операционные системы: Учебник для вузов. 2-е изд. – СПб.: Питер, 2007. – 416 с.: ил.

2. Сетевые операционные системы / В.Г. Олифер, Н.А. Олифер. – СПб.: Питер, 2002. – 544 с. : ил.

3. Тененбаум Э. Современные операционные системы. – 3 изд. – СПб.: Питер, 2010. – 1120 с., ил.

4. Дейкстра Е. Взаимодействующие последовательные процессы // Языки программирования / Под ред. Ф. Женюи. – М.: Мир, 1972

5. Соловьёв В.Г., Никитин В.Д. Операционные системы ЭВМ: Учеб.пособие. –М.: Высшая школа, 1989. – 255 с.

6. Хоар Ч. Взаимодействующие последовательные процессы. – М.: Мир, 1989. – 264 с.

7. Основы операционных систем. Курс лекций. Учеб.пособ. /В.Е. Карпов, К.А. Коньков / Под ред. В.П. Иванникова. – М.: ИНТУИТ.РУ "Интернет Университет Информационных Технологий", 2005 – 536 с.

8. Крис Касперски. MBR своими руками [Электронный ресурс] http://www.insidepro.com/kk/065/065r.shtml

9. В.В. Платонов. Программно-аппаратные средства безопасности компьютерных сетей: учеб.пособие для студ. высш. Учеб.заведений/В.В. Платонов. –М.: Изд.центр "Академия", 2006

10.


 

Названия тем Виды учебных занятий Всего часов по учебному плану
Аудиторные занятия, из них
Лекции Практ. занятия Самостоя-тельная работа
1. Введение и основные понятия дисциплины.
2. Аппаратура и программное обеспечение
3. Устройство жесткого диска (HDD). Создание и управление разделами HDD.
4. Файловые системы (FS).
5. Процессы и потоки. Прерывания. Ядро
6. Асинхронные параллельные процессы
7. Тупики
8. Организация и управление памятью
9. Загрузчики операционных систем
10. Средства защиты и восстановления операционных систем
11. Системный реестр и системные службы
12. Безопасность операционных систем
13. Эффективность, мониторинг и оптимизация операционных систем
ИТОГО:

 

№ п/п Наименование раздела дисциплины Содержание раздела
1. Введение и основные понятия дисциплины. Поколения операционных систем Предмет, задачи и цели курса. Основные понятия и их определения: операционная система, функции ОС, ресурсы, возникновение ОС. Поколения ОС. Нулевое поколение ОС. Первое поколение ОС. Второе поколение ОС. Третье поколение ОС. Компьютеры семейства System/360 фирмы IBM. Четвертое поколение ОС. Пятое поколение ОС. Разделение цен на аппаратуру и программное обеспечение.
2. Аппаратура и программное обеспечение Расслоение памяти. Регистр перемещения. Прерывания и опрос состояний. Буферизация. Периферийные устройства. Защита памяти. Таймеры и часы. Относительная адресация. Базовая система ввода-вывода информации (BIOS). Драйверы. Создание загрузочных носителей.
3. Устройство жесткого диска (HDD). Создание и управление разделами HDD. Устройство жесткого диска (HDD). Способ адресации диска CHS. Линейный способ адресации диска. Разделы диска. Логические диски. Главная загрузочная запись. Таблица описания разделов диска.
4. Файловые системы (FS). Определение файловой системы (FS). Задачи, решаемые FS. Типы файлов. Иерархическая структура файловой системы. Древовидная и сетевая структуры. Типы имен файлов. Атрибуты. Монтирование.
5. Процессы и потоки. Прерывания. Ядро Процессы и потоки. Состояния процесса. Диаграмма переходов процесса из состояния в состояние. Блок управления процессом. Операции над процессами. Приостановка и возобновление. Прерывания. Обработка прерывания. Типы прерываний. Переключение контекста. Ядро ОС. Переносимая часть ОС. Основные функции ядра. Разрешение и запрещение прерываний. Ядро в привилегированном режиме. Многослойная структура ОС.
6. Асинхронные параллельные процессы Параллельная обработка. Взаимоисключение Критические участки. Примитивы взаимоисключения. Реализация примитивов взаимоисключения. Программная и аппаратная реализация взаимоисключения.
7. Тупики Определения и основные понятия: тупик, зависание системы, надежное состояние системы. Примеры тупиков. Концепции ресурсов. Четыре необходимых условия возникновения тупика. Основные направления исследований по проблеме тупиков. Алгоритм банкира.
8. Организация и управление памятью Организация памяти. Управление памятью. Иерархия памяти. Стратегии управления памятью. Связное и несвязное распределение памяти. Виртуальная память. Страницы и сегменты. Стратегии управления виртуальной памятью. Стратегии выталкивания страниц. Локальность. Рабочие множества. Подкачка страниц по запросу и с упреждением. Освобождение страниц.
9. Загрузчики операционных систем Виды реализации загрузчиков. Решение проблемы четырех разделов в MBR. Установка загрузчиков ОС. Настройка загрузчиков ОС. Удаление загрузчиков ОС.
10. Средства защиты и восстановления операционных систем Цифровая подпись драйверов. Защита системных файлов. Проверка системных файлов. Верификация цифровой подписи файлов. Откат драйверов. Безопасный режим загрузки. Точки восстановления системы. Резервное копирование и восстановление. Аварийное восстановление системы. Консоль восстановления.
11. Системный реестр и системные службы Назначение и структура реестра. Средства управления реестром. Резервное копирование и восстановление реестра. Очистка реестра. Редактирование реестра. Системные службы.
12. Безопасность операционных систем Классификация угроз. Политика безопасности. Защита от вторжений. Брандмауэры. Отключение ненужных служб. Защита от спама. Защита от вредоносных программ и вирусов. Защита конфиденциальной информации.
13. Эффективность, мониторинг и оптимизация операционных систем Сложность создания эффективных ОС. Основные понятия эффективности. Виды показателей эффективности. Причины снижения производительности современных ПК. Настройка и оптимизация ОС. Инструменты мониторинга и оптимизации операционных систем.

 


[1] Например, при вызове подпрограмм или процедур и функций. Подпрограммой называется последовательность команд, начинающаяся меткой (условной последовательностью символов) и командой "Возврат". Процедура и функции – это именованные блоки программы, описанные в начале программы. Имя блока определяет адрес начала его кода. В конце блока подразумевается команда "Возврат", хотя в тесте блока она обычно отсутствует.

[2] Появление нового имени называется вхождением имени.

[3] Буфер – область памяти, выделяемая для работы с внешними устройствами и предназначенная для накопления выводимых или вводимых данных. Например, буферы файлов, клавиатуры, принтера и т.д.

[4] Оверлейные модули широко используются системой программирования Турбо Паскаль. Возможно их применение и в системе программирования Visual Basic.

[5] Известны случаи, в которых запланированные процессы вследствие загруженности вычислительных систем не выполнялись годами с момента их планирования.

[6] Комбинация символов ":=" означает операцию присваивания значения, стоящего в правой части оператора присваивания переменной стоящей в левой части оператора. Таким образом, данные из ячейки памяти, указанной в правой части оператора копируются в ячейку, расположенную по адресу, указанному в левой части.

[7] По материалам [1].

[8] С логическими дисками оперируют не все операционные системы. Например, UNIX, не имеет логических дисков.

[9] Список кодовых идентификаторов приведён в [1].

[10] Этот файл существует в следующих модификациях:

· ntoskrnl.exe – однопроцессорное ядро Windows.

· ntkrnlmp.exe (NT Kernel, Multi-Processor version) – многопроцессорное ядро Windows.

· ntkrnlpa.exe – однопроцессорное ядро Windows с более чем 3 ГБ оперативной памяти

· ntkrpamp.exe – многопроцессорное ядро Windows с более чем 3 ГБ оперативной памяти.

 

[11] Для дисков с интерфейсом SCSI после слова multi в скобках указывается идентификатор SCSI-диска

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

Используемые теги: операционные, системы0.038

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

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

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

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

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

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

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

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

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

Микропроцессорные системы: система ДЦ-МПК, система "Юг"
Использован практический опыт внедрения линейных пунктов управления (ЛПУ) на 60 станциях в увязке с ЭЦ-4, ЭЦ-9, МРЦ-12, МРЦ-13. Выполнен переход на… В состав аппаратуры центрального пункта управления (ПУ) входят IBM-совместные… Круглосуточный режим работы аппаратных средств ПУ обеспечивается источниками бесперебойного питания, а также системой…

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

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

Операционная система MS DOS. Основные принципы хранения информации на магнитных дисках в MS DOS. Файловая система MS DOS
Размер Кластера NРазмерСектора N 512 байт, где N 2,4,8 и т.д. FAT - Таблица размещения файлов НАКОПИТЕЛИ НА МАГНИТНЫХ ДИСКАХ Магнитные диски… Для работы с Магнитными Дисками используется устройство, называ- емое… Контроллер дисковода вставляется в один из свободных разъемов сис- темной платы IBM PC MotherBoard. Дисковод содержит…

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