W przypadku systemu operacyjnego programy nie rozmawiają ze sterownikami urządzeń, a przynajmniej nie bezpośrednio. Programy mówią do abstrakcji, które, bez wiedzy, ostatecznie rozmawiają ze sterownikami urządzeń za pomocą jednej lub więcej warstw abstrakcji.
Pominę złożoność współczesnych systemów operacyjnych i jako przykład użyję CP / M , mikrokomputerowego systemu operacyjnego opracowanego 45 lat temu. CP / M był warstwowym ciastem z trzema warstwami:
Program. Górna warstwa to program, który robi coś pożytecznego (edytor tekstu, gra Space Invaders), wykonując obliczenia i operacje wejścia / wyjścia. Powiedzmy, że w pewnym momencie program chce wyświetlić literę „A”, aby użytkownik mógł ją zobaczyć. CP / M zapewnia abstrakcję zwaną konsolą , na której powinien szukać użytkownik wchodzący w interakcję z programem. Konwencjonalny sposób wysłania postaci z kilkoma instrukcjami montażu:
LD C,2 ; Load 2 into register C
LD E,65 ; Load the ASCII code for 'A' into register E
CALL 5 ; Call CP/M's routine for getting things done
(Jeśli nie jesteś z nimi zaznajomiony, rejestry można traktować jako zmienne, które żyją w procesorze.) Dojdziemy do magicznych liczb 2
i 5
za chwilę. Zaletą jest to, że wszystko, co program wie, to to, że jest konsola i istnieje sposób, aby na nią pisać. Nie wie ani nie dba o nic poza tym. Jest to pierwsza z dwóch abstrakcji, których CP / M używa dla I / O.
BDOS . Adres, 5
który wywołuje program, jest punktem wejścia do następnej warstwy, podstawowego systemu operacyjnego dysku lub BDOS . BDOS zapewnia całą gamę funkcji numerowanych, które są jak zamawianie według numeru z menu restauracji. Mówisz, że chcesz wyjść z konsoli, ładując C
rejestr z numerem funkcji ( 2
dla wyjścia konsoli) i E
rejestr ze znakiem, który ma zostać wysłany. Wyjście z konsoli jest bardzo prostą operacją, a BDOS tak naprawdę nie musi wiele z tym robić, poza wywołaniem kolejnej warstwy.
BIOS. System BIOS lub Basic Input / Output System to warstwa, na której znajduje się cały kod specyficzny dla sprzętu. W nowoczesnych systemach byłby to zestaw sterowników urządzeń. Podobnie jak BDOS, BIOS zapewnia wywołanie standardowego zestawu bardzo prymitywnych operacji , których BDOS używa do prowadzenia swojej działalności. Jedna z tych operacji jest nazywanaCONOUT
, który dba o to, aby postać poprosiła program o napisanie dwóch warstw powyżej na dowolnym sprzęcie, który to robi. (W przeciwieństwie do komputerów PC, rzeczy nie były wtedy jednorodne. Każdy system miał różne sposoby na to, aby tak się stało). Wyjście konsoli jest prostym przejściem dla BDOS, ale wykonanie czegoś bardziej złożonego, jak utworzenie pliku na dysku, może wymagać wielu Wywołania BIOS do manipulowania mediami. Ponownie, ponieważ BIOS ma standardowy, abstrakcyjny interfejs, BDOS zawsze wie, jak uzyskać to, czego chce i nie dba o to, jak BIOS to robi.
Prawdopodobnie zastanawiasz się, dlaczego istnieją dwie abstrakty (program na BDOS i BDOS na BIOS) zamiast tylko jednej. Odpowiedź jest taka, że CP / M i jego BDOS mogą być dostarczane w formie binarnej producentom komputerów, napisaliby niestandardowy BIOS ze sterownikami urządzeń dla swojego sprzętu, złączyli oba systemy i wysłali go jako system operacyjny dla swoich systemów. To była wielka sprawa, ponieważ BDOS był obsługiwany przez jedną organizację i dlatego zawsze był znaną ilością programów użytkownika, umożliwiając uruchamianie tych samych aplikacji na bardzo szerokim (jak na razie) sprzęcie. Dlatego istnieją systemy operacyjne, a my nie piszemy programów, które bezpośrednio zmieniają sprzęt .
Wszystko, co tu opisałem, dotyczy również nowoczesnych systemów operacyjnych. Na przykład Unix wyodrębnia wszystko jako pliki. Daje Programy sam zestaw wywołań systemowych ( open()
, write()
, close()
, etc.) do komunikowania się, czy jest to dysk lub port szeregowy. Zbiór decyzji i abstrakcji jest znacznie bardziej złożony, ale ostatecznie sprowadza się do wybrania kodu sterownika urządzenia w dolnej warstwie, aby operacja się odbyła.