Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник по ОС.doc
Скачиваний:
5
Добавлен:
01.04.2025
Размер:
3 Мб
Скачать
☆

6.2. Формальная модель операционной системы

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

Пусть Т=[t0,tk] – время функционирования ОС (от t0 – времени инициирования и загрузки системы до tk – времени ее уничтожения). Структуру ОС в некоторый момент времени tТ можно представить с помощью графа Гt, вершинами которого являются элементы множеств процессов P={p0,p1,…,pn} и ресурсов R={r0,r1,…,rg}, а ребра устанавливают связи между вершинами, Р и R − конечные непустые множества. Так как ОС является динамически изменяющейся системой, то в некоторые моменты времени t1,t2T, t1t2 ее структура может быть представлена соответственно в виде графов Гt1 и Гt2. Проследим изменение Гt – графа, отображающего структуру ОС, в любой момент времени tТ. Выделим в некоторое множество все возможные вершины и ребра, которые могут быть получены на промежутке времени [t0,tk]. В дальнейшем каждый элемент множества  (вершину или ребро) будем обозначать как j, j1. Определим множество E как совокупность правил, фиксирующих изменение структуры графа Гt для любого tТ. Каждое правило из множества E имеет вид

Y j,: ij1, j2,…, jв, yj1, yj2, yj3,

где yj, – номер правила, i=1,2,3 j, j1, j2,…, jв означает, что элемент j в момент времени tТ заменяется на набор элементов j1, j2,…, jв, yj1, yj2 – соответственно номера правил, на которые осуществляется переход, если элемент j активен или блокирован, yj3 указывает правило, определяющее для заданного j либо весь граф ресурсов (если j – процесс), либо альтернативный ресурс (если j – ресурс). Обозначим через Y – множество номеров правил из Е. Пусть 0 – некоторый начальный процесс, инициирующий работу системы. Тогда M – формальная модель операционной системы, которую можно определить следующим образом:

М=[Т,,Е,Y, 0].

Пусть каждый элемент j  характеризуется следующей тройкой:

[m(j),x(j),S(j)],

где m(j) – имя элемента; x(j) – тип элемента (процесс, процессор, память и т.д.); S(j) определяет состояние элемента (активен, блокирован и т.д.).

Примем, что некоторый элемент j в момент времени t порождает цепочку элементов φi,=j1j2…jв (т.е. j φj ), если к j применимо некоторое правило из Е.

Будем говорить, что граф Гt порождается вершиной j (т.е. j*Гt(j)=Гt), если существует набор правил y1, y2, …,yn , для которых справедливо утверждение j φ1φ2φl=Гt(j), причем на каждом шаге φi-1=φi выполняется только одно правило из Е.

Обозначим через Гtp(pi) граф процессов, порождаемый процессом рiР, P есть подмножество b в некоторый момент времени t. Если p0 – начальный процесс, то Гtp(pi) Гtp(p0), piР, i=1,2,…,n.

Полагаем, что с каждой вершиной – процессом pj Гtp (p0) связан некоторый граф Гtr(pj) ресурсов, требуемых для нормального развития pj, j=0,1,2,...,n. Тогда граф Гt определяется как Гt=<Гtp,Гtr>, где Гtp = Гtp (P0), Гtr = Гtr (P0).

Вершины графа Гtp (т.е. процессы) могут быть соединены ориентированными или неориентированными ребрами. Ориентированное ребро указывает, что вершина pb находится в отношении иерархического подчинения к вершине pа, т.е. процесс pb является потомком процесса pа. Неориентированное ребро аb=(pa,pb) показывает, что существует связь между процессами pа и pb. Например, аb говорит о том, что pа и pb используют общий ресурс r. Вершинами графа Гtr будут некоторые ресурсы rjR, R, которые могут быть соединены между собой ориентированными и неориентированными ребрами. Ориентированное ребро указывает, что ресурс rb является потомком ресурса rа. Например, если rа определяет память, то rb – это один из сегментов памяти rа.

Будем считать, что все вершины графа Гt расположены по уровням, причем на нулевом уровне находится единственная вершина p0 . На уровнях Ui1 помещаем вершины, каждая из которых зависит хотя бы от одной вершины предыдущего уровня Ui-1 и не зависит ни от одной вершины последующих уровней. Одноуровневые вершины не зависят друг от друга.