Systemy Operacyjne Ćwiczenia

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

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.

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

Obsługa plików Procesy

2. Zarządzanie procesami

4.2 Sposób korzystania z l acza

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

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

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

Model procesu w systemie Linux. Tomasz Borzyszkowski

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

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

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

Procesy. 5. Procesy (2005/2006)

procesy odrębne dzielone

z powielaniem wielu struktur danych oraz komunikacja

eć dzielona standardu POSIX

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

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

2. Zarządzanie procesami

2. Zarządzanie procesami

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

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

Systemy Operacyjne - Operacje na plikach

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

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

Krótki kurs programowania współbieżnego

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

Paradygmaty programowania. Paradygmaty programowania

Procesy w systemach UNIX i Linux

Funkcje systemu Unix

Zarządzanie Procesami

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

Rozdzia l 3. Laboratorium 3. danych zawierajac

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

2 Przygotował: mgr inż. Maciej Lasota

Zaawansowane programowanie w C++

Dariusz Wawrzyniak 5 kwietnia 2001

Paradygmaty programowania

Komunikacja za pomocą potoków. Tomasz Borzyszkowski

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

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

Ghost in the machine

4. Procesy pojęcia podstawowe

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

Grupy i cia la, liczby zespolone

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

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

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

Architektura systemów komputerowych

Wstęp do Programowania, laboratorium 02

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

Języki i metodyka programowania. Wprowadzenie do języka C

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Proces y i y w i ąt ą ki

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

... Ireneusz Mrozek. Wydział Informatyki

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

Programowanie komputerowe. Zajęcia 4

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

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

Plan wyk ladu. Kodowanie informacji. Systemy addytywne. Definicja i klasyfikacja. Systemy liczbowe. prof. dr hab. inż.

Wskaźniki, funkcje i tablice

4. Procesy pojęcia podstawowe

IPC: Kolejki komunikatów

Łącza nienazwane(potoki)

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

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Technologie Informacyjne - Linux 2

Obliczenia rozproszone z wykorzystaniem MPI

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

Kolejki FIFO (łącza nazwane)

Wskaźniki w C. Anna Gogolińska

Temat zajęć: Tworzenie i obsługa wątków.

3 Przygotował: mgr inż. Maciej Lasota

SUMA KONTROLNA (icmp_cksum) NUMER KOLEJNY (icmp_seq)

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

UŻYCIE I ZARZĄDZANIE WĄTKAMI

Zmienne, stałe i operatory

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

Zastosowanie Robotów. Ćwiczenie 6. Mariusz Janusz-Bielecki. laboratorium

Programowanie komputerowe. Zajęcia 5

KOLEJKI KOMUNIKATÓW IPC

Szeregowanie w systemach czasu rzeczywistego

Uruchamianie programów w systemie Linux, potoki, strumienie, procesy, alias

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

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

Zarządzanie procesami (omawiane zagadnienia)

Wyk lad 9 Podpierścienie, elementy odwracalne, dzielniki zera

w odróżnieniu od procesów współdzielą przestrzeń adresową mogą komunikować się za pomocą zmiennych globalnych

System operacyjny MACH

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

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

J. Ułasiewicz Programowanie aplikacji współbieżnych 1

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

1.1 Definicja procesu

Procesy, wątki i zasoby

Transkrypt:

Systemy Operacyjne Ćwiczenia Wies law P laczek Wydzia l Fizyki, Astronomii i Informatyki Stosowanej, Uniwersytet Jagielloński ul. Reymonta 4, 30-059 Kraków 4 lutego 2009 Streszczenie Praca ta zawiera materia ly do ćwiczeń w ramach kursu,,systemy operacyjne dla studiów Informatyki Stosowanej oraz Fizyki Komputerowej na Wydziale FAIS Uniwersytetu Jagiellońskiego w Krakowie. W pierwszych siedmiu rozdzia lach omawiane sa podstawowe zagadnienia dotyczace tworzenia, inicjowania, synchronizacji procesów oraz komunikacji mi edzyprocesowej w systemie operacyjnym UNIX. Natomiast rozdzia l ósmy poświ econy jest problematyce tworzenia i synchronizacji watków standardu POSIX. Każdy rozdzia l zakończony jest ćwiczeniem do samodzielnego wykonania przez studentów. Na ogó l polega ono na napisaniu krótkiego programu w j ezyku C, implementujacego określone zadanie przy użyciu odpowiednich funkcji systemowych i/lub bibliotecznych.

c Wies law P laczek 1 Spis treści 1 Obs luga b l edów 2 2 Procesy 2 2.1 Identyfikatory zwiazane z procesami...................... 2 2.2 Tworzenie procesów potomnych funkcja systemowa fork.......... 3 2.3 Kończenie dzia lania procesu funkcja systemowa exit............ 3 2.4 Czekanie na procesy potomne funkcja systemowa wait........... 4 2.5 Uruchamianie programów funkcja systemowa exec............. 6 3 Sygna ly 7 3.1 Opis sygna lów.................................. 7 3.2 Wysy lanie sygna lów.............................. 8 3.3 Obs luga sygna lów................................ 9 4 Potoki 11 4.1 Wprowadzenie.................................. 11 4.2 Potoki nienazwane............................... 13 4.3 Potoki nazwane (potoki FIFO)......................... 14 5 Semafory 15 5.1 Poj ecia ogólne.................................. 15 5.2 Semafory w Uniksie (System V)........................ 16 5.2.1 Podstawowe w lasności......................... 16 5.2.2 Realizacja................................ 17 6 Pami eć dzielona 21 6.1 Wprowadzenie.................................. 21 6.2 Tworzenie (uzyskiwanie dost epu do) pami eci dzielonej............ 21 6.3 Sterowanie pami eci a dzielona......................... 22 6.4 Operacje na pami eci dzielonej......................... 22 7 Kolejki komunikatów 24 7.1 Wprowadzenie.................................. 24 7.2 Tworzenie kolejek komunikatów........................ 24 7.3 Sterowanie kolejkami komunikatów...................... 25 7.4 Operacje na kolejkach komunikatów...................... 25 8 Watki 28 8.1 Wprowadzenie.................................. 28 8.2 Tworzenie watków............................... 29 8.3 Kończenie dzia lania watków.......................... 30 8.4 Podstawowe operacje zarzadzania watkami.................. 31 8.5 Synchronizacja watków............................. 31

c Wies law P laczek 2 1 Obs luga b l edów W wi ekszości przypadków funkcja systemowa (wywo lanie systemowe) lub funkcja biblioteczna, która zakończy si e b l edem zwraca wartość 1 (czasami NULL) i przypisuje zmiennej zewn etrznej errno wartość wskazujac a rodzaj b l edu. Kody b l edów oraz odpowiadajace im komunikaty b l edów znajduja si e w pliku nag lówkowym <sys/errno.h>. UWAGA: Pliki nag lówkowe podaje si e wzgl edem katalogu /usr/include/. Funkcja biblioteczna perror <stdio.h> Prototyp void perror(const char *s); wartość Nie Funkcja perror wypisuje komunikat b l edu poprzedzony napisem *s i znakiem :. 2 Procesy PROGRAM: Nieaktywny, statyczny zbiór z lożonych w odpowiedniej kolejności instrukcji oraz towarzyszacych im danych. PROCES: Podstawowe poj ecie w Uniksie. Abstrakcyjny twór sk ladaj acy si e z wykonywanego (dzia laj acego) programu oraz bieżacych danych o jego stanie i zasobach, za pomoca których system operacyjny steruje jego wykonywaniem. Proces jest jednostka dynamiczna. W Uniksie procesy moga być wykonywane równolegle (na jednym procesorze prze l aczanie kontekstu) wielozadaniowość. 2.1 Identyfikatory zwiazane z procesami Podstawowe identyfikatory zwiazane 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 przyjmuja wartości liczb ca lkowitych nieujemnych. Jedynie funkcja getpgid może zakończyć si e b l edem wówczas zwraca wartość -1 i ustawia zmienna errno.

c Wies law P laczek 3 Pliki nag lówkowe niezb edne dla wywo lania powyższych funkcji: <sys/types.h> <unistd.h> Z poziomu pow loki podstawowe informacje o bież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). Podglad najbardziej aktywnych procesów w czasie rzeczywistym można uzyskać za pomoca komendy top. 2.2 Tworzenie procesów potomnych funkcja systemowa fork <sys/types.h>, <unistd.h> Prototyp pid t fork(void); wartość 0 w procesie potomnym 1 Tak PID procesu potomnego w procesie macierzystym Funkcja systemowa fork tworzy proces potomny, który jest kopia procesu macierzystego. 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 funkcja systemowa exit <stdlib.h> Prototyp void exit(int status); wartość Nie Jednym ze sposobów zakończenia procesu jest wywo lanie funkcji systemowej exit. Funkcja ta wykonuje operacje zakończenia dzia lania procesu i zwraca do procesu macierzystego ca lkowitoliczbow a wartość status, oznaczajac a status zakończenia procesu. Zgodnie

c Wies law P laczek 4 z konwencja, w przypadku poprawnego zakończenia procesu zwracana jest wartość 0, a w przypadku b l edu wartość niezerowa 1. Do oznaczania sukcesu czy porażki można użyć sta lych: EXIT SUCCESS i EXIT FAILURE, zdefiniowanych w pliku <stdlib.h>. Można zdefiniować w lasne procedury zakończenia procesu i zerejestrować je przy pomocy funkcji bibliotecznej atexit. Takie procedury zostana wywo lane przez funkcj e exit w kolejności odwrotnej do kolejności ich rejestracji. 2.4 Czekanie na procesy potomne funkcja systemowa wait W systemie UNIX na każdy proces, za wyjatkiem procesu init (o identyfikatorze PID = 1), powinien czekać jakiś proces macierzysty. Proces, który si e zakończy l, ale na który nie czeka l żaden inny proces nazywa si e zombi. Proces-zombi nic nie robi, ale zajmuje miejsce w systemowej tabeli procesów. Aby uniknać powstawania procesów-zombi, w Uniksie procesy,,sieroty sa,,adoptowane przez proces init, który w odniesieniu do nich wykonuje operacje czekania. <sys/types.h>, <sys/wait.h> Prototyp pid t wait(int *stat loc); wartość PID procesu potomnego 1 Tak 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 sa przez parametr stat loc (tylko dwa m lodsze bajty sa używane). Jeśli proces potomny zakończy l si e normalnie, to najm lodszy bajt b edzie równy 0, a nast 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, a nast epny wartość 0 (w przypadku wygenerowania zrzutu pami eci core, najstarszy bit 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 e b l edem i ustawia zmienna errno na ECHILD. <sys/types.h>, <sys/wait.h> Prototyp pid t waitpid(pid t pid, int *stat loc, int options); wartość PID procesu potomnego lub 0 1 Tak Lepsza funkcjonalność niż funkcja wait dostarcza funkcja waitpid. Funkcji tej można wskazać konkretny proces czy też grup e procesów, na które ma czekać. Jeżeli argument 1 Faktycznie zwracanych jest tylko pierwszych osiem bitów, zatem zwracane wartości należa do przedzia lu [0,255]. 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 ja wywo lać ponownie.

c Wies law P laczek 5 pid > 0 i argument options = 0, to funkcja zablokuje wywo luj acy ja proces do czasu zakończenia procesu potomnego o PID = pid. Znaczenie parametru stat 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 wypisujacy identyfikatory UID, GID, PID, PPID i PGID dla danego procesu. (2) Wywo lać funkcj e fork 3 razy (np. w p etli) i wypisać powyższe identyfikatory dla wszystkich procesów potomnych. (3) Wstawić funkcj e sleep tak, aby procesy pojawia ly si e na ekranie grupowane pokoleniami od najstarszego do najm lodszego. (4) Na podstawie wyników programów narysować,,drzewo genealogiczne tworzonych procesów (z zaznaczonymi identyfikatorami). Ile powstaje procesów i dlaczego? Funkcja sleep: <unistd.h> Prototyp unsigned sleep(unsigned seconds); wartość Liczba nieprzespanych sekund Nie

c Wies law P laczek 6 2.5 Uruchamianie programów funkcja systemowa exec Funkcja systemowa exec s luży do ponownego zainicjowania procesu na podstawie wskazanego programu. Jest 6 odmian funkcji exec zgrupowanych w 2 rodziny (po 3 funkcje). Rodziny różnia si e postacia argumentów: litera l w nazwie oznacza argumenty w postaci listy, a litera v w postaci tablicy (ang. vector). Poniżej omawiamy po jednym przedstawicielu każdej z rodzin. <unistd.h> Prototyp int execl(const char *path, const char *arg0,..., const char *argn, char *null); int execv(const char *path, char *const argv[ ]); wartość Nic nie zwraca 1 Tak (,,pope lnia samobójstwo ) Argumenty funkcji exec: path ścieżkowa nazwa pliku (wykonawczego) zawierajacego program; arg0 argument zerowy: nazwa pliku (wykon.) zawierajacego program; arg1,...,argn argumenty wywo lania programu; null wskaźnik NULL; argv[ ] adres tablicy wskaźników na ciagi 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 funkcja 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 Zmodyfikować poprzedni program tak, aby komunikaty procesów potomnych by ly wypisywane przez program uruchamiany przez funkcj e exec. Ile teraz powstaje procesów i dlaczego?