Czy ktoś mógłby odnieść się do moich odpowiedzi na pytania i powiedzieć, czy są poprawne, czy coś powinienem dodać / zmienić?
1. Jakie zadania zarządzania realizowane są dla następujących zasobów:
(a) procesor – przydział kwantu czasu dla procesora, wywłaszczenie (gdy upłynie kwant czasu, kiedy proces ma za niski priorytet, brak gotowości urządzeń wejścia-wyjścia lub brak innego potrzebnego zasobu)
(b) pamięć – znajdowanie i przydzielanie fragmentów wolnej pamięci na żądanie, utrzymywanie informacji o zajętości przestrzeni adresowej, reagowanie na naruszenie ochrony pamięci, transformacja adresów wirtualnych na fizyczne
(c) plik – ?
2. W jaki sposób przekazywane jest sterowanie do jądra systemu operacyjnego.
Sterowanie jest przekazywane do jądra systemu operacyjnego poprzez mechanizm przerwań. Kiedy następuje przerwanie, wtedy to SO przejmuje sterowanie i wykonuje zadania okresowe. Np. przerwanie zegarowe: na wejściu czasomierza jest ustalona wartość, która z każdym impulsem jest zmniejszana o 1. Kiedy wartość osiągnie 0, wywoływane jest przerwanie.
3. Jaki mechanizm systemu chroni przed zawłaszczeniem procesora przez przetwarzanie aplikacyjne?
Procesor przed zawłaszczeniem chroni mechanizm przełączania kontekstu. Kiedy upłynie kwant czasu, następuje przerwanie i przekazanie sterowania do systemu. Wówczas system decyduje, czy wznowić działanie danego procesu, czy przełączyć na inny proces. Dzięki temu zawłaszczenie procesora przez program użytkownika jest niemożliwe.
4. Dlaczego usługi jądra systemu operacyjnego nie mogę być dostępne poprzez zwykłe wywołanie podprogramu, tylko przez specjalne instrukcje (przerwania programowe)?
Jądro nie może być dostępne przez zwykłe wywołanie podprogramu, ponieważ wówczas system byłby narażony na działanie użytkownika. Programy użytkownika mogą zawierać błędy, a sam użytkownik mógłby wpłynąć na działanie systemu. Aby zagwarantować stabilność systemu, należy chronić jądro. Trzeba więc wprowadzić różne tryby uprzywilejowania w pracy.
5. Jak należy zaklasyfikować przerwania będące następstwem:
(a) dzielenia przez zero – przerwanie diagnostyczne (błąd programowy)
(b) odmierzenia ustalonego okresu czasu przez czasomierz – przerwanie zegarowe (zewnętrzne)
(c) wykonania instrukcji wywołania przerwania (np. int w architekturze Intel) przez procesor – przerwanie programowe
(d) wystawienia przez procesor niedopuszczalnego adresu – przerwanie diagnostyczne (błąd programowy)
(e) pobrania przez procesor niewłaściwego kodu instrukcji do wykonania – przerwanie diagnostyczne (błąd programowy)
6. Na czym polega ograniczenie zakresu adresów, dostępnych w czasie przetwarzania aplikacyjnego?
Ograniczenie zakresu dostępnych w trakcie przetwarzania adresów służy do ochrony pamięci. Polega ono na ustaleniu zakresu <baza, baza+granica), gdzie baza jest adresem początkowym. Jeśli nastąpi odwołanie do adresu spoza zakresu, nastąpi przerwanie diagnostyczne (błąd programowy) i proces zostanie usunięty.
7. Jakie mogłyby być skutki udostępniania operacji wejścia-wyjścia w trybie użytkownika dla funkcjonowania systemu komputerowego?
Użytkownik mógłby generować przerwania np. ze strony czasomierza. Mógłby tym ingerować w sposób działania systemu i zaburzać jego stabilność?