This PDF 1.5 document has been generated by Microsoft® Word 2010, and has been sent on pdf-archive.com on 19/11/2015 at 18:19, from IP address 178.36.x.x.
The current document download page has been viewed 387 times.
File size: 384.68 KB (2 pages).
Privacy: public file
Projekt: Zarządzanie procesami / Wzajemne wykluczanie
Napisad program sterujący w czasie rzeczywistym systemem technologicznym przedstawionym na rysunku 1.
Celem algorytmu sterującego jest nalewanie płynu do butelek o odpowiednich parametrach (PH = 7 0,3,
temp=30
2 , pojemnośd L=5 0,25 kg).
Celem projektu jest zarządzanie procesami sterującymi czterema zaworami oraz regulacją temperatury za pomocą
oddzielnych procesów pracujących współbieżnie.
W programie pr4a.c utworzono odpowiednią liczbę wątków symulujących poziom, PH oraz temperaturę cieczy w
zbiorniku, poziom cieczy w butelce oraz informację o prawidłowym położeniu butelki pod zaworem napełniania
butelek.
Dostęp do tych informacji możliwy jest poprzez pamięd współdzieloną w postaci struktury:
typedef struct {
// stan czynnika:
float Temp, Poziom, PH, m;
// stan regulatorow:
bool Zawor1, Zawor2, Zawor3;
float Grzejnik;
// stan beczek:
bool Beczka_OK, NowaBeczka;
// sterowanie programem:
pthread_mutex_t mutex;
bool KONIEC_PROG;
} bufor_t;
gdzie:
float Poziom, PH, Temp
bool Zawor1, Zawor2, Zawor3
-
poziom, PH oraz temperatura cieczy w zbiorniku,
-
float Grzejnik
float m
bool Beczka_OK
-
bool NowaBeczka
-
pthread_mutex_t mutex
-
bool KONIEC_PROG
-
sterowanie zaworami rurociągu A, rurociągu B oraz zawór
butelkowania
regulacja mocy grzejnika (wartośd z zakresu 0 – 1)
poziom cieczy w butelce,
czujnik prawidłowego położenia butelki pod zaworem
napełniania butelek
uruchomienie procesu przesunięcia butelek (nowa butelka
jest gotowa do napełniania dopiero, gdy zmienna
Beczka_OK przyjmie wartośd TRUE)
mutex wyłączności odczytu i zapisu zmiennych w pamięci
współdzielonej
zmienna sygnalizująca koniec programu
Program powinien realizowad następujące zadania:
1. Program powinien składad się z czterech osobnych procesów sterujących zmiennymi: Zawor1, Zawor2, Grzejnik
oraz Zawor3 wraz NowaBeczka
2. Procesy mogą pobierad informacje o stanie czynnika i ustawiad stan zaworów rurociągów (zmienne Poziom, PH,
Temp, Zawor1, Zawor2, Zawor3, Grzejnik, m, Beczka_OK, NowaBeczka) pod warunkiem wyłączności tej operacji
(należy zająd mutex na czas tej operacji).
3. Procesy sterowania powinny zakooczyd swoje działanie po ustawieniu zmiennej KONIEC_PROG (zmienna
ustawiana jest po naciśnięciu klawisza ‘q’ w oknie symulatora).
Program należy napisad w postaci 2 osobnych programów: symulator (pr4a.c) oraz sterownik uruchamiający 4
procesy: (w nawiasie podane są funkcje, jakie należy wykorzystad do pisania poszczególnych programów)
Zawór Z1: (fork, szeregowanie karuzelowe, priorytet dobrad)
Zawór Z2: (fork, szeregowanie FIFO, priorytet dobrad)
Grzejnik: (exec, szeregowanie sporadyczne, priorytet N= dobrad, L= dobrad, B/T = 20%)
Zawór Z3: (spawn, szeregowanie karuzelowe, priorytet dobrad)
Każdy proces po wykonaniu odczytu i ustaleniu stanu zaworów powinien zwolnid procesor (funkcja int
sched_yield(void);)
Rys 1- model procesu
Kompilację programu pr4a.c ze względu na wykorzystane biblioteki należy wykonad następującą instrukcją:
gcc pr4a.c -lncurses -lm -o pr4a
Projekt.pdf (PDF, 384.68 KB)
Use the permanent link to the download page to share your document on Facebook, Twitter, LinkedIn, or directly with a contact by e-Mail, Messenger, Whatsapp, Line..
Use the short link to share your document on Twitter or by text message (SMS)
Copy the following HTML code to share your document on a Website or Blog