Warstwy oprogramowania wejścia/wyjścia

Podobne dokumenty
Sterowniki urządzeń w systemie operacyjnym RTEMS

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

Pliki. Funkcje tworzące pliki i operujące na nich opisane są w części 2 pomocy systemowej. Tworzenie i otwieranie plików:

Laboratorium z systemów operacyjnych. System plików - funkcje systemowe. Anna Wojak

PROCESORY SYGNAŁOWE - LABORATORIUM. Ćwiczenie nr 03

Działanie systemu operacyjnego

Linux Kernel III. Character devices

Działanie systemu operacyjnego

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011

Tworzenie sterowników dla FreeBSD. Michał Hajduk

Kolejki FIFO (łącza nazwane)

Pliki. Informacje ogólne. Obsługa plików w języku C

Wykład 3: Implementacja programów wbudowanych

Działanie systemu operacyjnego

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

Działanie systemu operacyjnego

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

Klient-Serwer Komunikacja przy pomocy gniazd

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

Struktury. Przykład W8_1

Iteracyjny serwer TCP i aplikacja UDP

Tworzenie aplikacji rozproszonej w Sun RPC

Mechanizmy z grupy IPC

IPC: Kolejki komunikatów

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

Pliki. Informacje ogólne. Obsługa plików w języku C


Futex (Fast Userspace Mutex) Łukasz Białek

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

Protokół IEC

Biblioteka standardowa - operacje wejścia/wyjścia

Hardware mikrokontrolera X51

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

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

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej

Różne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY

Temat zajęć: Obsługa systemu plików.

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

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

Wykład 12. Zarządzanie pamięcią (część III) oraz urządzenia sieciowe. Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB

Systemy operacyjne system przerwań

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

SYSTEMY WEJŚCIA-WYJŚCIA

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

FAQ: /PL Data: 09/06/2012. Zastosowanie zmiennych Raw Data Type WinCC v7.0

Industrial Ethernet Dokumentacja techniczna połączenia Sterowniki S7-400(300) firmy Siemens - System PRO-2000 firmy MikroB

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi)

Klasyczne problemy synchronizacji

Konfiguracja sterowników Horner APG do pracy w trybie Modbus RTU Master

LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program

Język C, tablice i funkcje (laboratorium, EE1-DI)

Konfiguracja sterowników Horner APG do pracy w trybie Modbus RTU Master

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

Zwielokrotnianie wejścia wyjścia

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

UNIX: architektura i implementacja mechanizmów bezpieczeństwa. Wojciech A. Koszek dunstan@freebsd.czest.pl Krajowy Fundusz na Rzecz Dzieci

Wykład 2 Proces, stany procesu i przejścia pomiędzy nimi. Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB

Wykład 4 Moduły jądra i urządzenia blokowe. Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB

Konfiguracja programu Merz OPC Server AS511 i oprogramowania InTouch do komunikacji ze sterownikiem Siemens Simatic S5

Systemy wejścia-wyjścia. wyjścia

Wskaźniki. Informatyka

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Dodatkowo klasa powinna mieć destruktor zwalniający pamięć.

OPERACJE NA PLIKACH. Podstawowe pojęcia:

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Podstawy Programowania Obiektowego

Protokół IEC

struct Student { char nazwisko[30]; int wiek; float ocena; }; #define MAX_ROZMIAR 3 Student lista_studentow[max_rozmiar];

Tryby komunikacji między procesami w standardzie Message Passing Interface. Piotr Stasiak Krzysztof Materla

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

Sprzętowe zabezpieczenie oprogramowania. lockey. dokumentacja programisty i API

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.

część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia

Pośredniczy we współpracy pomiędzy procesorem a urządzeniem we/wy. W szczególności do jego zadań należy:

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

NFS jest protokołem zdalnego wywoływania procedur (RPC)

Zadanie 2: transakcyjny protokół SKJ (2015)

1.1. Wymogi bezpieczeństwa Pomoc techniczna TIA Portal V13 instalacja i konfiguracja pakietu...18

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

Działanie i charakterystyka sterownika GE FANUC VersaMaxNano

external Data Representation

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Program wykładów. Strona WWW przedmiotu: Program ćwiczeń projektowych

Struktura QSM (Queued Serial Module)

Podstawy programowania sterowników SIMATIC S w języku LAD / Tomasz Gilewski. Legionowo, cop Spis treści

Zewnętrzne układy peryferyjne cz. 1 Wykład 12

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)

Wykład PASCAL - Pliki tekstowe

Architektura i administracja systemów operacyjnych

Struktura systemów komputerowych

Wykład 10 Zarządzanie pamięcią

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Wizualizacja danych sensorycznych. Control Center.

Schematy zarzadzania pamięcia

Materiały dodatkowe Krótka charakterystyka protokołu MODBUS

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

CONFidence 13/05/2006. Jarosław Sajko, PCSS

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

Wykład 5: Specyfikacja na poziomie systemowym

System plików warstwa fizyczna

Transkrypt:

Warstwy oprogramowania wejścia/wyjścia 1 Programy użytkownika Rosnący poziom abstrakcji Oprogramowanie systemowe niezależne od urządzenia Sterowniki urządzeń Procedury obsługi przerwań Sprzęt

Funkcje sterownika urzadzenia 2 Jądro systemu komunikuje się ze sterownikiem poprzez wywołanie następujących operacji przezeń zaimplementowanych: init - inicjalizacja sterownika open - otwarcie urządzenia close - zamknięcie urządzenia read - zapis do urządzenia write - odczyt z urządzenia ioctl - różne funkcje sterujące

Funkcje sterownika urzadzenia 3 Aby jądro "wiedziało" o sterowniku urządzenia, należy informację o nim wpisać do tablicy sterowników typedef rtems_device_driver ( *rtems_device_driver_entry )( rtems_device_major_number, rtems_device_minor_number, void * ); typedef struct { rtems_device_driver_entry initialization_entry; /* initialization procedure */ rtems_device_driver_entry open_entry; /* open request procedure */ rtems_device_driver_entry close_entry; /* close request procedure */ rtems_device_driver_entry read_entry; /* read request procedure */ rtems_device_driver_entry write_entry; /* write request procedure */ rtems_device_driver_entry control_entry; /* special functions procedure */ } rtems_driver_address_table; #define DRV_DRIVER_TABLE_ENTRY \ {drv_init, drv_open, drv_close, drv_read, drv_write, drv_ioctrl} #ifdef CONFIGURE_INIT rtems_driver_address_table Device_drivers[2] = { CONSOLE_DRIVER_TABLE_ENTRY, DRV_DRIVER_TABLE_ENTRY }; #endif

Inicjalizacja urządzenia 4 rtems_device_driver drv_init(rtems_device_major_number major, rtems_device_minor_number minor, void * context); Funkcja wywoływana automatycznie przez system operacyjny na etapie startu. Umożliwia przeprowadzenie konfiguracji urządzenia oraz wszystkich zmiennych sterownika. Pierwszy i drugi parametr funkcji identyfikuje urządzenie do którego jest skierowane polecenie. Trzeci parametr funkcji nie jest wykorzystywany. Ważnym zadaniem tej funkcji jest przypisanie nazwy urządzenia do numerów identyfikujących urządzenie. Zadanie to realizowane jest za pomocą funkcji rtems_io_register_name.

Otwarcie/zamknięcie urządzenia Funkcje odpowiedzialne za inicjalizację sterownika w momencie próby otworzenia dostępu do urządzenia oraz zamknięcie dostępu do urządzenia. Umożliwia miedzy innymi kontrolę poprawności praw dostępu do urządzenia. Trzeci parametr funkcji jest wskaźnikiem do struktury rtems_libio_open_close_args_t Struktura zdefiniowana i skomentowana w rtems/libio.h typedef struct { rtems_libio_t *iop; uint32_t flags /* opening mode */; uint32_t mode /* access permissions */; } rtems_libio_open_close_args_t; 5

Odczyt/zapis do/z urządzenia 6 Trzeci parametr funkcji jest wskaźnikiem do struktury rtems_libio_rw_args_t typedef struct { rtems_libio_t *iop; off_t offset; char *buffer; uint32_t count; uint32_t flags; uint32_t bytes_moved; } rtems_libio_rw_args_t;

Pozostałe operacje - ioctl Trzeci parametr funkcji jest wskaznikiem do struktury rtems_libio_ioctl_args_t typedef struct { rtems_libio_t *iop; uint32_t command; void *buffer; uint32_t ioctl_return; } rtems_libio_ioctl_args_t; Identyfikator wykonywanego polecenia jest liczbą 32 bitową składającą sie z czterech ośmiobitowych częsci określajacych poszczególne właściwości danego polecenia: Liczba magiczna - ośmiobitowa liczba wybierana przez programistę Kolejna liczba ośmiobitowa Kierunek przesyłania danych (8 bitów): IOC NONE - brak przesyłania danych IOC READ - odczyt danych z urządzenia IOC WRITE - zapis danych do urządzenia Ilość przesyłanych danych 7

Bufor kołowy l a b a problem producenta i konsumenta dane przekazywane i odbierane asynchronicznie konieczne buforowanie rptr - receive pointer A m tptr - transmit pointer rptr a piszemy pod tptr, czytamy z rptr rptr == tptr - bufor pusty tptr tptr zaraz przed rptr - bufor pełny jedno miejsce w buforze zawsze sie marnuje 8

Bufor kołowy 9 a la l a b a lm rptr tptr W praktycznych implementacjach bufor jest liniowy, a arytmetyka na indeksach odbywa się modulo rozmiar bufora rptr == tptr - bufor pusty (tptr + 1) % 8 == rptr - bufor pełny

Zarządzanie buforem przy pomocy semaforów 10 producer consumer wait buffer not full wait buffer not empty Deposit Retrieve buffer is not empty buffer is not full