Oперационни системи- лекции


Категория на документа: Информатика


Лекции по операционни системи

1. Функции и структура на операционните системи.

Една компютърна система има слоеста структура. Смисълът е, че всеки слой осигурява функции или операции чрез които този слой комуникира с по-горния слой. Най-общата схема на една компютърна система е следната:
командни интерпретатори
обслужващи програми програми на системния администратор системи за програмиране
ОС – ядро
хардуер

Хардуерът осигурява машинни команди за управление на системата. Неудобното при тези команди е, че са примитивни и прекалено неудобни за програмиране.
ОС-ядрото е първият софтуерен слой. Този слой реализира операции непонятни за хардуера. Обръщенията към ядрото на операционната система се наричат системни примитиви (system calls). Те обуславят интерфейса на ОС-ядрото. Наричат се примитиви, тъй като са на
най-ниско ниво в операционната система.
Следващият слой е от четири части, които са неразличими за ОС-ядрото. Първите три слоя се различават по кръга от потребители, които ги използват.
Обслужващите програми са предназначени за обикновените потребители – например текстови редактори, програми за обработка на файлове и др.
Програмите на системния администратор осигуряват средства за настройка и проверка на състоянието на операционната система.
Системите за програмиране са инструменти за създаване на софтуер – среди за програмиране, свързващи редактори и др.
Командният интерпретатор е свързващо звено в слоя – той реализира диалога с потребителя. Той приема и изпълнява заявки от потребителя, като в необходимите случаи се обръща към останалите три компоненти на слоя. Интерфейсът за комуникацията между командния интерпретатор и потребителя се осигурява с команден език.
Ядрото е основата на една операционна система. Чрез него се реализира най-горният слой.
Слоестата структура не е толкова добре изразена в старите операционни системи (например OS/360), за разлика от по-новите. В UNIX компютърните интерпретатори се наричат shell – смисълът е, че тези интерпретатори са обвивка на ядрото в синхрон с добре изразената слоеста структура. Обикновено ядрото заедно с хардуера се наричат разширена (виртуална) машина.
Ядрото трябва да изпълнява две групи функции. Първо, то трябва да реализира системните примитиви – да осигури удобен потребителски интерфейс. Всички извиквания на системни примитиви се осъществяват от език на програмиране от ниско ниво (Assembler) или от високо ниво (C). На високо ниво системните примитиви не се различават съществено от функциите. В програмирането на Assembler зад системните примитиви стои прекъсване. Второ, ядрото трябва да управлява физическите ресурси на компютърната система. Една сериозна операционна система е многопотребителска – това означава, че тя осигурява едновременен достъп на много потребители до системата. Това налага разпределяне на ресурсите между потребителите, които се конкурират за достъп до системата. Самите ресурси са физически различни и се управляват по различен начин. Ресурсите се различават и по възможността за съвместно използване от много потребители. Според тази възможност те се делят на:
- общи ресурси (shared) – в един и същи момент те могат да се използват от различни потребители (например оперативната памет);
- преразпределяни ресурси – в даден момент те могат да се използват само от един потребител, но е възможно насилствено да се преразпределят към друг потребител (например централният процесор);
- монополно използвани ресурси – те се предоставят за монополно използване на един потребител, като не е възможно насилствено преразпределяне – потребителят освобождава ресурса когато приключи използването му (например принтери, магнитни ленти);
На логическо ниво ядрото трябва да управлява по различен начин горните три типа ресурси.

Първата основна тема e управление на процеси или още управление на централния процесор. Процес (process) е програма в хода на нейното изпълнение или още дейността на централния процесор, когато той изпълнява определена програма. Във връзка с понятието процес се използват и други понятия. Задача (task) е синоним на процес.
Задание (job) в по-старите операционни системи означава група от задачи, в термините на операционната система LINUX означава група процеси. Нишка (thread) e част от процес, т.е. един процес се състои от няколко нишки.

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

Третата основна тема е управление на входно-изходните устройства. Ядрото трябва да осигури удобни операции за вход и изход за най-горния слой в операционната система. Управлението на входно-изходните устройства се осъществява чрез модули, наречени драйвери. Задачата на драйверите е да скрият физическите особености на входно-изходните устройства и да създадат абстрактни устройства. Основавайки се на драйверите се определя файлова система, която осигурява унифицирани операции за вход и изход.
Ядрото на една операционна система включва стотици, дори хиляди модули. Съвременните операционни системи са написани най-вече на езици от високо ниво – например LINUX е писан на C. Съществуват два подхода за структуриране на ядрото:
- монолитна структура – ядрото представлява един изпълним файл, който съдържа всички модули – всеки един модул има строго определен интерфейс – например в UNIX и LINUX;
- йерархична (слоеста) структура – ядрото се разделя на слоеве, като всеки слой осигурява операции, чрез които по-горният слой се обръща към него – например в MINIX. По-подробно ядрото на MINIX се структурира по следния начин:
file system memory manager
disk task tty (terminal) task clock task ...
управление на процесите

Най-долният слой управление на процесите изгражда абстрактният процес и осигурява механизъм за комуникация между различните процеси – той работи по същия начин както ядрото на UNIX.
Следващият слой представлява различни входно-изходни задачи за всяка от които има определен драйвер, който се изпълнява като отделен процес. Под terminal се разбира например монитор или клавиатура.
Чрез по-горния слой се реализират системните примитиви. Частта file system реализира системни примитиви с файлове, а останалите системни примитиви се реализират от memory manager.
Основната идея при такова разслояване е част от функциите да се изнесат извън ядрото на операционната система и да се реализират като независими процеси.

Една класификация на операционните системи беше спомената по-горе:
- еднопотребителски – може да се използват само от един потребител;
- многопотребителски – може да се използват едновременно от няколко потребители.
Друга класификация е следната:
- еднопроцесни – в даден момент ядрото поддържа работата само на един процес;
- многопроцесни – ядрото поддържа в един момент работата на няколко процеса - един потребител може да изпълнява няколко процеса в даден момент.
Естествено многопотребителските операционни системи трябва да са многопроцесни.



Сподели линка с приятел:





Яндекс.Метрика
Oперационни системи- лекции 9 out of 10 based on 2 ratings. 2 user reviews.