- Цели на операционните системи
- Структура на операционните системи
- Отговорности на ядрото
- Управление на процесите (Process Management)
- Управление на паметта (Memory Managment)
- Управление на входно-изходните устройства (I/O Management)
- Управление на външно-запаметяващите устройства (Storage Management)
- Имплементация на защитна сигурност (Security)
- Многозадачност
- Модерните операционни системи трябва да позволяват паралелното изпълнение на програми.
- Обработката на инструкции от централния процесор, обаче, е последователна.
- Илюзията за многозадачност (паралелно изпълнение) се постига чрез използване на таймери, които генерират прекъсвания на определено време (интервал).
- Прекъсвания сменят процеса (задачата), която се изпълнява от процесора. Това се нарича времеделние.
- Процесите изпълняващи се на един процесор се сменят на много кратко време, в зависимост от приоритета им, като времеделението се извършва чрез таймери, които генерират прекъсвания на определено време (интервал).
- В днешно време, процесорите често имат по няколко ядра, които могат да изпълняват задачи едновременно (може да ги разглеждаме като няколко процесора в една компютърна система).
- Върху всяко ядро се реализира времеделение.
- Многопотребителност
- Компютрите много често се използват от няколко потребители.
- Многопотребителността е способността на операционната система да поддържа различни (множество) потребители.
Операционната система може да се раздели на две части:
-
Ядро (Kernel)
- Най-ниското ниво на една операционна система
- Отговаря за управлението на различните части на една компютърна система - т.е. директно управлява хардуера
- Това е единственият компонент, който може да работи в привилегиран режим (privileged mode) на процесора (виж Тема 1., т.8).
- Ядрото съдържа всички драйвери за устройствата (софтуер за оправляване на устройствата), които се намират в компютърната система.
- Ядрото предоставя и функции, наречени системни повиквания (на англ. system calls или на кратко sys-calls), които могат да се извикват от потребителските програми или от други части на операционната система. Някои типове системни функции са следните:
- Функции за управление на процесите –
fork()
,waitpid()
,execvpe()
,exit()
, т.н. - Функции за работа с файлове –
open()
,close()
,read()
,write()
,lseek()
, т.н. - Работа с файловата система –
stat()
,mkdir()
,rmdir()
,link()
,unlink()
,mount()
,umount()
,chmod()
. - и други.
- Функции за управление на процесите –
-
Обвивка (Shell)
- Командния интерпретатор е набор от приложни програми, които комуникират с ядрото чрез системни извиквания.
- Предоставя среда и интерфейс за улеснена работа с операционната, както на хора, така и на други приложни програми.
- Това е видимият потребителски интерфейс на операционната система.
- Обикновено се зарежда върху нея и предлага на потребителите команди, които им осигуряват достъпа до операционната система - примерно както GNU+Linux са неразделни части на една цяла система - GNU - shell, Linux - kernel.
Понеже ядрото седи между обвивката и хардуера на компютърната система, то следи и отговаря за следните аспекти на компютърната система:
- Управление на процесите (Process Management)
- Управление на паметта (Memory Management)
- Управление на входно-изходните устройства (I/O Management)
- Управление на външно-запаметяващите устройства (Storage Management)
- Имплементация на защитна сигурност (Security)
- Процесът е програма по време на нейното изпълнение.
- Процесът изпълнява инструкциите на програмата една по една.
- След последната инструкция, процесът се терминира.
- От една програма може да има множество процеси, които може да се изпълняват едновременно или един след друг. Но във всеки един момент всеки един процес може да изпълнява точно една програма.
- Всеки процес има едно от следните състояния:
- Нов (New)
- Готов (Ready)
- Изпълняващ се (Running)
- Блокиран (Waiting)
-
От Нов става на Готов (Ready), което означава готов е за изпълнение, т.е. след като ОС напълно го е инициализирала. Сега процесът чака да в опашката на готовите процеси, за да може да се изпълни.
-
От готов може да отиде на Изпълняващ се (Running) , т.е. изпълнява се в момента, когато операционната система прецени да му даде процесорно време.
-
От готов един процес може да отиде в Блокиран (Blocked) режим, понеже не се нуждае от процесорно време - примерно чака вход от потребителя, да приключи IO операция, т.н.
-
Процесът може да отиде от Изпълняващ се (Running) в Готов (Ready), когато операционната система реши да даде процесорно време на друг процес. Затова е необходимо да се осъществи context switching между процесите - за да може да се продължи работата на процеса, когато ОС отново прецени да му задели процесорно време.
-
Когато изпълнението на един процес се прекрати той става ТЕРМИНИРАН.
-
Операционната система предоставя механизми за синхронизация и комуникация между процесите.
- Комуникация – да се прехвърлят данни между процесите.
- Синхронизация между процесите.
-
Всеки процес има идентификационен номер -
pid
, който е положително число. -
От процес (нека го наречем
P1
), нов процес се създава чрез системното извикванеfork()
. Новият процес (P2
) е идентично копие на настоящия.P1
се нарича родител наP2
. Това значи, че процесите имат дървовидна структура. -
Програмата, която изпълнява процес, може да се смени чрез system call от фамилията
exec
- т.е. сexecl
,execvp
, тн.. -
Със стартирането на операционната система се стартира и инициализиращ (
init
) процес, от когото се fork-ват всички останали процеси и техните деца. -
Процес може да се терминира чрез
kill
командата последвана сpid
на процеса. -
Ако се терминира процес, стандартното поведение е да не се терминират децата му. Вместо това, при терминирането на родителски процес, на децата се назначава нов родител -
init
процеса.
- RAM паметта представлява огромен масив от байтове, който е енергозависим.
- Операционната система се грижи всички процеси да имат заделена памет, в която да се съдържат инструкциите им и данните им. Съответно, когато са в оперативната памет, те могат да се предадат и на процесора.
- Резултатите на операциите, извършени от процесора също се записват в RAM паметта.
- Ядрото има следните 3 функции, когато работи с оперативната памет:
- да заделя и освобождава оперативната памет, когато е нужно
- да следи кои части от паметта собственост на кои процеси са
- да решава кои данни и процеси трябва да са в RAM паметта
-
Драйверите определят как операционната система да запише/прочете и разбере байтовете от I/O устройствата. Затова всяко устройство има драйвер – програма, която знае как да работи с даден модел устройство.
-
Ядрото предоставя единен интерфейс (конвенция, набор от правила, начин на работа), който е част от самото ядро, за работа с типове устройства. Устройства не знаят за съществуването на този интерфейс.
-
Драйверите са посредника между устройствата и интерфейса. Работа с I/O устройства се изпълнява с инструкции, които не могат да бъдат изпълнени в непривилегирован режим. Само ОС може да работи с хардуерната система директно.
-
Ядро
<->интерфейс
<->драйвер буфер + устройство
-
Операционната система управа буфера на това устройство. Не взима тази информация моментално и затова ядрото управлява тези буфери. Входно-изходната система също така кешира тази информация – в кеш, рам, регистър, тъй като буферите на входно-изходните устройства са много бавни.
-
Spooling е концепция, методология, идея, при която се разделя работата на входно-изходното устройство на малки части заради хардуерни лимитации. Проблемът с I/O устройствата е, че буферът е с изключително малък и ограничен размер. За това се запълва постоянно буфера, като работата се разделя на малки части. Това съществува, поради хардуерните лимитации на малките и бавни входно-изходни устройства.
-
Пример за това биват принтерът и голям файл, който искаме да принтеме. Принтерът може да има буфер от 10MB, докато ние искаме да принтиме 100MB. Тогава ядрото се грижи да раздели заданието ни на 10 части и да ги принтира по една част на всяка итерация.
-
Устройства за съхранение на данни са вид IO устройства.
-
Използват, тъй като искаме данните да оцелеят при спиране на системата, както тези, които не се побират за RAM паметта.
-
Хардуерните устройства се различават по скорост, обем и начин на работа. Целта на ядрото е да скрие тези различия. Затова операционната система създава се концепцията за файл, за да ни е по-лесно.
-
Файл
-
При управлението на външно-запаметяващите устройства от ядрото, файлът е създаден като абстракция, илюзия, лъжа, създадена за да се улесни работата с данни.
-
Файлът представлява поредица от байтове на storage устройството, която бива интерпретирана по определен начин в зависимост от файловата система.
-
-
Файлова система
-
Файловата система също е абстракция за организирането на байтовете. Структуриране на байтове, директории, файлове, права за достъп до тези директории, организация и т.н. Целта на директориите е организираност.
-
Файловата система позволява на потребителите да създават, изтриват, четат, пишат, преименуват, местят файлове и директории. Но това зависи дали имаме права за това. Правата са разделени на 3 групи:
- Потребителски права
- Групови права
- Други права
-
Файловата система ни дава възможност да създаваме, изтриваме, преименуваме, променяме, копираме файлове и директории, но там само където имаме права.
-
-
Ядрото реализира две абстракции - файл и файлова система, които позволяват да се управляват външни запаметяващи устройства. Операционната система може да създава, трие, мести, променя съдържание, да променя правата за достъп.
Oперационната система предоставя защита, която представлява механизъм, който контролира достъпа на потребителите и процесите. Като се разделя на 2 части:
-
Хардуерна защита
- Съществуването на привилегирован и непривилегирования режим на процесора, който има само изключително малък набор от инструкции
- Операционната система се намира в RAM паметта – тя е защитена на хардуерно и софтуерно ниво. На хардуерно ниво е посочено на това кои байтове мое да се достъпват от неприлегирования и от привилегирования режим. - Има регистри, които определят тези адреси – BASE, LIMIT
- Таймерите на процесора също са защита – генерира се прекъсване, за да се прекрати работното време на процес върху процесора
- Работата с ви устройства не може да се изпълняват в неприлегирования използва на ядрото - ядрото служи като посредник между потребителските процеси и хардура
-
Софтуерна защита -Само ядрото работи в привилегирован режим
- Правилата за достъп на файловата система за всеки потребител
- Всеки процес се асоциира с определено парче памет
- Ядрото е разделено на няколко слоя с различни привилегии