System operacyjny - oprogramowanie we / wy
Oprogramowanie I / O jest często zorganizowane w następujących warstwach -
User Level Libraries- Zapewnia to prosty interfejs dla programu użytkownika do wykonywania operacji wejścia i wyjścia. Na przykład,stdio to biblioteka udostępniana przez języki programowania C i C ++.
Kernel Level Modules - Zapewnia to sterownikowi urządzenia współpracę ze sterownikiem urządzenia i niezależnymi od urządzenia modułami we / wy używanymi przez sterowniki urządzeń.
Hardware - Ta warstwa zawiera rzeczywisty sprzęt i kontroler sprzętowy, który współdziała ze sterownikami urządzeń i ożywia sprzęt.
Kluczową koncepcją w projektowaniu oprogramowania I / O jest to, że powinno być niezależne od urządzenia, gdzie powinno być możliwe pisanie programów, które mają dostęp do dowolnego urządzenia I / O bez konieczności wcześniejszego określania urządzenia. Na przykład program, który odczytuje plik jako dane wejściowe, powinien być w stanie odczytać plik z dyskietki, dysku twardego lub dysku CD-ROM, bez konieczności modyfikowania programu dla każdego innego urządzenia.
Sterowniki urządzeń
Sterowniki urządzeń to moduły oprogramowania, które można podłączyć do systemu operacyjnego w celu obsługi określonego urządzenia. System operacyjny korzysta z pomocy sterowników urządzeń, aby obsługiwać wszystkie urządzenia we / wy. Sterowniki urządzeń hermetyzują kod zależny od urządzenia i implementują standardowy interfejs w taki sposób, aby kod zawierał odczyty / zapisy rejestrów specyficzne dla urządzenia. Sterownik urządzenia jest zazwyczaj napisany przez producenta urządzenia i dostarczany wraz z urządzeniem na dysku CD-ROM.
Sterownik urządzenia wykonuje następujące zadania -
- Aby przyjąć żądanie od powyższego oprogramowania niezależnego od urządzenia.
- Wejdź w interakcję ze sterownikiem urządzenia, aby pobrać i przekazać we / wy oraz wykonać wymaganą obsługę błędów
- Upewnij się, że żądanie zostało wykonane pomyślnie
Sposób, w jaki sterownik urządzenia obsługuje żądanie, wygląda następująco: Załóżmy, że przychodzi żądanie odczytania bloku N. Jeżeli kierowca jest bezczynny w momencie nadejścia żądania, natychmiast rozpoczyna realizację żądania. W przeciwnym razie, jeśli kierowca jest już zajęty jakimś innym żądaniem, umieszcza nowe żądanie w kolejce oczekujących żądań.
Obsługa przerwań
Procedura obsługi przerwań, znana również jako procedura obsługi przerwań lub ISR, to oprogramowanie lub dokładniej funkcja wywołania zwrotnego w systemie operacyjnym lub dokładniej w sterowniku urządzenia, której wykonanie jest wyzwalane przez odbiór przerwania.
Kiedy następuje przerwanie, procedura przerwania robi wszystko, co konieczne, aby obsłużyć przerwanie, aktualizuje struktury danych i budzi proces, który czekał na przerwanie.
Mechanizm przerwań przyjmuje adres ─ liczbę, która wybiera określoną procedurę / funkcję obsługi przerwań z małego zestawu. W większości architektur ten adres jest przesunięciem przechowywanym w tabeli zwanej tablicą wektorów przerwań. Ten wektor zawiera adresy pamięci wyspecjalizowanych programów obsługi przerwań.
Oprogramowanie we / wy niezależne od urządzenia
Podstawową funkcją oprogramowania niezależnego od urządzenia jest wykonywanie funkcji I / O, które są wspólne dla wszystkich urządzeń oraz zapewnienie jednolitego interfejsu dla oprogramowania na poziomie użytkownika. Chociaż trudno jest napisać oprogramowanie całkowicie niezależne od urządzenia, możemy napisać kilka modułów, które są wspólne dla wszystkich urządzeń. Poniżej znajduje się lista funkcji oprogramowania we / wy niezależnych od urządzenia -
- Jednolity interfejs dla sterowników urządzeń
- Nazewnictwo urządzeń - nazwy mnemoniczne odwzorowane na główne i poboczne numery urządzeń
- Ochrona urządzenia
- Zapewnienie rozmiaru bloku niezależnego od urządzenia
- Buforowanie, ponieważ dane wychodzące z urządzenia nie mogą być przechowywane w miejscu docelowym.
- Alokacja pamięci na urządzeniach blokowych
- Alokacja i zwalnianie dedykowanych urządzeń
- Zgłaszanie błędów
Oprogramowanie we / wy przestrzeni użytkownika
Są to biblioteki, które zapewniają bogatszy i uproszczony interfejs, aby uzyskać dostęp do funkcjonalności jądra lub ostatecznie interaktywnie ze sterownikami urządzeń. Większość oprogramowania we / wy na poziomie użytkownika składa się z procedur bibliotecznych, z pewnymi wyjątkami, takimi jak system buforowania, który jest sposobem radzenia sobie z dedykowanymi urządzeniami we / wy w systemie wieloprogramowym.
Biblioteki we / wy (np. Stdio) znajdują się w przestrzeni użytkownika, aby zapewnić interfejs dla niezależnego od urządzenia oprogramowania we / wy rezydującego w systemie operacyjnym. Na przykład putchar (), getchar (), printf () i scanf () są przykładami standardowej biblioteki we / wy poziomu użytkownika dostępnej w programowaniu w C.
Podsystem We / Wy jądra
Podsystem Kernel I / O jest odpowiedzialny za dostarczanie wielu usług związanych z I / O. Oto niektóre z oferowanych usług.
Scheduling- Kernel planuje zestaw żądań we / wy, aby określić dobrą kolejność ich wykonania. Gdy aplikacja wysyła blokujące wywołanie systemowe we / wy, żądanie jest umieszczane w kolejce dla tego urządzenia. Program planujący We / Wy jądra zmienia kolejność kolejki, aby poprawić ogólną wydajność systemu i średni czas odpowiedzi doświadczany przez aplikacje.
Buffering - Podsystem We / Wy jądra utrzymuje obszar pamięci znany jako bufferktóry przechowuje dane podczas ich przesyłania między dwoma urządzeniami lub między urządzeniem, na którym działa aplikacja. Buforowanie jest wykonywane, aby poradzić sobie z niedopasowaniem prędkości między producentem a konsumentem strumienia danych lub w celu dostosowania się między urządzeniami, które mają różne rozmiary transferu danych.
Caching- Jądro utrzymuje pamięć podręczną, która jest obszarem szybkiej pamięci przechowującej kopie danych. Dostęp do kopii w pamięci podręcznej jest bardziej wydajny niż dostęp do oryginału.
Spooling and Device Reservation- Bufor to bufor przechowujący dane wyjściowe dla urządzenia, takiego jak drukarka, które nie może przyjmować przeplecionych strumieni danych. System buforowania kopiuje po kolei kolejkowane zbiory buforowe do drukarki. W niektórych systemach operacyjnych buforowaniem zarządza proces demona systemowego. W innych systemach operacyjnych jest obsługiwany przez wątek jądra.
Error Handling - System operacyjny korzystający z pamięci chronionej może chronić przed wieloma rodzajami błędów sprzętu i aplikacji.