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

Podobne dokumenty
Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów. Iwona Kochańska

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

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli)

Struktury Struktura polami struct struct struct struct

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

nowe operatory &. (kropka) * operator rzutowy ->, (przecinek) sizeof

Ingerencja w kod systemu operacyjnego (przerwania) Programowanie na niskim poziomie (instrukcje specjalne) Trudności implementacyjne (alg.

Podział programu na moduły

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

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Krótki kurs programowania współbieżnego (2)

1. Utwórz blok pamięci współdzielonej korzystając z poniższego kodu:

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

Podstawy programowania komputerów

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

Wykład 6_1 Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych

Liczby pseudolosowe. #include <stdio.h> #include <stdlib.h> int main() { printf("%d\n", RAND_MAX); return 0; }

Wstęp. #define include include include include include include

Co nie powinno być umieszczane w plikach nagłówkowych:

Struktury czyli rekordy w C/C++

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

Struktura programu. Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem.

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

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

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

Struktury. Przykład W8_1

2 Przygotował: mgr inż. Maciej Lasota

Wstęp do programowania 1

Wstęp do programowania

Wstęp do programowania

Wstęp do Programowania, laboratorium 02

Krótkie wprowadzenie do korzystania z OpenSSL

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 8. Karol Tarnowski A-1 p.

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

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 8. Karol Tarnowski A-1 p.

Programowanie wspóªbie»ne

Futex (Fast Userspace Mutex) Łukasz Białek

Podstawy programowania w języku C++

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Wstęp. do języka C na procesor (kompilator RC51)

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

IPC: Kolejki komunikatów

Język C zajęcia nr 11. Funkcje

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Programowanie współbieżne Wykład 4. Rafał Skinderowicz

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Wykład 8: klasy cz. 4

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

C-struktury wykład. Dorota Pylak

Funkcja (podprogram) void

Programowanie strukturalne i obiektowe

Zmienne, stałe i operatory

Stałe, tablice dynamiczne i wielowymiarowe

Programowanie w C Wartości pseudolosowe i pomiar czasu

Tablicę 2-wymiarową można przedstawić jako pewien zestaw tablic 1-wymiarowych np.:

Monitory. Jarosław Kuchta

Materiał uzupełniający do ćwiczen z przedmiotu: Programowanie w C ++ - ćwiczenia na wskaźnikach

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

KOLEJKA (QUEUE) (lista fifo first in, first out)

Języki i metodyka programowania. Wskaźniki i tablice.

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

Mechanizmy z grupy IPC

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Pola i metody statyczne

Język C++ zajęcia nr 2

Rys. 9-1 Procesy P1 i P2 komunikuję się poprzez wspólny obszar. pamięci.

Programowanie w języku C++

Spis treści PLIKI BINARNE W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23

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

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.

Krótki kurs programowania współbieżnego

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

Podstawy programowania. Wykład: 7. Funkcje Przekazywanie argumentów do funkcji. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

1. Wprowadzanie danych z klawiatury funkcja scanf

Temat zajęć: Mechanizmy IPC: semafory

Etap 2 - Budowa interfejsu. typedef struct ELEMENT* stos; struct ELEMENT { dane Dane; stos Nastepny; }; struct kolejka { stos Poczatek, Koniec; };

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

ALGORYTMY I STRUKTURY DANYCH

Wstęp do programowania

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Przesłanianie nazw, przestrzenie nazw

Przeplot. Synchronizacja procesów. Cel i metody synchronizacji procesów. Wątki współbieżne

Pomoc dla użytkowników systemu asix 6 i 7. Drajwer Bufor. Dok. Nr PLP6021 Wersja:

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

1. Abstrakcyjne typy danych

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

Wskaźniki. Informatyka

Wskaźniki w C. Anna Gogolińska

Transkrypt:

Semafory przypomnienie semafory służą ochronie dostępu procesów do sekcji krytycznej; na semaforach dostępne są dwie operacje: podniesienie semafora signal, opuszczenie semafora wait opuszczony semafor nie daje się już dalej opuścić i proces, który sobie tego życzy, musi poczekać, aż inny proces podniesie semafor; proces, korzystający z sekcji krytycznej chronionej przez semafor S: operacje prywatne procesu; wait(s); operacje w sekcji krytycznej; signal(s); operacje prywatne procesu; Wykład8,29IV2008,str.2 Potrzebny plik nagłówkowy #include"semafory.h": #include <stdio.h> #include <stdlib.h> #include <sys/ipc.h> #include <sys/sem.h> #include <sys/shm.h> #include <sys/types.h> typedef int Semafor; typedef void* Wsp_pamiec; void blad(char* s); Semafor ustaw_semafor(key_t nazwa, int start); Semafor usun_semafor(semafor sem); void signal(semafor sem); void wait(semafor sem); Wsp_pamiec utworz_pamiec(key_t nazwa, int rozm);

Użycie pliku nagłówkowego w programie: gcc semafory.c moj_program.c W programie moj_program.c musi być dyrektywa #include"semafory.h" Wykład8,29IV2008,str.4 Deklaracja i inicjalizacja semafora: typedef int Semafor; Semafor ustaw_semafor(key_t nazwa, int start); wprowadza nowy semafor: nazwa nazwa semafora, start początkowa wartość(dla semafora binarnego: 1), wartość wynikowa identyfikator semafora do używania w programie. Przykład: MSemafor sem = ustaw_semafor((key_t)123, 1);

Usuwanie semafora: void usun_semafor(semafor sem); usuwa semafor: sem identyfikator semafora(wprowadzony przez ustaw_semafor()). Operacje na semaforze: void signal(semafor sem); void wait(semafor sem); podniesienie i opuszczenie semafora: signal(sem) podniesienie semafora sem, wait(sem) opuszczenie semafora sem. Przykład użycia semafora producent Wykład8,29IV2008,str.6 Semafor sem = ustaw_semafor((key_t)123, 1); p=produkuj();juz=0; do{ wait(sem); if(buforniejestpełny){ włóżpdobufora;juz=1; signal(sem); while(!juz);

Przykład użycia semafora konsument Semafor sem = ustaw_semafor((key_t)123, 1); juz=0; do{ wait(sem); if(buforniejestpusty){ wyjmijzbuforadop;juz=1; signal(sem); while(!juz); konsumuj(p); Lokalność zmiennych w procesie Wykład8,29IV2008,str.8 Musimy jeszcze zrealizować komendy wyżej nieformalnie opisane jako: buforniejestpusty, buforniejestpełny, włóżpdobufora, wyjmijzbuforadop. Każdy proces ma własną przestrzeń nazw, więc bufor zadeklarowany w jednym procesie będzie niedostępny w innym. Np. fragment programu int n=3; if(fork()){n++;printf("%i\n",n); else{n--;printf("%i\n",n); wydrukuje4i2 wartościdwóchróżnychzmiennychn. Jak zmusić konsumenta i producenta dopracynatymsamymbuforze?

Wspólna pamięć w Uniksie Deklaracja i inicjalizacja wspólnej pamięci: typedef void* Wsp_pamiec; Wsp_pamiec utworz_pamiec(key_t nazwa, int rozm); wprowadza nową wspólną pamięć: nazwa nazwa wspólnej pamięci, rozm liczba bajtów wspólnej pamięci, wartość wynikowa wskaźnik na utworzoną wspólną pamięć. Przykład: Mstruct dane_st{ int bufor[rozm_bufora]; int in; int out; ; struct dane_st* dane; Wsp_pamiec pam = utworz_pamiec((key_t)123, sizeof(*dane)); dane =(struct dane_st*)pam; Wspólna pamięć w Uniksie Wykład8,29IV2008,str.10 Operacje na wspólnej pamięci: poprzez pola struktury dane: dane->bufor dane->in dane->out