Български

Разгледайте основните концепции за управление на процесите в операционните системи. Важно за разработчици и системни администратори.

Операционни системи: Цялостно ръководство за управление на процесите

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

Какво е процес?

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

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

Основни компоненти на процес:

Състояния на процеса

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

Тези състояния представляват жизнения цикъл на процеса и операционната система е отговорна за управлението на преходите между тях. Например, когато един процес трябва да прочете данни от диск, той преминава от състояние Изпълняващ се в състояние Чакащ, докато I/O операцията не завърши. След това преминава обратно в състояние Готов, чакайки своя ред да се изпълни отново.

Контролен блок на процеса (PCB)

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

Типично съдържание на PCB:

Планиране на процеси

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

Опашки за планиране

ОС използва опашки за управление на процеси. Общите опашки включват:

Планировчици

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

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

Алгоритми за планиране

Съществуват многобройни алгоритми за планиране, всеки със своите силни и слаби страни. Изборът на алгоритъм зависи от конкретните цели на системата. Ето някои общи алгоритми:

Пример: Разгледайте три процеса, P1, P2 и P3, със burst times (времена на изпълнение) от съответно 24, 3 и 3 милисекунди. Ако те пристигнат в реда P1, P2, P3, планирането на FCFS ще доведе до P1 да се изпълнява първи, след това P2, след това P3. Средното време на изчакване ще бъде (0 + 24 + 27) / 3 = 17 милисекунди. Въпреки това, ако използвахме SJF, процесите ще бъдат изпълнени в реда P2, P3, P1, а средното време на изчакване ще бъде (0 + 3 + 6) / 3 = 3 милисекунди – значително подобрение!

Междупроцесорна комуникация (IPC)

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

Общи IPC механизми:

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

Синхронизация

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

Общи техники за синхронизация:

Пример: Разгледайте споделен брояч, който се увеличава от множество процеси. Без синхронизация множество процеси могат да прочетат стойността на брояча, да я увеличат и да я запишат обратно, което води до неверни резултати. Използването на mutex брава за защита на операцията за увеличаване гарантира, че само един процес може да получи достъп до брояча в даден момент, предотвратявайки условията на надпревара.

Задънена улица

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

Условия за задънена улица:

Трябва едновременно да бъдат изпълнени четири условия за възникване на задънена улица (условия на Coffman):

Техники за обработка на задънени улици:

Има няколко подхода за обработка на задънени улици:

Пример: Разгледайте два процеса, P1 и P2, и два ресурса, R1 и R2. P1 държи R1 и чака R2, докато P2 държи R2 и чака R1. Това създава циклична чакалня, което води до задънена улица. Един начин да се предотврати тази задънена улица е да се изиска от процесите да поискат всички ресурси наведнъж, преди да започнат изпълнението.

Примери от реалния свят

Концепциите за управление на процеси се използват в различни операционни системи по целия свят:

Заключение

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

Допълнително обучение

За да задълбочите разбирането си за управлението на процесите, помислете да разгледате следните ресурси:

Операционни системи: Цялостно ръководство за управление на процесите | MLOG