Управление на процеси

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

Многозадачност редактиране

Много съвременни ОС допускат зареждане на повече от една програма в оперативната памет, например една и съща програма може да се изпълнява от няколко потребителя, като всеки от тях разполага с отделно копие от програмата. При други програми в паметта се зарежда едно копие, но до него имат достъп няколко потребителя, такава програма се нарича re-entrant. Независимо че централният процесор може да изпълнява по една инструкция от програма, през даден период от време могат да протичат няколко процеса, като се редуват в ползването на процесора. Тази концепция за едновременно изпълнение се нарича concurrent execution.

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

Има два възможни начина по време на изпълнението на даден процес ОС да си възвърне контрола върху процесора:

  1. Процесът отправя системно повикване (наричано понякога софтуерно прекъсване); например, искане за входно-изходна операция по достъп до файл на твърдия диск.
  2. Настъпва хардуерно прекъсване; например натиснат клавиш на клавиатурата или изтича времето според даден таймер (това се използва при разпределена многозадачност, pre-emptive multitasking).

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

Многонишковост редактиране

Майкрософт въвежда и понятието нишка (на английски: thread) за всяка единица програмен код, състезаващ се за ресурсите на компютърната система. От един процес могат да бъдат генерирани („изтеглени“) една или повече нишки. От това следва и многонишковото изпълнение на програмния код, дори на една програма, като във връзка с това възниква въпросът за синхронизация на изпълнението на отделните нишки.

По принцип от една и съща програма могат да се генерират няколко едновременно изпълняващи се задачи – това трябва да бъде предвидено и програмирано още на ниво първичен код. В съвременните системи това се нарича многонишковост[1].

Използването на нишки води до икономия на ресурси, тъй като създаването и унищожаването на нишка изисква по-малко време, а превключването на контекста между тях става по-бързо. Освен това нишките, които са част от един и същ процес, си поделят адресното пространство и файловете, и поради това те могат да комуникират без обръщане към ядрото, като така се подобрява ефективността при използване на многопроцесорни архитектури[2]

Диспечер на прекъсвания редактиране

Ядрото на ОС съдържа в себе си програма (диспечер) за планиране на процеси (task scheduling subsystem), която управлява времето за изпълнение на всеки процес и реда на предаване на контрола по изпълнението от една програма на друга. От многото процеси, конкуриращи се за достъп до процесора, се избира един и ядрото му разрешава достъп до централния процесор и паметта. След приключване контролът се връща на ядрото, така че друга програма да може да ползва същите ресурси. Преходът от изпълнение на една програма към друга се нарича превключване на контекста.

Източници редактиране

  1. Системен софтуер – основни характеристики, класификация // Архивиран от оригинала на 2016-02-04. Посетен на 19 август 2015.
  2. Чорбаджиев, Любомир. Нишки // Технологическо училище „Електронни системи“, Технически университет, София. Посетен на 17 септември 2015.
    Тази страница частично или изцяло представлява превод на страницата Process management (computing) в Уикипедия на английски. Оригиналният текст, както и този превод, са защитени от Лиценза „Криейтив Комънс – Признание – Споделяне на споделеното“, а за съдържание, създадено преди юни 2009 година – от Лиценза за свободна документация на ГНУ. Прегледайте историята на редакциите на оригиналната страница, както и на преводната страница, за да видите списъка на съавторите. ​

ВАЖНО: Този шаблон се отнася единствено до авторските права върху съдържанието на статията. Добавянето му не отменя изискването да се посочват конкретни източници на твърденията, които да бъдат благонадеждни.​