Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Operační systémy Přednášky pro výuku předmětu Operační systémy Ing. Antonín Vaněk, CSc. DFJP, Univerzita Pardubice září 2003.

Podobné prezentace


Prezentace na téma: "Operační systémy Přednášky pro výuku předmětu Operační systémy Ing. Antonín Vaněk, CSc. DFJP, Univerzita Pardubice září 2003."— Transkript prezentace:

1 Operační systémy Přednášky pro výuku předmětu Operační systémy Ing. Antonín Vaněk, CSc. DFJP, Univerzita Pardubice září 2003

2 Kapitola 4 a) Provádění OS b) Mikrojádro

3 Provádění OS

4 OS jako program  až dosud jsme mlčky předpokládali, že procesy jsou uživatelské  jestliže je OS program,  můžeme také běžící OS považovat za process?  pokud ano, jak je tento proces řízen?  odpověď závisí na koncepci OS

5 Provádění OS (1)  bezprocesové (monolitické) jádro  software OS má podobu jednolitého programu  kód OS se provádí jako samostatná entita v privilegovaném modu procesoru  procesově orientované jádro  software OS má formu procesů  když proces provádí kód OS, běží procesor v privilegovaném modu

6 Provádění OS (2)  mikrojádro  většina funkcí jádra je realizována jako samostatné procesy  činnost těchto procesů aktivuje a koordinuje mikrojádro, které obsahuje pouze několik základních funkcí

7  zastaralá koncepce  koncept procesů se vztahuje pouze na programy uživatele  kód OS se provádí jako samostatná entita v privilegovaném modu procesoru  kód OS se nikdy neprovádí v procesu Bezprocesové jádro

8 OS prováděný v procesech (1)  téměř veškerý kód OS se provádí jako uživatelské procesy  při přerušení a systémovém volání procesor přejde do privilegovaného modu a provede OS proceduru v kontextu procesu uživatele (tzv. mode switch)  na funkce přepínání procesů (mimo procesy) řízení přechází pouze pokud to je nezbytné

9  kód a data OS jsou ve sdíleném paměťovém prostoru a jsou sdíleny všemi uživatelskými procesy  pro volání procedur v režimu jádra a návraty z nich se používá samostatný zásobník  v rámci uživatelského procesu se provádějí jak programy uživatele, tak programy OS OS prováděný v procesech (2) Shared Address Space Kernel Stack

10 Procesově orientovaný OS  OS je tvořen množinou systémových procesů  hlavní funkce jádra jsou samostatnými procesy  malé množství kódu OS (funkce přepínání procesů) (se provádí mimo procesy  velmi vhodné řešení pro multiprocesorové systémy

11 Stavy procesu v UNIXu SVR4  podobné dříve popsanému 7-stavovému modelu  2 stavy běhu: User a Kernel  přechody do ostatních stavů (blocked, ready) zajišťuje vždy jádro  stavy Sleeping (v paměti a odložený) odpovídají stavům BLOKOVANÝ u 7-stavového modelu  stav Preempted se liší od stavu Ready, ale oba používají jednu společnou frontu  k přechodu do stavu Preempted může dojít pouze když proces má přejít z modu jádra do uživatelského modu

12 Stavový diagram procesů OS UNIX return to user return preempt reschedule process sleep exit interrupt, interrupt return system call, interrupt wakeup swap out wakeup swap in swap out enough memory not enough memory (swapping system only) fork Zombie Kernel Running User Running Preempted Asleep in Memory Ready to Run in Memory Created Sleep, Swapped Ready to Run Swapped

13 Vytváření procesu v UNIXu  každý proces (kromě procesu 0) se vytváří systémovou funkcí fork()  fork() vytvoří položku v tabulce procesů a novému procesu-potomkovi přidělí unikátní identifikační číslo PID (Process IDentification)  potomek obdrží kopii obrazu (image) rodičovského procesu  fork() vrátí PID potomka rodičovskému procesu a nulu potomkovi po provedení funkce fork() dokonce provádějí oba procesy (rodič i potomek) tentýž kód!

14 Systémové procesy UNIXu  proces 0 vznikne nestandardně při spouštění systému (boot)  po vytvoření procesu 1 (proces INIT) převezme proces 0 funkci odkládání (swapper)  proces 1 provede inicializaci dle /etc/inittab a provede rc-skripty (konfigurace služeb)  Když se u terminálu přihlásí uživatel, proces 1 pro něj vytvoří nový proces (obvykle login shell), který pak je rodičem všech procesů tohoto uživatele

15 Obraz procesu v UNIXu (1)  User-level context  Process Text (tj. kód)  tuto oblast lze pouze číst (read-only)  Process Data  User Stack  zásobník pro volání a návraty v uživatelském modu  Shared memory  pro komunikaci procesů (IPC)  existuje pouze jedna fyzická kopie, ale díky možnostem virtuální paměti má každý proces tuto kopii dostupnou ve svém adresním prostoru  Register context

16  System-level context  Process table entry  aktuální položka týkající se tohoto procesu v systémem udržované tabulce procesů  stav procesu, UID, PID, PPID, priorita, očekávané události, signály, ukazatele do paměti na kód (text), data...  U area (uživatelská oblast)  další informace o procesu potřebné pro jádro když provádí kontext tohoto procesu  efektivní UID, časovače, meze, používané soubory...  Kernel stack  zásobník pro volání a návraty v modu jádra  Per Process Region Table  tabulka pro řízení paměti (Memory Manager) Obraz procesu v UNIXu (2)

17 Mikrojádro

18 Typické funkce jádra OS (1)  správa procesů (Process Management)  vytváření a ukončování procesů  plánování a spouštění procesů  přepínání procesů  synchronizace procesů  podpora komunikace procesů  udržování řídících bloků procesů

19 Typické funkce jádra OS (2)  správa paměti (Memory Management)  přidělování adresového prostoru procesům  odkládání procesů na disk (Swapping)  správa paměťových stránek a segmentů  správa I/O (I/O Management)  ovládání vyrovnávacích paměti (Buffer Management)  přidělování I/O kanálů a zařízení procesům

20  podpůrné funkce  obsluha přerušení  monitorování, dohled, účtování....  ostatní funkce OS je vhodnější zajistit samostatnými programy, spolupracujícími s jádrem Typické funkce jádra OS (3)

21 Mikrojádro  malé jádro OS, obsahující pouze základní funkce OS  které nelze přesunout mezi uživatelské procesy  u kterých by takový přesun výrazně zhoršil vlastnosti OS  ostatní funkce OS jsou řešeny jako externí subsystémy  ovladače zařízení (device drivers)  souborové systémy (file systems)  správa virtuální paměti (virtual memory manager)  bezpečnostní služby (security services)  další služby...

22 Výhody použití mikrojádra  jednotné rozhraní pro předávání požadavků procesem  všechny služby jsou poskytovány formou přenosu zpráv (message passing)  rozšiřitelnost  lze snadno přidávat nové služby  pružnost  lze snadno měnit stávající vlastnosti  přenositelnost  změny potřebné k přenesení systému na jinou platformu je nutné provést pouze v mikrojádře a ovladačích, zbytek OS je na platformě nezávislý

23 Výhody použití mikrojádra  spolehlivost  modulární stavba systému usnadňuje vývoj a testování  mikrojádro je menší a jednodušší než monolitický OS, takže ho lze mnohem snadněji otestovat  stavebnicovost  uživatel může zakoupit a použít pouze subsystémy, které potřebuje  výhodné zejména u vestavěných systémů  snadná realizace distribuovaných systémů  zprávy mezi procesy lze předávat nejen lokálně, ale také po síti  vhodná koncepce pro objektově orientovaný OS  komponenty systému jsou objekty s jasně definovaným rozhraním

24 Funkce mikrojádra  ovládání I/O a přerušení  časovač, ovladače, přepínání kontextu...  primitivní správa paměti  mapování stránek virtuální paměti na stránky fyzické paměti  komunikace procesů  IPC (Inter-process Communication)

25 Příklad: systém QNX  mikrojádro  message passing  first-level interrupt handling  process scheduling  low-level network communication  systémové procesy  Process Manager  Filesystem Manager  Device Manager  Network Manager Process Manager Device Manager Filesystem Manager Network Manager MK

26 IPC systému QNX  primitivní funkce IPC, poskytované mikrojádrem  Send (pid, smsg, rmsg, smsg_len, rmsg_len)  pid = ID procesu, kterému je zpráva určena  smsg, smsg_len = umístění a délka bufferu se zprávou  rmsg, rmsg_len = umístění a délka bufferu pro odpověď  pid = Receive (0, msg, msg_len)  pid (hodnota kterou vrací funkce) = ID procesu, který odeslal zprávu  sel = 0 specifikuje, že se má přijmout zpráva od libovolného procesu  msg, msg_len = umístění a délka bufferu s přijatou zprávou  Reply (pid, reply, reply_len)  pid = ID procesu, kterému je odpověď určena  reply, reply_len = umístění a délka bufferu s odpovědí  funkce Receive umožňuje synchronizaci procesů  čeká na příchod zprávy


Stáhnout ppt "Operační systémy Přednášky pro výuku předmětu Operační systémy Ing. Antonín Vaněk, CSc. DFJP, Univerzita Pardubice září 2003."

Podobné prezentace


Reklamy Google