Системни ресурси. Как работи операционната система?

Ресурс

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

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

Процес

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

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

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

Затова паметта също е локална за всеки процес.

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

Многозадачност

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

  • Съвместна многозадачност
 

Но помислете – потребителят не може да работи с всички приложения в един момент. Така компютърът може да изпълнява само текущото приложение и да остави другите спящи (или отложени).Добър метод, докато не се наложи няколко приложения да не спират работа, поне няколко пъти за кратък период от време.

 

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

 
       
  • Редуваща се многозадачност
  •  
 

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

 

Този метод се използва от повечето операционни системи днес. Например средното време за превключване на всеизвестната Windows XP е 5 милисекунди.

 

Управление на паметта и виртуална памет

 

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

 

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

 

Системата предотвратява това чрез концепцията за виртуална памет.

 

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

 

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

 

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