Přednáška 6. Procesy a vlákna (vznik, stavy, atributy). Signály. Nástroje pro práci s procesy a vlákny. Úvod do Operačních Systémů Přednáška 6

Podobné dokumenty
Příkaz find, práce s procesy a úlohami, plánování úloh

X36UNX. UNIX - signály. jejich význam a použití. Martin Plicka -

Úvod do Operačních Systémů

Operační systémy. Cvičení 5: Volání jádra, procesy, vlákna.

Linux Teorie operačních systémů a realita

OS Procesy a vlákna. Tomáš Hudec. Tomas.Hudec@upce.cz.

PSK3-7. Plánované spouštění programů a správce sezení. Skupiny procesů

UŽIVATEL, SKUPINA, PROCES

Přednáška 5. Identita uživatelů, procesů a souborů. Přístupová práva a jejich nastavení. Úvod do Operačních Systémů Přednáška 5

Operační systémy. Přednáška 2: Procesy a vlákna

Přednáška. Implementace procesů/vláken. Plánování vláken. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Procesy a vlákna (Processes and Threads)

Management procesu I Mgr. Josef Horálek

Procesy a vlákna Mgr. Josef Horálek

Přednáška 8. Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. Úvod do Operačních Systémů Přednáška 8

Identita uživatelů, přístupová práva. Linux

Výpočet v módu jádro. - přerušení (od zařízení asynchronně) - výjimky - softvérové přerušení. v důsledku událostí

Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu

Procesy a vlákna - synchronizace

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

Příkazová řádka. predn_02.odt :55:55 1

Úvod do Linuxu. SŠSI Tábor 1

Architektura systému GNU/Linux. Bohdan Milar

Obsah přednášky. Unix úvod. Literatura. Úvod do Unixu. Použitelnost Unixu. Úvod do Unixu

Pár odpovědí jsem nenašla nikde, a tak jsem je logicky odvodila, a nebo jsem ponechala odpověď z pefky, proto je možné, že někde bude chyba.

Operační systémy. Přednáška 3: Plánování procesů a vláken

Nastroje na zpracovani textu:

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018

ZOS OPAKOVÁNÍ. L. Pešička

Úvod, jednoduché příkazy

Západočeská univerzita v Plzni. Správce virtuálních strojů

Úvod. unx-predn_01-uvod.odt :13:43 1

Proměnné a parametry. predn_08.odt :00:38 1

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

Systém souborů (file system, FS)

Téma 3. Procesy a vlákna

Windows a real-time. Windows Embedded

MS WINDOWS II. Jádro. Správa objektů. Správa procesů. Zabezpečení. Správa paměti

Operační systémy. Cvičení 1: Seznámení s prostředím

A7B38UOS Úvod do operačních systémů. 6. Cvičení. Příkazy sed a awk

Více o konstruktorech a destruktorech

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Identita uživatele. predn_04.odt :47:03 1

Přednáška 1. Úvod. Historie OS Unix. Architektura OS Unix. Interpret příkazů. SHELL. Zpracování příkazové řádky. Speciální znaky. Zkratky příkazů.

Úvod do Operačních Systémů

Unix je víceuživatelský a víceúlohový OS

Administrace Unixu a sítí

C2110 Operační systém UNIX a základy programování

Přednáška 2. Systémy souborů OS UNIX. Nástroje pro práci se souborovým systémem. Úvod do Operačních Systémů Přednáška 2

ÚVOD DO OPERAČNÍCH SYSTÉMŮ

Administrace OS Unix. Úvodní informace Principy administrace Uživatelé

Identita uživatele (procesu)

Lekce 25 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ

Cvičení 2. Přesměrování vstupu a výstupu. Posloupnost příkazů. Příkazy pro informaci o uživatelích

Pro všechny příkazy jsou k dispozici podrobné manuálové stránky, proto zde. find adresář -name "maska_souboru" [-print] [-exec proces {} \;]

Přidělování CPU Mgr. Josef Horálek

Služba ve Windows. Služba (service) je program

Operační systémy. Tomáš Vojnar IOS 2010/2011. Vysoké učení technické v Brně Fakulta informačních technologií Božetěchova 2, Brno

Přednáška 11. Historie MS Windows. Architektura Windows XP. Grafické a znakové rozhraní. Úlohy, procesy a vlákna.

Střední odborná škola a Střední odborné učiliště, Hořovice

Úvod do programování - Java. Cvičení č.4

Von Neumannovo schéma

Domácí příprava k předmětu YD38UOS Úloha 10 práce s lokálními soubory pokračování

konec šedesátých let vyvinut ze systému Multics původní účel systém pro zpracování textů autoři: Ken Thompson a Denis Ritchie systém pojmnoval Brian

Úvod do Unixu. man: příkaz pro zobrazení nápovědy k danému příkazu, programu (pokud je k dispozici), např. man cp. pwd: vypíše cestu k aktuální pozici

Principy operačních systémů. Lekce 5: Multiprogramming a multitasking, vlákna

ČÁST 1 ÚVOD. Instalace operačního systému 21 Aktualizace operačního systému 57 Příkazový řádek 77 Windows Script Host 103 ČÁST 2 ŘEŠENÍ

OS Plánování procesů

Struktura programu v době běhu

Základní příkazy OS UNIX

Ukázka zkouškové písemka OSY

Rozšíření ksh vůči sh při práci s proměnnými

PB161 Programování v jazyce C++ Přednáška 4

Operační systémy. Tomáš Vojnar IOS 2009/2010. Vysoké učení technické v Brně Fakulta informačních technologií Božetěchova 2, Brno

Úvod do Operačních Systémů

C2110 Operační systém UNIX a základy programování

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

LINUX přesměrování a roury

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Tomáš Borland Valenta

Cvičení 3. Plán. Procesy. procesy, jobs Find Wildcards Příklad uživatelé. ZOS 2005, L. Pešička. eryx4> ps x

PRACUJEME S SHELLEM Ať žije BASH.

Paralelní programování

Správce virtuálních strojů

Práce se soubory. Základy programování 2 Tomáš Kühr

Paralelní architektury se sdílenou pamětí typu NUMA. NUMA architektury

PB071 Programování v jazyce C

Úvod do Operačních Systémů

Dynamické datové struktury IV.

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Stavy procesů. Požadavky na OS při práci s procesy

Real Time programování v LabView. Ing. Martin Bušek, Ph.D.

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Měřící systém se vzdáleným přístupem. Databáze

Konstruktory a destruktory

Příkaz finger. # finger sam Login: sam Name: Sam Greenfield Directory: /home/sam Shell: /bin/tcsh Last login Sun Dec 25 14:47 (EST) on tty2 No Plan.

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

PŘETĚŽOVÁNÍ OPERÁTORŮ

Transkript:

Přednáška 6 Procesy a vlákna (vznik, stavy, atributy). Signály. Nástroje pro práci s procesy a vlákny. 1

Procesy I Proces je spuštěný program. Každý proces má v rámci systému přiřazeno jednoznačné číslo procesu PID. Každý proces má svého rodiče a zná ho pod číslem PPID. Proces vzniká použitím systémových volání: fork() vytvoří nový proces, který je kopií procesu, z kterého byla tato funkce zavolána v rodičovském procesu vrací funkce PID potomka (v případě chyby -1) v potomkovi vrací funkce 0 nový proces má jiné PID a PPID, ostatní vlastnosti dědí (např. EUID, EGID, prostředí,...) nebo sdílí s rodičem (např. soubory,...) kódový segment sdílí potomek s rodičem datový a zásobníkový segment vznikají kopií dat a zásobníku rodiče 2

Procesy II exec() v procesu, ze kterého je funkce volána, spustí nový program (obsah původního procesu je přepsán novým programem) atributy procesu se nemění (PID, PPID,...) 3

Příklad main () {... pid = fork(); switch (pid) { case -1: /* doslo k chybe */ perror ("chyba ve funkci fork()"); exit(1); case 0: /* program provadeny v potomkovi */ printf ("PID procesu potomka: %d\n", (int) getpid ()); execlp("sleep", "sleep", "30", (char *) NULL); perror ("chyba ve funkci execlp()"); exit (1); default: /* program provadeny v rodici */ printf ("PID procesu rodice : %d\n", (int) getpid ()); wait(&status); };... } 4

Vlákno (Thread) Vlákno je spuštěný podprogram v rámci procesu nebo jádra. Proces tvořený více vlákny může být vykonáván na více procesorech současně. Klasický jednovláknový proces může být vykonáván vždy jen na jednom procesoru. Vytvoření nového vlákna je rychlejší než vytvoření nového procesu. Nové vlákno může vzniknout např. pomocí knihovní funkce pthread_create(). 5

Příklad... void *kod_vlakna(void *threadid) { printf("id vlakna: %d\n", threadid); sleep(60); pthread_exit(null); } int main() { pthread_t threads[num_threads]; int rc, i; for(i=0; i<num_threads; i++){ rc = pthread_create(&threads[i], NULL, kod_vlakna, (void *) i); if (rc){ perror("chyba ve funkci pthread_create()"); exit(1); } } pthread_exit(null);... 6

Přepínání kontextu I Přepínáním kontextu se rozumí střídání vláken na procesoru/ procesorech. Jádro OS určuje, kdy a které vlákno dostane přidělen procesor. Jádro se rozhoduje na základě celé řady informací: priorita procesu (např. 0 169 v Solarisu 10) prioritní třída (např. TS, IA, FSS, FX, SYS, RT v Solarisu 10) stav vlákna, chování vlákna v minulosti,... Vlákno dostává přidělený procesor vždy na určité časové kvantum. Velikost časového kvanta se může lišit pro různé procesy i během času (závisí na implementaci Unixu). 7

Přepínání kontextu II Priorita procesu se může dynamicky měnit: u běžících procesů se snižuje u čekajících procesů se zvyšuje 8

Přepínání kontextu III 9

Stavy procesu 10

Výpis procesů/vláken I ps Vypíše krátkou informaci o procesech odstartovaných z daného terminálu. ps e Vypíše krátkou informaci o všech procesech v systému. ps f nebo ps l Vypíše detailnější informaci o procesech: S stavy procesu (O, S, R, Z, T) PID, PPID číslo procesu a číslo rodičovského procesu PRI priorita (v Solarisu při c mění význam a přibývá položka CLS) NI NICE hodnota STIME čas spuštění procesu TIME čas spotřebovaný procesem na procesoru TTY terminál přidělený procesu CMD příkaz, který spustil proces 11

ps o format Výpis procesů/vláken II Informace jsou vypsány ve formátovaném tvaru. format může obsahovat následující zkratky: user ruser group rgroup uid ruid gid rgid pid ppid pgid sid pri nice class time etime stime s c lwp... ps Le Zobrazí informaci i o jednotlivých vláknech běžících v systému. 12

Výpis procesů/vláken III pgrep [ lvx] [vzor -u seznam_uživatelů...] Vypíše PID (s l navíc jména) procesů, které splňují zadané parametry (např. obsahují ve svém jménu daný vzor, běží pod identitou daných uživatelů,...). S parametrem v vypíše procesy, které nesplňují zadané parametry. Vzor může obsahovat i regulární výraz. 13

Výpis procesů/vláken IV prstat nebo top Zobrazí seznam procesů setříděný podle zvoleného kritéria (explicitně podle zátěže CPU). ptree [-a] [ pid ] [ uživatel ] pstree [-a] [ pid ] [ uživatel ] Zobrazí strom procesů. 14

Modifikace priority Počáteční prioritu lze snížit (root může i zvýšit) příkazem: nice priorita příkaz nice n priorita příkaz kde priorita je číslo v rozsahu 1-19 větší číslo = větší snížení priority záporné číslo = zvýšení priority (jen root) Podrobnější modifikace priorit lze provést příkazem priocntl 15

Jak správně psát skripty? Jaký je rozdíl v chování následujících skriptů? while [ -f $1 ] ; do : ; done; echo " $1 zrusen " while [ -f $1 ] ; do sleep 2 ; done; echo " $1 zrusen " Který z nich bude reagovat dříve na zrušení souboru, bude-li spuštěn najednou 100x (pokaždé s jiným jménem souboru)? 16

Signály I Signály umožňují přerušení procesu zvenku (např. jiným procesem, jádrem při špatném přístupu do paměti,...). Každý signál je definován jménem a číslem. V různých verzích Unixu se signály mohou lišit. Seznam signálů lze vypsat: příkazem kill l v Solarisu pomocí manuálu man s 3HEAD signal Signál lze zaslat procesu pomocí příkazů: kill signál PID pkill signál [ -vx] [ vzor u seznam_uživatlů...] 17

Signály II Některé signály lze zaslat procesu pomocí kombinace kláves: (viz. stty a nebo man stty) Kombinace kláves CTRL C CRTL \ CTRL S CTRL Q CTRL Z Význam Předčasné ukončení běžícího procesu. Předčasné ukončení běžícího procesu. Pozastavení výstupu na obrazovku. Uvolnění pozastaveného výstupu. Pozastavení běžícího procesu (ne u sh). Nikoliv ukončení!!! Jméno signálu 2 SIGINT 3 SIGQUIT 23 SIGSTOP 25 SIGCONT 24 SIGTSTP 18

Důležité signály I 15 SIGTERM (TERMinate) Posílán příkazem kill PID. Standardní reakce je ukončení procesu. Obvyklý způsob předčasného ukončení procesu. 9 SIGKILL (KILL) Standardní reakce (kterou nelze změnit ani ignorovat) je ukončení procesu. 19

Důležité signály II 2 SIGINT (INTerrupt), 3 SIGQUIT (QUIT) Posílány procesům prostřednictvím terminálového ovladače při stisku nadefinovaných znaků. Standardní reakce je ukončení (2) a ukončení s vytvořením souboru core (3). Nastavení terminálového ovladače lze vypsat /změnit příkazem stty. 20

1 SIGHUP (HangUP) Důležité signály III Posílán procesu, když končí jeho rodič (shellu, když zavěsil modem). Standardní reakce je ukončení. Končí-li proces, je signál poslán všem jeho potomkům. Proto při odhlášení jsou ukončeny všechny procesy spuštěné v rámci tohoto přihlášení. Má-li proces pokračovat po ukončení rodiče, je třeba použít příkaz nohup příkaz & Některé procesy signál odchytávají a interpretují ho jako žádost o restart (např. init, named, sendmail, inetd, syslogd, automountd). 21

Reakce na signály Každý proces má při startu definovanou reakci na všechny signály. Obvykle je to konec nebo core a konec. Proces může reakci předefinovat kromě signálů KILL a STOP. Reakci na signály můžeme měnit příkazem trap. Nastavení reakce na signál(y): trap příkazy signály_oddělené_mezerou Výpis nastavených reakcí: trap Ignorování signálů: trap signály_oddělené_mezerou Nastavení výchozí reakce: trap - signály_oddělené_mezerou 22

Spuštění příkazu I Na popředí $ příkaz Příkaz (který není zabudovaný) je spuštěn jako nový proces. Proces přebírá vstup i výstup. Shell čeká na jeho dokončení. Na pozadí $ příkaz & Shell nečeká na jeho dokončení a nepředává mu vstup (pokud nebyl přesměrován). Jestliže se proces pokusí číst z nepředaného vstupu je pozastaven. Na výstup psát může. Pokud výstup nebyl přesměrován, míchá se s výstupem shellu. 23

Mimo shell Spuštění příkazu II $ nohup příkaz & Proces poběží i po ukončení shellu. Výstup procesu je přesměrován do souboru nohup.out. V daném čas Pomocí příkazu at nebo crontab lze naplánovat spuštění procesu v daném čase. Spuštění procesu provádí systémový démon cron. Proces poběží explicitně pod identitou toho, kdo proces naplánoval a výstup bude poslán mailem. 24

Správa úloh Umožňují všechny shelly kromě Bourne shellu (/bin/sh). Každý proces, který je spuštěn v dané instanci shellu, má v této instanci přiřazeno jedinečné číslo úlohy (JID). Pomocí JID se můžeme na proces odkazovat pomocí příkazů: jobs vypíše seznam úloh(procesů) běžících v tomto shellu fg [%JID] přesune úlohu na popředí bg [%JID] přesune úlohu na pozadí kill signál [%JID] pošle úloze daný signál Není-li v příkazu uvedeno JID, uvažuje se poslední úloha. 25

Užitečné příkazy Doba běhu procesu time příkaz Příkaz vypíše informaci o času spotřebovaném procesem. Systémová volání truss příkaz Příkaz vypíše systémová volání, které daný proces používá. 26