• Nie Znaleziono Wyników

Procesy

N/A
N/A
Protected

Academic year: 2021

Share "Procesy"

Copied!
1
0
0

Pełen tekst

(1)

Laboratorium Systemów Operacyjnych

Ćwiczenie 5. Procesy

Proces (zwany też zadaniem) jest jednostką aktywną, kontrolowaną przez system operacyjny i związaną z wykonywanym programem. Proces ma przydzielone przez system operacyjny zasoby, takie jak pamięć operacyjna, czas procesora, urządzenia wejścia-wejścia, itp. Każdy proces ma swój unikalny numer (PID). Można go pobrać z wykorzystaniem funkcji getpid(). Każdy z procesów posiada swojego rodzica, który stworzył dany proces. Jego id można pobrać z wykorzystaniem funkcji getppid(). Wyjątkiem jest proces init o id 1 który nie posiada rodzica. Do stworzenia nowego procesu w systemach UNIX wykorzystywana jest funkcja fork(), która tworzy kopię bieżącego procesu. Nowo utworzony proces rozpoczyna działanie od miejsca wywołania funkcji fork() a wszystkie wcześniej utworzone zmienne mają takie same wartości jak w procesie macierzystym. Nowo utworzony proces ma również przydzielone te same zasoby co proces macierzysty. W procesie potomnym można wykonywać długotrwałe obliczenia niezależnie od działania procesu macierzystego.

Po zakończeniu swojego działania, proces zwraca do systemu pewną liczbę (wartość zwracana przez funkcję main). Proces macierzysty może zaczekać aż proces potomny zakończy swoje działania oraz pobrać tę wartość z wykorzystaniem funkcji wait().

Do wykonania kodu innego programu służy rodzina funkcji excel(). Podmienia ona kod bieżącego procesu na kod pobrany z wskazanego pliku. Dlatego w większości sytuacji przed wykonaniem funkcji excel() należy wywołać funkcję fork().

Wartości parametrów tych funkcji oraz zwracane wartości można znaleźć w podręczniku systemowym (man).

Zadania do samodzielnego wykonania 1.

Napisz program który wyświetli na ekranie wartość PID i PPID (parent PID) przed oraz po wykonaniu funkcji fork(). Obie wartości powinny być wyświetlone z wykorzystaniem pojedynczego wywołania funkcji printf(). W linii wyświetlanej po wywołaniu funkcji fork() należy wyświetlić również wartość zwracaną przez tę funkcję.

2.

Napisz program który znajdzie liczby pierwsze w przedziale od 1 do 200. Program powinien uruchomić 2 procesy. Pierwszy proces sprawdzi liczby od 1 do 99 drugi od 100 do 200. Znalezione liczby pierwsze należy zapisać w plikach tymczasowych. Program macierzysty powinien zaczekać na zakończenie obliczeń, a następnie wyświetlić na ekranie znalezione liczby pierwsze.

3.

Napisz program który wyświetli listę plików w katalogu domowym użytkownika. Program powinien wyświetlić komunikat „pliki w katalogu domowym” przed listą plików a po liście plików komunikat „to wszystkie pliki”.

Cytaty

Powiązane dokumenty

Od początku do końca n a zaw artość HS składają się recenzje-om ów ienia współczesnego piśm iennictw a; nie tylko niem ieckiego, ale także zagranicznego,

Poziom wody kontrolowany jest czujnikami a, b, c (a=0 gdy poziom wody jest poniżej a, natomiast a=1 gdy poziom wody jest powyżej a, itp. dla pozostałych czujników). Dopływem

The problem is that the previous analyses concern- ing the processes of saturating the legal code in the nor- mative content and related to them analyses of advanced

Charakterystycznym elementem tej pracy jest skupia- nie się na procesie działania grupy, a nie tylko na zakładanym rezultacie oraz za- projektowaniu zajęć dla ekipy ludzi lub

Zad. 310) Wykaż, że jeśli W jest procesem Wienera, to procesami Wienera są

Zad. 373) Niech W będzie procesem Wienera. 310) Wykaż, że jeśli W jest procesem Wienera, to procesami Wienera są

• proces macierzysty drukuje otrzymany komunikat. Uwaga: należy utworzyć dwa potoki łączące proces macierzysty i potomny. Zapoznaj się z programem simpleredirect.c. Program ten

danych jest możliwy dla dokładnie jednego wątku w danym czasie...  Zdolność do wykonywania przez komputer więcej niż jednego zadania naraz. Wielozadaniowy system