PR_W01_Procesy_watki.pdf

(333 KB) Pobierz
Wstęp.
Procesy i wątki. 
Krzysztof Banaś
Przetwarzanie współbieżne, równoległe i rozproszone
1
Cel zajęć
Zapoznanie z technikami i narzędziami programistycznymi 
służącymi do tworzenia programów równoległych
Przedstawienie sprzętu wykorzystywanego do obliczeń 
równoległych
Nauczenie sposobów tworzenia i implementacji algorytmów 
równoległych
Zapoznanie z technikami analizy programów równoległych oraz 
rozwiązywania pojawiających się w nich problemów 
programistycznych
Przedstawienie wybranych dziedzin zastosowań przetwarzania 
równoległego oraz występujących tam algorytmów
Krzysztof Banaś
Przetwarzanie współbieżne, równoległe i rozproszone
2
Historia i pojęcia wstępne
Przetwarzanie współbieżne
realizacja wielu programów (procesów) w taki sposób, że ich 
trwanie od momentu rozpoczęcia do momentu zakończenia 
może się na siebie nakładać
współbieżność pojawiła się wraz z wielozadaniowymi 
systemami operacyjnymi (lata 60­te, Multics – 1965) i nie 
wymusza równoległości
współbieżność związana jest z szeregiem problemów 
teoretycznych wynikłych z prób realizacji wielozadaniowych 
systemów operacyjnych
istnieje wiele mechanizmów niskiego poziomu 
(systemowych) do rozwiązywania problemów współbieżności 
Krzysztof Banaś
Przetwarzanie współbieżne, równoległe i rozproszone
3
Procesy
Proces:
ciąg rozkazów (wątek główny) i ewentualnie inne wątki
stos (wątku głównego)
przestrzeń adresowa
dodatkowe elementy tworzące m.in. kontekst procesu
pid_t fork( void ) 
int  execv(const  char  *filename,  char  *const  argv []) 
pid_t wait(pid_t pid, int *status) 
Tworzenie procesu:
Krzysztof Banaś
Przetwarzanie współbieżne, równoległe i rozproszone
4
Tworzenie procesów
main(){
pid = fork(); 
if(pid==0){ 
wyn = execl(.....);
if(wyn==....) ....;  
} else {
wyn = wait(&stan);  
(if stan==....)....;
}
// np. execl(„/usr/bin/ls”, (char *) 0);
}
uwaga: zachowanie zmiennych (w tym globalnych)
Krzysztof Banaś
Przetwarzanie współbieżne, równoległe i rozproszone
5
Zgłoś jeśli naruszono regulamin