Операционни Системи Компютърните Системи Основни елементи


Метод с индексно-последователен достъп



страница7/8
Дата12.06.2017
Размер1.12 Mb.
#23375
1   2   3   4   5   6   7   8

Метод с индексно-последователен достъп

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

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

Възможно е да се изгради и главен индекс, който всъщност е индекс на индекса на цилиндрите. Всеки негов елемент съдържа номер на писта (при-надлежаща на индекса на цилиндрите) и ключа с максимална стойност в нея.

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

Метод на достъп до библиотеки

Основен елемент в библиотечния файл (наричан още секциониран) е т. нар. раздел (член), който може да представлява програма, подпрограма, сегмент от данни или пълно макроопределение (фиг. 10.3). Вески раздел носи име, по което
може бъде намерен във файла. Специален раздел-справочник, разположен в началото на файла, съдържа името и разположението на всеки раздел. Библиотечните файлове обикновено се обработват на раздели, а самите раздели са организирани като последователни файлове.



10.6.2. Начини за защита

Именуване на файлове. При някои ОС се разчита на невъзможността потребител да достигне до файл, който не може да именува (назове) и следователно не може да работи с него. При тази схема се разчита на това, че няма механизъм за получаване на имената на чужди файлове и че не е лесно те да се отгатнат. Тъй като имената на файловете най-често са мнемонични, обикновено е лесно те да се отгатнат.

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

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

Друга възможност е да се свърже парола с всеки файл (ако трябва да се реализира по-детайлна защита, трябват повече пароли). Вариант е с всеки файл да се свърже списък на достъпа (води се от собственика), съдържащ идентификатор на потребителя и парола (обикновено е достатьчна една парола за всички типове достъп). Всеки потребител има различна парола. Така, ако се разкрие парола, засяга се само един потребител.

Използват и други схеми. Например някои системи (TDP20) позволяват да се свързва парола с подсправочник, а не с файл.



Матрица на достъп. Един вариант на списъка за достъп е известен като матрица на достъп (фиг. 10.11). Тук достьпът се извършва само въз основа на идентифицирането на потребителя. Различните потребители може да искат различни типове достъп до файл или до справочник. С всеки файл (Fl, F2, F3 и т.н.) се свързва списък на идентификаторите (имената) на потребителите (U1, U2, U3 и т.н.), които могат да имат достъп до файла. С всеки идентификатор (респективно потребител) се свързва дума, указваща разрешените типове достъп (чрез състоянието на съответния бит: е - изпълнение, d- унищожаване, с - създаване, г- четене и w - запис). Получената матрица е голяма и разредена.

Опростей вариант е да се отбележи в матрицата разрешен или забранен достъп до файла само с един бит, което намалява размера на матрицата и опростява операциите над нея.

Друг подход е определяне на отношението между всяка двойка потребители. Създава се матрица на идентификаторите на потребителите, показваща разрешените типове на достъп на всеки потребител към файловете на другите потребители. Всеки елемент на матрицата съдържа дума на достъпа, указваща разрешените типове на достъп. Всички битове в тази дума са равни на „1" за достъпа към собствените файлове на потребителя.

Изредените подходи изискват голям обем памет, но дават гъвкавост на защитата.



Класове от потребители. Както беше казано, проблемът на списъците е в тяхната големина. Вместо това могат да се определят класове от потребители за вески файл и в тях всички имат еднакви права:

а) Собственик потребителя,т създал файла. Неговите права могат да се предоставят на други потребители, но това не се прави често.

б) Група - притежателят има партньори, които съвместно използват файла и им трябва подобен достъп.

в) Назначен - на потребител могат да бъдат предоставени особени права, в общия случай недостьпни за обикновени потребители.

г) Редови - всички останали потребители в системата.

Очевидно е, че има йерархия в правата на потребителите - собственикът е с най-много, а редовият е с най-малко права. Назначеният потребител може да има произволни права (в много системи този клас не се включва). В други системи класификацията на потребителите и файловете може да бъде по-структурирана. Възможно е правата (типовете) на достъп да се подредят в йерархия, където всяко ниво да включва предните (подреждането е различно в различните ОС - в началото на т. 10.6 е дадено едно примерно подреждане). Така за всеки клас може да се посочи горното ниво.

Например в UNIX системата определя дума с три полета, всяко от тях включва 3 бита: rwx (четене, запис и изпълнение). Отделни полета се пазят за: собственик, група на собственика и всички останали потребители.

Във VAX/VMS групите могат да бъдат създавани и управлявани точно, както файловете със съответен контрол.



Управление на вход/изход и планиране (Scheduling).

Планиране на процесите. Централният процесор е най-критичният ресурс на компютърната система. Всяка ОС изисква щателен подбор на планиращия алгоритъм, съгласно който от многото процеси, конкуриращи се за достъп до процесора, се избира един готов за изпълнение процес. За разпределение на процесора (респ. процесорите), между намиращите се в състояние на готовност процеси отговаря програмата за планиране на ниско ниво (програмата за планиране на процеси, диспечера). Прието е планиращата програма да се разглежда като елемент на ядрото, но принципно е възможно ядрото да не съдържа подобен механизъм. Тогава неговите задължения се изпълняват от някакво по-високо ниво на системата или от самите приложни програми [13].

Необходимост от планиране възниква, когато: процесът доброволно се откаже от процесора (чака вход/изход или се е изпълнил), системен механизъм блокира изпълнявания процес, блокиран процес става готов, настъпило е прекъсване от интервален таймер. Ако планиращата програма се извиква само в първия случай, това означава, че управлението в значителна степен е възложено на приложните процеси. Ако програмата се извиква във всички случаи, управлението се извършва от системата.

В по-нататъшното изложение се приема, че планиращата програма влиза в състава на ядрото и се извиква във всички гореописани случаи. Въпросите за планиране на процесора са разгледани подробно в гл.VI.

5.1.3. Управление на ресурсите

В гл. IV се запознахме с някои проблеми на разпределението на ресурсите. Ресурсът е многократно използваем обект, който се заема и освобождава от процесите. Този термин се използва както за описание на компонентите на апаратната част, така и за съставните части на програмното осигуряване -програми, данни, буфери и т.н. Съобщенията, изпращани между процесите, също могат да се разглеждат като клас ресурси (понякога наричани потребими ресурси). И двата типа ресурси имат едно общо свойство - процесите се блокират при неудовлетворена заявка за ресурс и могат да се опишат с едни и същи средства.

С всеки клас ресурси са свързани процедури за разпределение и за освобождаване на един или повече елементи на класа. Например памет може да се разпредели и освободи с операциите:

1. Request (размер, начален адрес)



2. Release (размер, начален адрес)

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

Един еднороден механизъм за управление на ресурсите [10, 23] може да се изгради въз основа на семафорите на Дейкстра, като се предвидят четири примитива: създай семафор на ресурс, унищожи семафор на ресурс, разпредели ресурс и освободи ресурс. Двете основни операции над семафора на ресурс -разпредели и освободи, съответстват на операциите Р и V, но тяхната реализация е значително допълнена.

Всеки клас ресурси се представя със семафор. Блокът за управление на семафора включва: идентификация на семафора и родителя му по време на определянето (създаването) на ресурса; описание на ресурса (брой и идентификация на достъпните единици ресурс - например таблица на блоковете памет, списък на буфери или просто един бит, показващ наличие или отсъствие на събитие); опашка от блокирани процеси, очакващи да получат ресурса; адрес на програмата за разпределение на ресурса; допълнително поле (за съхранение на измерителни данни, текущо разпределение на ресурса и др.).

Методите за управление на различните класове ресурси рязко се различават. Някои от ресурсите (процесор, диск) могат да бъдат съвместно използвани от процесите, а други - индивидуално (лента, данни, печатащо устройство), трети - и по двата начина (памет, кодови сегмента). Особено сложно е положението, когато процесите получават ресурси динамично в про-тивоположност на статичното разпределение на ресурсите в момента на създаване на процесите. В повечето ОС всеки клас ресурси притежава определено множество от примитиви. Важен въпрос е взаимодействието между заявките за даден ресурс с оглед на откриване на взаимни блокировки (гл. IV) и оптимизиране на поведението на системата. Методите за управление на ресурсите ще бъдат разгледани в следващите глави.

5.1.4. Поддръжка на входа и изхода

Устройствата се заемат и освобождават за индивидуално или за съвместно използване. Основните операции над устройствата са: четене, запас и управление. За изпълнението на тези три операции ядрото трябва да извърши действията: 1) иницииране на входно-изходните операции, и 2) обработка на прекъсванията по вход/изход, постъпили от канала (устройството) при завършване на операцията или при възникване на грешка.

Заявката към ядрото за изпълнение на входно-изходна операция може да има формата:

Изпълни вход/изход (канал, канална програма)

Нейното провеждане в ядрото може'да се опише със семафори по следния начин:

Р (разпредели [канал])

Старт на входа/изхода (канал, канална програма)

Р(край_на_операция [канал])

V (разпредели [канал])

Първата Р-операция включва извикване на програма за разпределение (планиране) на канала, а втората - очакване на прекъсване при завършване на входно-изходната операция. Това означава, че обработката на прекъсване включва операция V (край_на_операция [канал]).

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

Предполага се, че към всеки канал има включени няколко устройства и параметърът канал включва номер на канал и номер на устройство. Ако всяко устройство има канал (например включено е към мултиплексорния канал) и се използва монополно, не е необходимо планиране.

Детайлите на реализацията зависят от конфигурацията на входно-изходната система и от особеностите на процесора и канала. Например в IBM/370 и ЕС ЕИМ са предвидени специални команди за вход/изход SIO (стартиране на вход/ изход), ТIO (проверка на вход/изход) и НIO (спиране на вход/изход), изпълнявани в привилегирован режим. В адресната част се съдържа номер на канал и номер на устройството. Адресът на каналната програма (CAW - адресната дума) винаги се пази на фиксирано място в паметта и затова тя трябва да се защити със семафор.

Възможен е и друг подход за реализиране на входно-изходните операции. Описаните no-горе функции се реализират чрез процеси за вход/изход [9, 10, 23,52]. За всяко входно-изходно устройство се определя процес, който управлява работата на устройството. Този процес, на който отговаря „зациклена програма", чака в изходна точка съобщение със заявка за операция с дадено устройство, изпратена от друг процес. Входно-изходният процес например анализира заявката, извиква съответните разпределители на канали и контролери, определя каналната програма, стартира входно-изходната операция, анализира прекъсванията по вход/изход, респективно за грешка и накрая изпраща отговор към извикалия го процес. В ядрото се поддържа информация за състоянието на апаратурата, планира се достъпа до нея, извършва се обработката на прекъсванията по вход/изход (на I ниво).

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

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

Работата с файловете наподобява тази с устройствата и файлът може да се разглежда като виртуално устройство. Това подобие е довело в много ОС (например в UNIX) до обединяване в една структура управлението на файловете и устройствата. В тези случаи устройствата се идентифицират със специални имена на файлове.



5.1.4. Поддръжка на входа и изхода

Устройствата се заемат и освобождават за индивидуално или за съвместно използване. Основните операции над устройствата са: четене, запас и управление. За изпълнението на тези три операции ядрото трябва да извърши действията: 1) иницииране на входно-изходните операции, и 2) обработка на прекъсванията по вход/изход, постъпили от канала (устройството) при завършване на операцията или при възникване на грешка.

Заявката към ядрото за изпълнение на входно-изходна операция може да има формата:

Изпълни вход/изход (канал, канална програма)

Нейното провеждане в ядрото може'да се опише със семафори по следния начин:

Р (разпредели [канал])

Старт на входа/изхода (канал, канална програма)

Р(край_на_операция [канал])

V (разпредели [канал])

Първата Р-операция включва извикване на програма за разпределение (планиране) на канала, а втората - очакване на прекъсване при завършване на входно-изходната операция. Това означава, че обработката на прекъсване включва операция V (край_на_операция [канал]).

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

Предполага се, че към всеки канал има включени няколко устройства и параметърът канал включва номер на канал и номер на устройство. Ако всяко устройство има канал (например включено е към мултиплексорния канал) и се използва монополно, не е необходимо планиране.

Детайлите на реализацията зависят от конфигурацията на входно-изходната система и от особеностите на процесора и канала. Например в IBM/370 и ЕС ЕИМ са предвидени специални команди за вход/изход SIO (стартиране на вход/ изход), ТIO (проверка на вход/изход) и НIO (спиране на вход/изход), изпълнявани в привилегирован режим. В адресната част се съдържа номер на канал и номер на устройството. Адресът на каналната програма (CAW - адресната дума) винаги се пази на фиксирано място в паметта и затова тя трябва да се защити със семафор.

Възможен е и друг подход за реализиране на входно-изходните операции. Описаните no-горе функции се реализират чрез процеси за вход/изход [9, 10, 23,52]. За всяко входно-изходно устройство се определя процес, който управлява работата на устройството. Този процес, на който отговаря „зациклена програма", чака в изходна точка съобщение със заявка за операция с дадено устройство, изпратена от друг процес. Входно-изходният процес например анализира заявката, извиква съответните разпределители на канали и контролери, определя каналната програма, стартира входно-изходната операция, анализира прекъсванията по вход/изход, респективно за грешка и накрая изпраща отговор към извикалия го процес. В ядрото се поддържа информация за състоянието на апаратурата, планира се достъпа до нея, извършва се обработката на прекъсванията по вход/изход (на I ниво).

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

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

Работата с файловете наподобява тази с устройствата и файлът може да се разглежда като виртуално устройство. Това подобие е довело в много ОС (например в UNIX) до обединяване в една структура управлението на файловете и устройствата. В тези случаи устройствата се идентифицират със специални имена на файлове.



Защита и сигурност

Термините защита и безопасност место се смесват. За да няма объркване, в изложението се прави разлика между защитата като специфичен вътрешен проблем на ОС относно контролирания достъп до информацията (програми и данни) в компютъра, и безопасността като no-широк и общ проблем, свързан и с външната среда, в която работи компютърът. Безопасността се интересува от запазването на целостта на системата и данните. Все още границата между тях не е добре уточнена.

Най-напред ще бъдат разгледани въпросите на защитата на ОС. Подробности могат да се намерят в [7, 43, 83, 84, 85, 88, 93].

12.1. ЗАЩИТА

Процесите в ОС трябва да бъдат защитени един от друг при тяхната работа с различните ресурси - апаратни (процесор, памет, устройства) и логически (програми, таблици, файлове). Вески ресурс трябва да се използва само от процеси, получили съответни права от ОС. За целта в реалните системи съществуват разнообразии механизми. Например управлението на достъпа до файловете в UNIX позволява на потребителя да определя кой и как да има достъп до неговите файлове. Апаратурата и програмните средства за адресиране на паметта осигуряват изпълнение на процеса само в неговото адресно пространство - например при обръщане към сегмент или страница се проверява в таблицата на сегментите (страниците) за правилност на обръщане от страна на процеса. Входно/изходната система не разрешава на потребителя директно да управлява устройствата и така тя се предпазва от неефективност и възможност за достъп на един потребител към данни на друг. За да не се монополизира процесорът от някои процеси, се използва таймер за прекъсване на изпълнението на текущия процес.

По-нататьк ще бъдат разгледани различните техники, използвани за целите на защитата на обектите в ОС. В тях се прави разграничение между политика (тя решава какво да бъде направено, например чии данни от кого трябва да се защитят) и механизъм (той определя как да бъде направено нещо, как системата налага политиката) [7]. Това разграничение е важно за гьвкавостта. Политиките могат да се променят от време на време или от място на място. В най-лошия случай всяка промяна в политиката ще изисква промяна в съответния механизъм. Общ механизъм е по-желан, тьй като промяна в политиката после би изисквала само модификация на някои системни параметри или таблици. В нашето изложение тежестта пада върху механизмите за защита.

Ролята на защитата в компютърната система е да даде механизъм за налагане на политиките, управляващи използването на ресурсите. Тези политики могат да бъдат установени по различии пътища - някои са фиксирани при проектирането на системата, докато други са формулирани от мениджмънта на системата. Трябва да има и възможност те да се дефинират от индивидуалните потребители за защита на собствените им файлове и програми. Достъпът до средствата за защита от страна на приложния програмист предоставя възможност да бъдат запазени срещу неправилно използване ресурсите, създавани от приложна подсистема.

Не е необходимо да се мотивира нуждата от защита. Очевидна е важността да се осигури това, че всеки програмен компонент, активен в системата, използва системните ресурси само по начините, съвместими с установената политика за потребителите на тези ресурси. В частност, системата трябва да се предпази от умишлено нарушение на ограничения достъп от страна на системния програмист.

Защитата може да повиши надеждността чрез откриване на скрити грешки в интерфейсите между компонентите на подсистемите. Ранна детекция на такива грешки може често да предпази здрави подсистеми от повредени подсистеми. Незащитен ресурс не може да противостой на използването (или неправилно използване) от неавторизиран (неупълномощен) или некомпетентен потребител - системите със защита дават средства за разграничаване на авторизирано и неавторизирано използване на ресурси.



Каталог: 2015
2015 -> Висше военноморско училище „Н. Й. Вапцаров“
2015 -> Правила за изменение и допълнение на Правила за търговия с електрическа енергия Съществуващ текст
2015 -> Наредба за изменение и допълнение на наредба №36 от 2005 Г. За изискванията към козметичните продукти
2015 -> М и н и с т е р с т в о н а з д р а в е о п а з в а н е т о н а р е д б а
2015 -> Примерна тема за IV клас за „преглед на знанията по математика“
2015 -> Наредба №25 от 10 ноември 2008 Г. За условията и реда за пускане в действие на медицински изделия без наличие на условията по чл. 8 От закона за медицинските изделия
2015 -> 10 ноември демократичното начало тогава и сега


Сподели с приятели:
1   2   3   4   5   6   7   8




©obuch.info 2024
отнасят до администрацията

    Начална страница