[ANSI C][LINUX] Pamięć dzielona: producent i konsument
Przy pomocy pamieci dzielonej oraz semaforow systemu UNIX zaimplementowac
problem ,,Producenta–Konsumenta”. Zamiast potoku uzyc N-elementowego
bufora cyklicznego (tzn. po dojsciu do konca bufora wracamy na jego poczatek)
umieszczonego w pamieci dzielonej, gdzie elementem bufora jest pewna ustalona porcja
bajtow. Dostep do wspolnego bufora synchronizowac przy pomocy semaforow.
Dodatkowo stworzyc biblioteke statyczna oraz dzielona z funcji do obslugi semaforow i pamieci dzielonej.
a zeby wszystko dobrze dzialalo trzeba stworzyc plik "plik.txt" z jakims tekstem w srodku.
____________________________________________________________________
Program nr 1: producent: header.h funkcje.c pamiec.h pamiec.c 1.c
Program tworzy pamiec wspoldzielona o podanym identyfikatorze, dowiazuje do niej bufor cykliczny i porcjami wrzuca do niego tekst pobierany z pliku plik.txt. Tworzy rowniez semafor, ktory steruje zapisem i odczytem danych z i do bufora cyklicznego.
Wypisuje pobrany tekst, a nastepnie wrzuca go w bufor.
Program nr 2: konsument: header.h funkcje.c pamiec.h pamiec.c 2.c
Program tworzy dowiazanie do pamieci dzielonej w celu pobrania z niej danych, oraz tworzy powtornie semafor w celu sterowania dostepem do pamieci dzielonej. Po pobraniu teksty, wyswietla go na ekranie(trzeba poczekac 1-3s) i wrzuca go w plik kopia.txt.
UWAGA!! po wyświetleniu tekstu prosze o wcisniecie
CTRL+ C w celu zakonczenia programu, gdyz niestety nie wiedzialem jak go poprawnie zakonczyc. Wrazie pominiecia tego kroku, na ekran beda wypisywane smieci z bufora plus pobrany tekst.
_____________________________________________________________________
BIBLIOTEKI: DYNAMICZNA I STATYCZNA
Domyślnie makefile normalnie kompiluje i linkuje kod.
Aby używać biblioteki dynamicznej statycznej, proszę o użycie makefile2(czyli zmienic nazwe poprzedniego, a z makefile2 usunac "2").
#biblioteka statyczna
libfunkcje.a: funkcje.o
#biblioteka dynamiczna
libpamiec.so: pamiec.c
_____________________________________________________________________
KOMPILACJA...
----------------------------------------------------------------------
W katalogu znajduje sie plik MAKEFILE z podstawową funkcjonalnością.
W celu skompilowania plików, należy wykonać komendę:
make
... I URUCHOMIENIE
----------------------------------------------------------------------
w celu uruchomienia programów, należy wykonać komendy:
PROGRAM 1:
./producent
PROGRAM 2:
./konsument
-----------------------------------------------------------------------
W celu wyczyszczenia katalogu ze wszelkich plików wynikowych, należy użyć komendy:
make clean
kod - klik:
problem ,,Producenta–Konsumenta”. Zamiast potoku uzyc N-elementowego
bufora cyklicznego (tzn. po dojsciu do konca bufora wracamy na jego poczatek)
umieszczonego w pamieci dzielonej, gdzie elementem bufora jest pewna ustalona porcja
bajtow. Dostep do wspolnego bufora synchronizowac przy pomocy semaforow.
Dodatkowo stworzyc biblioteke statyczna oraz dzielona z funcji do obslugi semaforow i pamieci dzielonej.
a zeby wszystko dobrze dzialalo trzeba stworzyc plik "plik.txt" z jakims tekstem w srodku.
____________________________________________________________________
Program nr 1: producent: header.h funkcje.c pamiec.h pamiec.c 1.c
Program tworzy pamiec wspoldzielona o podanym identyfikatorze, dowiazuje do niej bufor cykliczny i porcjami wrzuca do niego tekst pobierany z pliku plik.txt. Tworzy rowniez semafor, ktory steruje zapisem i odczytem danych z i do bufora cyklicznego.
Wypisuje pobrany tekst, a nastepnie wrzuca go w bufor.
Program nr 2: konsument: header.h funkcje.c pamiec.h pamiec.c 2.c
Program tworzy dowiazanie do pamieci dzielonej w celu pobrania z niej danych, oraz tworzy powtornie semafor w celu sterowania dostepem do pamieci dzielonej. Po pobraniu teksty, wyswietla go na ekranie(trzeba poczekac 1-3s) i wrzuca go w plik kopia.txt.
UWAGA!! po wyświetleniu tekstu prosze o wcisniecie
CTRL+ C w celu zakonczenia programu, gdyz niestety nie wiedzialem jak go poprawnie zakonczyc. Wrazie pominiecia tego kroku, na ekran beda wypisywane smieci z bufora plus pobrany tekst.
_____________________________________________________________________
BIBLIOTEKI: DYNAMICZNA I STATYCZNA
Domyślnie makefile normalnie kompiluje i linkuje kod.
Aby używać biblioteki dynamicznej statycznej, proszę o użycie makefile2(czyli zmienic nazwe poprzedniego, a z makefile2 usunac "2").
#biblioteka statyczna
libfunkcje.a: funkcje.o
#biblioteka dynamiczna
libpamiec.so: pamiec.c
_____________________________________________________________________
KOMPILACJA...
----------------------------------------------------------------------
W katalogu znajduje sie plik MAKEFILE z podstawową funkcjonalnością.
W celu skompilowania plików, należy wykonać komendę:
make
... I URUCHOMIENIE
----------------------------------------------------------------------
w celu uruchomienia programów, należy wykonać komendy:
PROGRAM 1:
./producent
PROGRAM 2:
./konsument
-----------------------------------------------------------------------
W celu wyczyszczenia katalogu ze wszelkich plików wynikowych, należy użyć komendy:
make clean
kod - klik:
Komentarze
Prześlij komentarz