Професионален Блог

Поредният WordPress блог – що пък не? :P

II. General OS

II. General OS
1. Управление на процесите

 

Процесът като такъв има няколко определения, но основното е “програма в процес на изпълнение”.

Стъпките при които дадена програма се превръща в процес са:

– програмата е представена като последователност от оператори на някой език за програмиране от високо ниво и се съхранява под формата на файл.

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

–  инструкциите на програмата са заредени в паметта, като същевременно е заделена памет и за променливите.

– програмата става процес, който до завършването си преминава през различни състояния

 

Първоначално операционните системи са можели да обработват само по един процес – стартира се дадена програма/процес и той се обработва докато не завърши неговото изпълнение.

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

Процеса преминава през различни състояния до края на неговата обработка като най-общо те са три:

– Изпълняван (running) – процеса се изпълнява

– Готов (ready) – процеса очаква централния процесор да се освободи за да започне неговото обработване.

– Блокиран (blocked) – процесът изчаква настъпването на определено събитие. Примерно – край на входно/изходна операция.

Всяка една ОС поддържа списък с блокираните и готовите процеси, като обикновено ОС задава приоритет на всеки един процес.

ОС извършва следните преходни процеси:

 

Пускане – готов –> изпълняван:

управлява се от scheduler, който когато процесора се освободи поради завършване на даден процес, scheduler избира някой от готовите процеси и започва да го изпълнява

 

Прекъсване – изпълняван –> готов:

управлява се от scheduler, който когато реши, че даден процес се е изпълнявал достатъчно дълго, променя неговия статус на готов.

 

Блокиране – изпълняван –> блокиран:

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

 

Пробуждане – блокиран –> готов:

това състояние се осъществява когато настъпи събитието, което процеса чака.

 

Горното показва опростен вариант на състоянията на даден процес.

 

В UNIX и Linux процесите се създават от системната променлива – fork, като при тях за определение на “процес” често се използва – обект, който се създава от fork.

В unix/linux един процес може да има няколко под процеса, като всеки под процес може да има друг под процес. Всеки процес има уникален индетификатор (PID), който не се променя през целия живот на процеса.

 

– междупроцесна комуникация – Inter-process communication (IPC) сбор от методи за обмен на информация между няколко процеса. Процесите може да са стартирани на една машина или на повече машини свързани чрез мрежа.  IPC методите се делят на методи за обмяна на съобщения, синхронизация, споделяне на памет и отдалечно процесурно извикване.

 

2. Прекъсвания

 

Прекъсванията се използват при съвременните ОС примерно при асинхронно изпълнение на програми.

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

 

При прекъсване трябва да се съхрани текущото състояние на процеса (момента до който е стигнало неговото изпълнение), което се осъществява от ОС, след което се извиква програмата за обслужване на прекъсванията (scheduler). Същата тази програма се грижи и за това, даден процес да продължи обработката си от процесора след като е бил прекъснат.

 

Има пет основни типа прекъсвания:

– прекъсване по машинна грешка:

предизвиква се от самия хардуер (хардуерно прекъсване)

 

– входно/изходно прекъсване:

може да се предизвика от външен контролер при край на входно/изходна операция.

 

– програмно прекъсване:

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

 

– външно прекъсване::

прекъсване предизвикано извън процесора като на пример бутона за рестартиране на компютъра

 

– изкуствено прекъсване:

това са прекъсвания оказани в програмния код.

 

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

3. Управление на паметта

 

Управлението на паметта на компютъра има за цел да разпредели паметта между потребителските процеси и основните процеси за дадена ОС.

Преди дадена програма да започне да се изпълнява, тя първо трябва да бъде заредена в паметта, като в зависимост от Операционната система е възможно в паметта да бъдат разположени само отделни части от програмата.

Етапите на зареждане са – компилация, свързване и зареждане.

 

Има два вида разпределяне на паметта:

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

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

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

 

– динамично – динамично се заделя памет за програмите по време на тяхното изпълнение. Количеството памет зависи от това колко памет е необходима в даден момент за изпълнението на дадена програма. Абсолютните адреси се определят динамично и непосредствено преди всяко обръщане към паметта, което позволява областа на дадена програма да се разширява, свива и премества по време на нейното изпълнение.

 

Преместванията може да се осъществят по няколко начина:

– чрез апаратни средства на процесора за преадресация на програмите

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

 

Swapping (Размяна) – идеята на swapping е да се пести физическата системна памет, като за целта, процеси които в момента не се използват да бъдат съхранени и  изместени от ОС към тъй наречения swap дял.

 

Виртуална памет – за симулиране на по-голямо количество системна памет се използва тъй наречената “Виртуална памет” която се намира на предварително определена област от външната памет. Връзката между системната и виртуалната памет се осъществява от ОС заедно с определени апаратни компоненти.

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

 

– критична секция – по време на обработване на процесите е възможно няколко процеса да изисвакт достъп до общи (споделени) данни. Всеки един процес има участък от кода, в който работи с общите за всички процеси данни. Този участък се нарича “критична секция”, като във всеки един момент само един процес може да се намира в критична секция.

4. Файлова система

 

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

Файлът е организирана съвкупност от данни, за която е дадено име. Той трябва да може да се отваря, затваря, създава, изтрива, копира, преименува и извежда.

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

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

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

Файловете върху дисковете винаги се обединяват в директории(каталози или папки), като образуват няколко отделни дървета (DOS/Windows) или са обединени в едно дърво (Linux/Unix подобни).

5. Драйвери за устройства

 

Драйверите са програми на много високо ниво, които позволяват на компютърните програми да взаимодействат с хардуерните устройства чрез шината на дъното.

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

Всеки драйвер се разработва за конкретно устройство и за конкретна ОС.

Драйвера опростява програмирането, тъй като действа като преводач между хардуерното устройство и операционната система.

6. Мрежа

 

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

Съществуват три вида мрежи:

– Локални мрежи (Local Area Network – LAN) – мрежа която свързва компютрите и устройствата в ограничена географска зона като училища, лаборатории, офис сгради, и т.н.

– Международни мрежи (Wide Area Network – WAN) – мрежа с голям обхват, като често обединяват много LAN мрежи.

– Глобални мрежи (Global Area Network – GAN)

 

Има няколко основни начина (мрежови топологии) за връзка между устройствата:

– линейна шина – всички възли са свързани с общ предавателен проводник, който има две крайни точки

– звезда – всички възли в мрежата са свързани към общ (централен) възел

– пръстен – всеки един възел в мрежата с вързан с други два възела, като първия и последния са взаимно свързани.

– хиперкуб – всеки от възлите в мрежата е свързан до всеки от другите възли в мрежата чрез ‘point to point’ връзка, което дава възможност едновременно да се предават данни от даден възел до всички останали.

 

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

Според предназначението си има разработени различни протоколи.

Малък пример за такива протоколи са:

– http/https (hypertext transfer protocol) – за зареждане на web страници, сваляне на данни/

– FTP (File Transfer Protocol) – за трансфер на данни

– SMPT (Simple Mail Transfer Protocol) – за изпращане на електронна поща

6.1. Мрежови слоеве -> OSI model

 

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

 

Application Приложен слой layer 7

Presentation Представителен слой layer 6

Session Сесиен слой layer 5

Transport Транспортен слой layer 4

Network Мрежови слой layer 3

DataLink Канален слой layer 2

Physical Физически слой layer 1

 

– Приложен слой – най-горния слой от OSI модела, който се отнася за програмите.

Позволява на потребителските приложения да заявяват услуги или информация, а на сървър приложенията – да се регистрират и предоставят услуги в мрежата.

 

– Представителен слой – определя използвания формат за обмен на данните.

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

 

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

 

– транспортен слой – осигурява допълнително ниво за връзка под сесийния слой.

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

Осигурява контрол на потока и обработка на грешки при преноса.

 

– Мрежови слой – отговаря за адресирането на пакетите и определянето на маршрута по който да преминат данните от източника до получателя.

Следи за проблеми при трафика.

 

– канален слой – изпраща и приема кадри (frames) и ги адресира.

Преди предаването на всеки пакет в този слой се добавят хедър в началото и трейлър в края, като по този начин се превъща в кадър. Хедъри се прибавят и в мрежовия и транспортния слой, но трейлър се добавя само в каналния слой.  Самия слой се разделя на два подслоя – LLC и MAC.

LLC – добавя контролна информация, служеща за правилното транспортиране на данните.

MAC –  осигурява достъп до преносната среда

Някои от основните характеристики на слоя са контрол на достъпа до преносната среда, добавяне на хардуерни (MAC) адреси на източника и местоназначението, подготвяне на пакетите за предаване, изчисляване на контролната сума на кадъра (FCS), както и кодирането на електрическите, светлинните или електромагнитните импулси в преносната среда. При предаване на данни изпращащите устройства изпълняват алгоритъм за циклична проверка с остатък (CRC) или контрол на последователността на данните (FCS), като записват получената стойност в трейлъра на кадъра. Получателя изпълнява същия алгоритъм и сверява стойностите, като по тази начин се установява дали кадърът се е повредил по време на преноса. Кадрите, които не са се получили или са повредени се изпращат повторно.

– Физически слой – най-доллния слой от OSI модела, който работи само с единици и нули. Ролята му е да приеме данните от каналния слой и да предаде потока от битове от мрежовата карта към кабела. Също така определя типа на връзка между мрежовата карта и кабела, както и техниката на предаване на информация по мрежата.

 

TCP/IP модел за комуникация между компютрите, който се използва в Internet и в почти всички съвременни компютърни мрежи. Състои се от много протоколи, но основни са TCP (Transmission Control Protocol) и IP (Internet Protocol).

В TCP/IP информацията се пренася под формата на пакети, като всеки пакет се състои от хедър и данни.

Състои се от четири слоя:

– Физически – отговаря за физическото пренасяне на електрически сиграли.

– Интернет – отговаря за достигането на пакетите до желаното място.

– Транспортен – отговаря за начина на транспортиране на информацията, като обикновенно тя се разделя на няколко по-малки части за да може да се пренесе по мрежата.

– Приложен слой – отговаря за съхранението на информацията

 

7.Сигурност (Process/Memory protection)

 

x86 процесорите имат два режима на работа – реален и защитен.

Процесора влиза в реален режим в момента в който бъде стартиран компютъра.

При реален режим адресираната памет е 1MB и няма апаратна защита до паметта.

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

 

Защитен режим при x86 процесорите e режим на работа при който адресната памет е 4GB, има странициране и сегментиране на паметта, както и апаратна зашита на достъпа до паметта и входно/изходното пространство. Почти всички съвременни ОС работещи върху x86 архитектурата, работят главно в защитен режим.

В защитен режим всички регистри стават 32-битови и имената им се образуват с префикс от “E” и името на съответния 16бит регистър.

Защитния режим има няколко възможности създадени за засилване контрола на операционната система над софруерните приложения с цел повишаване сигурността и стабилността на системата.

– Нива на достъп

В режим на сигурност има 4 нива/пръстена на достъп (от 0 до 3).

Ниво нула има най-много привилегии, а ниво 3 – най-малко. В повечето среди, операционната система (ядрото) и някой драйвъри се намират в ниво 0, а останалите програми – в ниво 3.

 

Защита на паметта е начин на контрол достъпа до паметта на компютъра и е част от повечето модерни операционни системи. Основната цел е да не позволят процеси, за които не е заделена определа част от паметта, да я достъпват.

 

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

 

– сегментиране на паметта – в защитен режим, сегментирането се използва за осигуряване апаратна зашита на паметта от непозволен достъп. Началния адрес, размерът и другите атрибути на сегментите се записват в така наречените “сегментни дескриптори”, които от своя страна са подредени в таблица в паметта – дескрипторна таблица. Във всеки един момент трябва да има две или повече дескрипторни таблици. Основните две са глобална (GDT), която е еднаква за всеки един процес  и локална (LDT), която е различна за различните процеси. Адресите на двете таблици се зареждат в специални 32битови регистри.

Всеки сегмент има като атрибут “ниво на достъп (цяло число в интервала от 0 до 3)”.

Обикновено ОС работи на ниво 0, а потребителските програми на ниво 3. Останалите нива не се използват при повечето ОС.

  • От дадено ниво на превилигированост може да се достъпват данни само в същото ниво или в по-малко превилигировано ниво.

  • От дадени ниво на привилегированост може да се викат подпрограми и да се предава управлението само в същото ниво или в по-привилигировано ниво.

 

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

 

– странициране на паметта – чрез странициране, системния софтуер може да ограничи и контролира достъпа до страниците, които в същност са секции от паметта.

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

8. Входно изходна система I/O

 

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

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

Линиите в системната шина се делят на три групи – адресни шини, информационна шина и управляваща шина.

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

По информационната шина се предава информация между устройсвото и процесора.

Централния процесор използва управляващата шина за да подава управленчески сигнали към външното устройство. Тази шина се използва и от устройството, когато то иска да изпрати заявка към процесора.

 

Вашият коментар