Компютърна система hardware software 1

Posted in


Системен софтуер - основни характеристики, класификация
В началото работата с електронни машини е билa тежка и неефективна - без операционни системи и почти никакъв друг системен софтуер. Програмистите и инженерите са управлявали сами ресурсите на изчислителната система.
В първите години, обаче, е имало и едно предимство за потребителя-програмист - той е бил сам с електронната машина (компютъра). Разбира се, нямало е как и да бъде другояче и това дори не се е осъзнавало като предимство. С развитието на системният софтуер, на монополният режим на работа много скоро (относително скоро) се е сложил край - скъпите ресурси започнали да се използват едновременно от няколко (по-късно и много) потребители. Всяка операционна система за големи електронно-изчислителни машини (mainframes) вече работела в многопрограмен режим. В повечето случаи за отделният потребител това не е бил добър вариант, но за всички заедно и за цялата система е било печелившо решение. Всички сериозни публикации за операционни системи от 70-те и 80-те години включват мултипрограмирането като основна тема. Въобще мултипрограмният режим е бил естествено присъщ и включен в ядрото на всяка операционна система от това време. Колкото по-мощни са ставали изчислителните системи, толкова по-малко потребителят е усещал недостатъците на едновременната работа, като забавяне и блокиране - работата на системата е ставала все по-прозрачна за него.
Така, след много хардуер и софтуер се създават персоналните компютри, при които, както личи и от името им, отново се възстановява същото предимство - потребителят да е сам с компютъра. И отново същият кръг се завърта - мощно развитие на хардуера и създаване, макар и с естествено закъснение, на съответен системен софтуер, който в началото има само мултипрограмни белези, а след това се създадоха истински мултипрограмни системи за микрокомпютри.
Системният софтуер се е развивал по две основни линии:
 Mаксимално използване на изчислителните ресурси, които предоставя хардуера
 Oсигуряване независимост на софтуера от хардуера (на програмите от машината)
Софтуерът (програмното осигуряване) се дели на две големи групи: системен и приложен софтуер.
Една примерна класификация на системния софтуер изглежда така:
1. Системни управляващи програми – основно това са операционните системи (ОС)
2. Системни програми за развитие на софтуер – това са системните програми за създаване на програми. Включват инструментариума на програмистите – езици за програмиране и транслатори (компилатори и интерпретатори) за тях, редактори на код, свързващи редактори (линкери), програми за тестване (дебъгери), програми за оптимизация на код и др.
3. Системни поддържащи програми – помощни програми (utilities), които добавят, разширяват или заместват функции на операционната система, антивирусни програми, програми за защита и др.
4. Мрежов и комуникационен софтуер
Горната класификация е претърпяла редица изменения през годините. Например, колкото „по-слаба” е била една операционна система, толкова по-съществена роля са имали помощните програми, сега компонентите на софтуера за развитие са интегрирани в общи среди за програмиране, а съвременните операционни системи съвсем „логично” интегрират мрежовия и комуникационен софтуер в себе си.
________________________________________
Етапи на създаване на програма. Класическа схема и съвременни програмни среди
________________________________________
Операционни системи (ОС). Основни понятия, мултипрограмен режим
Класическо определение за операционна система: система от програми за управление на устройствата на компютъра и осигуряване на връзката на потребителя с компютъра.
Първата част от това определение в съвременната терминология се покрива от програми, наречени драйвери, а втората - от програмите, реализиращи потребителския интерфейс. Тези две нива на управление в операционната система се свързват чрез поне още едно ниво - ниво на преобразуване на заявките на потребителите, включващи абстракции като команди, програми, файлове, в заявки към драйверното ниво. В определението, обаче, не са съобщени важни характеристики на ОС като управление на мултипрограмния режим и виртуализацията на ресурсите.
Най-важните системни функции са организирани като ядро на ОС. По време на работа на компютъра, ядрото се намира постоянно заредено в оперативната памет. Мултипрограмният режим на работа и виртуализацията се реализират именно в ядрото на операционната система. Образно казано, ядрото на ОС без горните два компонента изглежда доста “рехаво”, докато ядрото на ОС с тях е много “плътно” и с голяма маса. От друга страна системите без мултипрограмиране и виртуализация са много по-лесни за работа и обслужване, тъй като “мислят за малко неща” и за работата само на един потребител. Пример за такава операционна система е ДОС за персонални компютри - особено докато покриваше възможностите на хардуера - тя беше най-лесната ОС за широкия потребител и съответстваше на революционната достъпност на PC.
Мултипрограмен режим
Мултипрограмният режим представлява едновременна работа на няколко програми под управлението на операционната система. Исторически погледнато, важна предпоставка за реализацията на този режим е било създаването на устройства, наречени тогава входно/изходни канали. Каналът (или още входно/изходен процесор, входно-изходна шина) е специализирано устройство със собствена памет, което изпълнява собствени команди и програми (т. нар. канални команди) паралелно с централният процесор, който може да е зает с друга програма. Втората важна предпоставка за мултипрограмният режим е наличието на развита и добре управлявана система за обработка на прекъсванията. Прекъсванията са схемно реализиран механизъм за комуникация между периферните устройства и програмите с операционната система. Според основната концепция, прекъсванията биват пет типа:
 входно/изходни
 SVC (Superisor Call)
 програмни
 външни
 схемни.
Мултипрограмният режим се реализира по следният начин:
 няколко програми са заредени в оперативната памет, като на една от тях операционната система предоставя процесора за изпълнение
 състоянието на изпълняваната програма се отразява (записва) в специален регистър (памет), наречен текуща «Дума за състояние на програмата» (Program Status Word, PSW). В нея, заедно с многото друга информация, в даден момент е записан адреса на следващата за изпълнение инструкция. Този адрес е необходим за вярното продължение на работата на програмите след прекъсване. В PSW има много важен бит - бит за състояние. Двете му възможни стойности са - състояние „задача” (потребителско състояние) и състояние „управление” (супервайзор).
 когато изпълняващата се програма издаде заявка за входно/изходна операция се получава едноименно прекъсване. Операционната система реагира като запомня текущата PSW и инициализира изпълнението на входно/изходна канална програма, като каналът се заема с нейното изпълнение. ОС предоставя управлението на централният процесор на друга програма.
 след завършване на входно/изходната операция се получава обратен сигнал и операционната система възобновява изпълнението на прекъснатата програма след точката на прекъсване. За целта, като текуща дума се записва запомнената "стара" PSW на съответната програма и управлението се предава на инструкцията, намираща се на указания като следващ адрес в нея.
Така мултипрограмният режим от едновременна работа на няколко програми се свежда до едновременна работа на централният процесор и входно/изходните устройства.
________________________________________
Операционни системи. Управление на процесите. Понятията процес, задача, нишка. Модел на операционна система
Паралелната работа на централният процесор и периферните устройства се отразява на самата операционната система. Понятието “процес” е удобен модел за изясняване какво става вътре в ОС при работа в мултипрограмен режим. В този смисъл процесът е формализация на идеята за независима работа.
По принцип ОС могат да изпълняват множество работи (задачи), които се придвижват напред почти незабележимо. Всяка задача (task) можем да определим като единица независима работа, която се състезава за ресурсите на изчислителната система. Задачата е програмно-организационната рамка, в която протича даден процес и се свързва (програмира) с таблица, наречена блок за управление на задачите (Task Control Block, TCB).
По-абстрактно погледнато, процесите представляват последователност от промени на състоянията на процесора при изпълнение на задачите. Всяко състояние представлява нещо като “моментна снимка” на процесора. Донован определя процесът още като “треактория” на процесора, изпълняващ някаква съвкупност от програми.
Различни автори определят като еквивалентни понятията процес и задача. Докато в някои операционни системи понятието процес е по-теоретично, в други, като UNIX се борави по-свободно и на практическо ниво с понятието процес - това при тях е изпълняваща се програма. Изпълнимите файлове на диска съхраняват последователност от машинни инструкции (процесорни команди) и представляват т.нар. пасивни единици. След зареждането им в паметта за изпълнение, се превръщат в активни единици – това са програми в действие, наречени още процеси, които постоянно се променят при изпълнение на машинните инструкции.
Microsoft добави към темата понятието нишка (thread), която определя като единица код, който се състезава за ресурсите на компютърната система и се изпълнява конкурентно с други нишки. От един процес могат да бъдат генерирани (“изтеглени”) една или повече нишки . От това следва и многонишковото изпълнение на програмния код, дори на една програма, като във връзка с това възниква важния въпрос за синхронизация на изпълнението на отделните нишки.
По принцип от една и съща програма могат да се генерират няколко едновременно изпълняващи се задачи - това трябва да бъде предвидено и програмирано още на ниво първичен код. В съвременните системи това се нарича многонишковост.
Като обобщение можем да приемем понятията многопрограмен и многозадачен, както и (преведените) мултипрограмен и мултизадачен (multitasking) като синоними, означаващи едновременна работа на няколко програми, като и трите понятия процес, задача и нишка, че означават изпълняваща се програма. Въпреки това трябва да си представяме, че в хода на изпълнението на програмите се генерират и обособяват като отделни единици множество различни задачи.
Изчислителната (компютърната) система включва техническото и програмното осигуряване, които се проектират в ресурсите процесор, памет, периферни устройства, информация. Класическата теория разглежда операционните системи като система от програми за управление на тези четири ресурса.Това управление включва:
 проследяване състоянието на ресурса
 определяне на процеса, който трябва да получи този ресурс
 разпределение (предоставяне) на ресурса
 освобождаване на ресурса
ОС са сложни системи и за тяхното представяне се използва йерархичен модел, при който компютърът сe представя, покрит със „слоеве” софтуер. Този модел е формулиран за пръв път от холандския учен Е. Дейкстра и се основава на разпределение на управлението на ресурсите по нива от страна на ОС. Най-близко до компютъра са модулите за управление на процесора, а най-далече от него, респ. най-близко до потребителя, е интерпретаторът на потребителски команди (заявки). На всяко ниво се моделира работата на по-горния слой, като се запазва еквивалентността на програмите и данните, за да се стигне до коректно реално изпълнение на хардуерно ниво.



Фиг.1 Йерархичен модел на Дейкстра за операционна система

Състоянията, в които се намират в даден момент процесите са:
 изпълнение (running) - на процеса е предоставен процесора
 блокировка(blocked) - изпълнението на процеса може да продължи само след сбъдване на определено събитие, очаквано от него
 готовност (ready) - ако приемем, че системата има един процесор, само един процес може да се изпълнява в момента , обаче няколко процеса могат да се намират в състояние на готовност за изпълнение.
ОС поддържа списъци (опашки) на готовите и на блокираните процеси. Процесите непрекъснато сменят състоянията си. Дисциплината на поддържането на опашките се нарича планиране, а изборът на процес от списъка с готовите процеси и предоставянето на процесора се нарича диспечиране.
Операциите, които ОС изпълнява с процесите са:
 създаване на процеси
 стартиране на процеси
 преустановяване за известно време
 възобновяване
 изменение на приоритета
 блокиране
 унищожаване на процеси
Би следвало целта на операционната система да е подбирането на мултипрограмна смес от задачи, при която ще има балансирано натоварване на компютърната система. За да изпълни това, ОС следи как задачите използват процесора и на тази основа ги разпределя в различни опашки за диспечиране на процесора. По принцип процесорът се предоставя на заредените в оперативната памет програми за определен интервал (квант) от време за изпълнение на генерираните от тях задачи. Големината на този интервал зависи именно от това как програмата е използвала процесора в наблюдавания период. Процесорът се предоставя по-често на задачи с интензивен входно-изходен обмен (наречени още “диалогови задачи”), тъй като те го използват по-кратко време, обратно на недиалоговите (или още “процесорни”) задачи, които не генерират входно-изходни прекъсвания и използват целия предоставен им квант процесорно време. На последните процесорът се предоставя по-рядко за по-дълго време.
________________________________________
Операционни системи. Управление на паметта. Основни схеми, проблеми и решения. Управление на виртуална памет
Оперативната памет винаги е била един от критичните ресурси, от който зависи производителността на цялата компютърна система. Проблемите, свързани с паметта са:
 недостиг
 скъп ресурс
 неефективни схеми на управление
 фрагментация
 работа само в реалната памет
В началото проблемите, свързани с недостига на памет са се решавали на потребителско ниво, чрез т.нар. „овърлейни” структури на приложенията, когато приложните програмисти е трябвало да разделят програмите на модули, един от които работи постоянно в паметта, а останалите се припокриват когато се зареждат за изпълнение.
На системно ниво различните стратегии за управление на паметта са се реализирали в съответните версии на операционните системи като отделни схеми за управление, които зависят както от процесорната архитектура, така и от мултипрограмния режим на работа.
За да се използва даден байт от паметта той трябва да бъде адресиран в машинните инструкции. Познати са основно два модела на адресиране:
 сегментно адресиране – паметта условно се разделя на части, наречени сегменти и адресът на всеки байт се получава като адрес на сегмент от паметта и отместване (адрес) на байта вътре в сегмента
 линейно адресиране (т.нар.) “плосък” модел – всеки байт се достига с пряк адрес (номер) в паметта
Различават се схеми със следното разпределение (управление) на паметта:
 единично непрекъснато разпределение
 предимства - проста и евтина реализация
 недостатъци - липсва мултипрограмен режим; неефективно използване или недостиг на паметта; работа само в реалната памет
 разпределение с фиксиран брой дялове
 предимства – реализация на мултипрограмен режим; по-ефективно използване на паметта
 недостатъци – фрагментация на паметта – по време на работа се получават несъседни свободни дялове в паметта, които не са организирани като едно общо пространство за зареждане на програми. Размерът на дяловете се задава предварително и не може да се променя динамично; работи се само в реалната памет.
 разпределение с променлив брой дялове
 предимства – динамично задаване размера на дяловете в паметта, съобразно големината на програмите, които ще се зареждат в тях; решаване във висока степен, но недостатъчно проблема с фрагментацията; работа в мултипрограмен режим
 недостатъци – сложна реализация, в хода на работа пак се получава фрагментация; работа само в реалната памет
 сегментно-странично – паметта се дели на дялове (сегменти), а във всеки сегмент се зареждат и адресират отделни по-малки единици, наречени страници. Адресът включва номер на сегмент, вътрешно “отместване” в рамките на сегмента на дадена страница и отместване на даден байт вътре в дадена страница.
 предимства – решаване във висока степен, но недостатъчно проблема с фрагментацията; работа в мултипрограмен режим
 недостатъци – “сложно” адресиране – сегмент, страница; работа само в реалната памет
 странично разпределение – паметта се дели на единици, наречени блокове с размер от 4 KB, адресните пространства на програмите се делят на единици със същия размер, наречени страници. При зареждане на програмите за изпълнение в паметта отделните страници могат да заемат несъседни блокове. Работи се в мултипрограмен режим.
 предимства – решаване почти напълно на проблема с фрагментацията, получава се “уплътняване” на паметта. Тази схема е фундамент за реализацията на следващата схема – управление на виртуална памет.
 недостатъци – работа само в реалната памет
 свопинг (swaping) – превключване между паметта на отделни програми, като цялото съдържанието на паметта на всяка от тях може да се “изхвърли” по време на изпълнение в дисков файл и респ. от там да се зареди отново
 предимства – общият размер на адресните пространства на изпълняващите се програми може да надхвърли размера на реалната памет
 недостатъци – “тежка” схема, много големи единици са обект на зареждане в паметта
 виртуална памет
Управление на виртуална памет
Дж. Мартин определя понятието виртуално като нещо, което ни се струва, че съществува, а в действителност не съществува (обратно на другото често използвано понятие - прозрачно).
Виртуализацията представлява софтуерна симулация на ресурс, който не съществува или симулация на повече ресурс, отколкото реално е наличен. Започнало се е от виртуализация на паметта, минало се е през виртуални устройства, за да се достигне до виртуализация на ниво машина .
Оперативната памет е първият от техническите ресурси, който е виртуализиран, при това много отдавна, стабилно и надеждно на промишлено ниво. Използването на виртуална памет решава проблема с вечния недостиг на реална памет. Бяха облекчени и програмистите, които дотогава се мъчеха с овърлейно структуриране на програмите си, не можеха да си позволят дефинирането и използването големи масиви в паметта и др. Дори специално в имената на операционните системи от старите времена се подчертава това, че имат управление на виртуална памет (virtual storage) - OS/VS1,

This entry was posted at 12:11 and is filed under . You can follow any responses to this entry through the .

0 comments