przypadków wywo lanie systemowe (funkcja systemowa) lub funkcja biblioteczna zwraca wartość 1(czasamiNULL) iprzypisujezmiennej zewn etrznej,

Podobne dokumenty
Systemy Operacyjne Ćwiczenia

Procesy. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 9 października 2011

Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej.

przerwany proces móg l zareagować na określone zdarzenie. Można je traktować jako software owe wersje przerwań sprz etowych.

Obsługa plików Procesy

aodczytywać zniegoza pomoc afunkcjiread, (niebuforowane funkcje wejścia/wyjścia). e sukcesem, to zwróci liczb, erzeczywiściezapisanychbajtów.

pami eć operacyjna przechowuje dane do przetworzenia, tymczasowe dane pomocnicze,

Temat zajęć: Obsługa procesów w systemie.

2. Zarządzanie procesami

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

4.2 Sposób korzystania z l acza

Procesy. 5. Procesy (2005/2006)

Model procesu w systemie Linux. Tomasz Borzyszkowski

ezykach wysokiego poziomu (Dijkstra, 1965). semaphore semaphore S; Operacje na semaforze:

2. Zarządzanie procesami

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy)

2. Zarządzanie procesami

Systemy Operacyjne 1 Laboratorium 2 Procesy i sygnały w Linuksie (jeden tydzień) dr inż. Arkadiusz Chrobot

Systemy Operacyjne - Operacje na plikach

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

eć dzielona standardu POSIX

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ

systemu operacyjnego UNIX Funkcje jadra Spis treści Dariusz Wawrzyniak 20 października Wst ep 5

procesy odrębne dzielone

z powielaniem wielu struktur danych oraz komunikacja

Procesy w systemach UNIX i Linux

Dariusz Wawrzyniak 5 kwietnia 2001

Rozdzia l 3. Laboratorium 3. danych zawierajac

Zaawansowane programowanie w C++

Ghost in the machine

sposób wykonywania operacji zapisu i odczytu dane odczytywane z l acza usuwane (nie można ich odczytać ponownie),

Funkcje systemu Unix

Krótki kurs programowania współbieżnego

Funkcje. Piotr Zierhoffer. 7 października Institute of Computer Science Poznań University of Technology

Zarządzanie Procesami

Sygnały. 7. Sygnały (2005/2006)

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

Paradygmaty programowania. Paradygmaty programowania

Obliczenia rozproszone z wykorzystaniem MPI

Procesy, pliki, potoki, sygnały - uzupełnienie

Functionalization. Jeszcze o funkcjach i strukturze projektu. Marcin Makowski. 3 grudnia Zak lad Chemii Teoretycznej UJ

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu

4. Procesy pojęcia podstawowe

Proces y i y w i ąt ą ki

Biblioteka standardowa - operacje wejścia/wyjścia

SYSTEM DIAGNOSTYCZNY OPARTY NA LOGICE DOMNIEMAŃ. Ewa Madalińska. na podstawie prac:

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

1.1 Definicja procesu

1. Procesy i współbieżność

4. Procesy pojęcia podstawowe

Funkcja (podprogram) void

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Tablice i funkcje. Marcin Makowski. 26 listopada Zak lad Chemii Teoretycznej UJ

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi)

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Paradygmaty programowania

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Semafor ustaw_semafor(key_t nazwa, int start); Semafor usun_semafor(semafor sem); void signal(semafor sem); void wait(semafor sem);

Wskaźniki w C. Anna Gogolińska

Serwery współbieżne c.d.

Temat zajęć: Obsługa łączy komunikacyjnych

Funkcje jadra systemu operacyjnego UNIX

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli)

... Ireneusz Mrozek. Wydział Informatyki

J. Ułasiewicz Łącza nienazwane, nazwane, select 1

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

System operacyjny MACH

Pliki. Funkcje tworzące pliki i operujące na nich opisane są w części 2 pomocy systemowej. Tworzenie i otwieranie plików:

Jak wiemy, wszystkich danych nie zmieścimy w pamięci. A nawet jeśli zmieścimy, to pozostaną tam tylko do najbliższego wyłączenia zasilania.

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

UŻYCIE I ZARZĄDZANIE WĄTKAMI

2 Przygotował: mgr inż. Maciej Lasota

Funkcje jadra systemu operacyjnego UNIX

Stałe i zmienne znakowe. Stała znakowa: znak

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Unix: programowanie procesów

4. Procesy pojęcia podstawowe

UŻYCIE I ZARZĄDZANIE WĄTKAMI

Procesy. w systemach operacyjnych (quasi)równoleg le wykonywanie wielu być wykonywane naprzemiennie i/lub jednocześnie.

Linux: Procesy. Systemy Operacyjne. Mateusz Hołenko. 26 marca 2013

SUMA KONTROLNA (icmp_cksum) NUMER KOLEJNY (icmp_seq)

Łącza nienazwane(potoki)

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Informacje o procesach czyli polecenie "ps".

Programowanie generyczne w C++

Komunikacja za pomocą potoków. Tomasz Borzyszkowski

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

Programowanie Proceduralne

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu. Blok kontrolny procesu

Unix: programowanie procesów

Zarządzanie procesami (omawiane zagadnienia)

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Pamięć współdzielona

Stan procesu. gotowy - czeka na przydział procesora, zakończony - zakończył działanie.

Procesy i potoki. S. Samolej: Procesy

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

Transkrypt:

c Wies law P laczek 3 1 Obs luga b l edów Wwi ekszości przypadków wywo lanie systemowe (funkcja systemowa) lub funkcja biblioteczna kończ ac si e b l edem zwraca 1(czasamiNULL) iprzypisujezmiennej zewn etrznej errno wskazuj ac arodzajb l edu. Informacje o kodach b l edów oraz odpowiadajacych im komunikatach można znaleźć w man errno. Funkcja biblioteczna perror <stdio.h> Prototyp void perror(const char *s); Funkcja perror wypisuje komunikat b l edu poprzedzony napisem *s iznakiem :.! UWAGA: Pliki nag lówkowe podaje si ewzgl edem katalogu /usr/include/. 2 Procesy PROGRAM: aktywny statyczny zbiór z lożonych w odpowiedniej kolejności instrukcji oraz towarzysz acych im danych. PROCES: Podstawowe poj ecie w Uniksie. Abstrakcyjny twór sk ladaj acy si ezwykonywanego(dzia laj acego) programu oraz bież acych danych o jego stanie i zasobach za pomoc aktórychsystemoperacyjny steruje jego wykonywaniem. Proces jest jednostk adynamiczn a. W Uniksie procesy mog abyćwykonywanewspó lbieżnie (na jednym procesorze dzi eki prze l aczaniu kontekstu) wielozadaniowość 2.1 Identyfikatory zwi azane z procesami Podstawowe identyfikatory zwi azane z procesami oraz funkcje systemowe s luż ace do ich uzyskiwania: Nazwa Funkcja systemowa Opis UID uid t getuid(void); identyfikator użytkownika (rzeczywisty) GID gid t getgid(void); identyfikator grupy użytkownika (rzeczywisty) PID pid t getpid(void); identyfikator procesu PPID pid t getppid(void); identyfikator procesu macierzystego (przodka) PGID pid t getpgid(pid t pid); identyfikator grupy procesów (=PID lidera grupy) pid t getpgrp(void); getpgid(0); PGID procesu bież acego Powyższe identyfikatory przyjmuj awartościliczb ca lkowitych nieujemnych. Jedynie funkcja getpgid może zakończyć si eb l edem wówczas zwraca -1 iustawia zmienn a errno.

c Wies law P laczek 4 Pliki nag lówkowe niezb edne dla wywo lania powyższych funkcji: <sys/types.h> Zpoziomupow lokipodstawoweinformacjeobież acych procesach można uzyskać przy pomocy komendy ps np.ps -el podaje wykaz wszystkich bież acych procesów w tzw. d lugim formacie (wi ecej szczegó lów w podr eczniku systemowym man). Podgl ad najbardziej aktywnych procesów w czasie rzeczywistym można uzyskać za pomoc akomendy top. 2.2 Tworzenie procesów potomnych funkcja systemowa fork <sys/types.h> Prototyp pid t fork(void);! 0 wprocesiepotomnym 1 Tak! PID procesu potomnego wprocesiemacierzystym Funkcja systemowa fork tworzy proces potomny który jest kopi aprocesumacierzystego. Typowe wywo lanie funkcji fork switch (fork()) { case -1: perror("fork error"); exit(1); case 0: /* akcja dla procesu potomnego */ default: /* akcja dla procesu macierzystego np. wywolanie funkcji wait */ }; 2.3 Kończenie dzia lania procesu funkcje exit i exit <stdlib.h> Prototyp void exit(int status); Jednym ze sposobów zakończenia procesu jest wywo lanie funkcji bibliotecznej exit. Funkcja ta wykonuje operacje zakończenia dzia lania procesu i zwraca do procesu macierzystego ca lkowitoliczbow astatus oznaczaj ac astatuszakończeniaprocesu. Zgodnie z konwencj a w przypadku poprawnego zakończenia procesu zwracana jest 0

c Wies law P laczek 5 awprzypadkub l edu niezerowa 1.Dooznaczaniasukcesuczyporażkimożnaużyć sta lych: EXIT SUCCESS i EXIT FAILURE zdefiniowanychwpliku<stdlib.h>. Wywo lanie funkcji exit powoduje ponadto opróżnienie i zamkni ecie wszystkich otwartych strumieni oraz usuni ecie wszystkich tymczasowych plików utworzonych przy pomocy funkcji tmpfile. Można zdefiniować w lasne procedury zakończenia procesu i zerejestrować je przy pomocy funkcji bibliotecznych atexit i/lub on exit (patrz podr ecznik man). Takie procedury zostan awywo laneprzezfunkcj e exit w kolejności odwrotnej do kolejności ich rejestracji. Pozwala to m.in. na opróżnienie wszystkich buforów standardowej bibliotece wejściawyjścia. Prototyp void exit(int status); Funkcja exit różni si e od poprzedniej przede wszystkim tym że jest wywo laniem systemowym aniefunkcj abibliotekij ezyka C. Powoduje ona natychmiastowe zakończenie procesu. Wszystkie otwarte deskryptory plików należ ace do procesu s azamykanewszystkie jego procesy potomne s aadoptowane przezprocesinit adoprocesumacierzystego wysy lany jest sygna l SIGCHLD. Znaczenie parametru status jest takie jak dla funkcji exit. Wodróżnieniuodexit niewywo lujeonażadnychprocedurzarejestrowanychprzezfunkcje atexit lub on exit. Natomiast to czy opróżnia standardowe bufory wejścia-wyjścia oraz czy usuwa pliki tymczasowe stworzone przy użyciu funkcji tmpfile jest zależne od implementacji. Generalnie zaleca si eużywaniefunkcjiexit wprocesiemacierzystym(zawyj atkiem przypadku tworzenia procesów demonów) natomiast funkcji exit w procesach potomnych (by unikn ać efektów ubocznych). 2.4 Czekanie na procesy potomne funkcja systemowa wait W systemie UNIX na każdy proces za wyj atkiem procesu init (o identyfikatorze PID=1) powinien czekać jakiś proces macierzysty. Proces który si ezakończy lalenaktórynie czeka l żaden inny proces nazywa si e zombi. Proces-zombinicnierobialezajmujemiejsce w systemowej tabeli procesów. Aby unikn ać powstawania procesów-zombi w Uniksie procesy sieroty s aadoptowane przezprocesinit który w odniesieniu do nich wykonuje operacje czekania. <sys/types.h> <sys/wait.h> Prototyp pid t wait(int *stat loc); PID procesu potomnego 1 Tak 1 Faktycznie zwracanych jest tylko pierwszych osiem bitów zatem zwracane wartości należ adoprzedzia lu [0255].

c Wies law P laczek 6 Do oczekiwania na proces potomny s luży funkcja systemowa wait. Zawiesza ona dzia lanie procesu macierzystego do momentu zakończenia si e pierwszego procesu potomnego 2. Informacje o stanie potomka zwracane s aprzezparametrstat loc (tylko dwa m lodsze bajty s a używane). Jeśli proces potomny zakończy l si enormalnietonajm lodszy bajt b edzie równy 0 anast epny b edzie zawiera l kod powrotu. W przypadku zakończenia procesu potomnego na skutek sygna lu najm lodszy bajt b edzie zawiera l numer sygna lu anast epny 0 (w przypadku wygenerowania zrzutu pami eci core najstarszybit najm lodszego bajtu b edzie ustawiony na 1). Gdy parametr funkcji wait b edzie ustawiony na NULL to stan procesu potomnego nie zostanie zwrócony. Jeżeli dany proces nie ma procesów potomnych to funkcja kończy si eb l edem i ustawia zmienn a errno na ECHILD. <sys/types.h> <sys/wait.h> Prototyp pid t waitpid(pid t pid int *stat loc int options); PID procesu potomnego lub 0 1 Tak Lepsz afunkcjonalnośćniżfunkcjawait dostarcza funkcja waitpid. Funkcji tej można wskazać konkretny proces czy też grup e procesów na które ma czekać. Jeżeli argument pid > 0 i argument options = 0 to funkcja zablokuje wywo luj acy j aprocesdoczasu zakończenia procesu potomnego o PID = pid.znaczenieparametrustat loc jest takie jak dla funkcji wait. Wi ecej szczegó lów można znaleźć w podr eczniku systemowym man. ĆWICZENIE 1: Procesy Potomne: fork (1) Napisać program wypisuj acy identyfikatory UID GID PID PPID i PGID dla danego procesu. (2) Wywo lać funkcj e fork trzy razy (najlepiej w p etli for) iwypisaćpowyższeidentyfikatory dla procesu macierzystego oraz wszystkich procesów potomnych. (3) Wstawić funkcj e sleep tak aby procesy pojawia ly si enaekraniegrupowane pokoleniami od najstarszego do najm lodszego (! nie używać funkcji wait). (4) Na podstawie wyników programów narysować drzewo genealogiczne tworzonych procesów (z zaznaczonymi identyfikatorami).! Ile powstaje procesów i dlaczego? B Funkcja sleep: Prototyp unsigned sleep(unsigned seconds); Liczba nieprzespanych sekund 2 Uwaga: Funkcja wait czeka na zakończenie tylko jednego procesu potomnego tego który zakończy si e najwcześniej. W celu oczekiwania na zakończenie kolejnego procesu trzeba j a wywo lać ponownie.

c Wies law P laczek 7 2.5 Uruchamianie programów funkcja systemowa exec Funkcja systemowa exec s luży do ponownego zainicjowania procesu na podstawie wskazanego programu. Jest sześć odmian funkcji exec zgrupowanych w dwie rodziny (po trzy funkcje). Rodziny różni asi epostaci aargumentów: literal wnazwieoznacza argumenty w postaci listy a litera v wpostacitablicy(ang. vector). Poniżej omawiamy po jednym przedstawicielu każdej z rodzin. Prototyp int execl(const char *path const char *arg0... const char *argn char *null); int execv(const char *path char *const argv[ ]); Nic nie zwraca 1 Tak (pope lnia samobójstwo ) Argumenty funkcji exec: path ś c i e ż k o w a n a z w a p l i k u ( w y k o n a w c z e g o ) z a w i e r a j acego program; arg0 argument zerowy: nazwa pliku (wykon.) zawieraj acego program; arg1...argn argumenty wywo lania programu; null wskaźnik NULL; argv[ ] adres tablicy wskaźników na ci agi znaków b ed ace argumentami przekazywanymi do wykonywanego programu (ostatnim elementem powinien być NULL). Najcz eściej funkcj e exec wywo luje si e w po l aczeniu z funkcj a fork. Typowe wywo lanie fork i exec switch (fork()) { case -1: perror("fork error"); exit(1); case 0: /* proces potomny */ execl("./nowy_program.x""nowy_program.x"null); perror("execl error"); _exit(2); default: /* proces macierzysty */ }; ĆWICZENIE 2: Uruchamianie Programów: exec Napisać program podobny do poprzedniego ale taki w którym komunikaty procesów potomnych b ed a wypisywane przez program uruchamiany przez funkcj e exec.! Ile teraz powstaje procesów i dlaczego?