SOP121 - Systemy operacyjne 1 - wykład

Prowadzący: Michał Hanćkowiak

Slajdy.

(Wyłącznie do użytku wewnętrznego !.)

Uwaga: slajdy są dostępne w formacie PostScript/ skompresowanym (potrzebne oprogramowanie: GhostScript, GhostView, WinZip lub coś podobnego).

 

Literatura.

Silberschatz, Galvin "Podstawy systemów operacyjnych" (wydanie 3)

literatura pomocnicza ...

inne źródła informacji ...

Unix z perspektywy "zwykłego" użytkownika ...

Unix z perspektywy administratora ...

Egzamin.

Wyłącznie egzamin pisemny; kilka zadań opisowych i kilka zadań "obliczeniowych", w których trzeba zastosować znane definicje

Przykładowe tematy zadań "obliczeniowych":

Uwaga: proszę przejrzeć wszystkie slajdy wykładu i zwrócić uwagę na demonstrowane tam "symulacje" różnych algorytmów; warto to sobie przećwiczyć ...

 

Plan wykładu.

  1. Unix z perspektywy użytkownika.
  2. Budowa "ogólnego" systemu operacyjnego.
  3. Konkretne systemy operacyjne: "Unix System V", "Linux", "Windows NT/ 2000/XP".

Zagadnienia, które zostaną omówione:

·       Wstęp; definicje s.o. (=systemów operacyjnych).

·       Unix/perspektywa użytkownika (na użytek ćwiczeń): pliki i katalogi; procesy; potoki i łącza; podstawowe polecenia, powłoka "ksh" lub "bash", program "awk".

·       Historia rozwoju systemów operacyjnych: systemy wsadowe, SPOOLing, wieloprogramowe, z podziałem czasu, dla komputerów osobistych; systemy komputerowe równolegle i rozproszone

·       Architektura systemu komputerowego: składniki systemu komputerowego i ich przeznaczenie, przerwania, synchroniczne i asynchroniczne operacje we/wy, ochrona sprzętowa.

·       Klasyfikacja architektur s.o.: architektura prosta, warstwowa, z mikrojądrem, z maszynami wirtualnymi.

·       Składniki s.o.: zarządzanie procesami, zarządzanie pamięcią operacyjną, zarządzanie plikami/katalogami, zarządzanie pamięcią pomocniczą, zarządzanie we/wy, system ochrony, interpreter poleceń.

·       Rodzaje pamięci w systemie komputerowym: hierarchia pamięci, pamięć pomocnicza, pamięć podręczna; budowa dysku magnetycznego.

·       Zarządzanie pamięcią operacyjną: tworzenie i uruchamianie programów; problemy związane z przydzielaniem obszarów pamięci, fragmentacja; adresy logiczne i fizyczne komórek pamięci; stronicowanie i segmentacja; stronicowanie i segmentacja w procesorze Intel 80386; pamięć wirtualna, algorytmy zastępowania stron FIFO, LRU.

·       Zarządzanie procesami: definicja procesu, stany procesu, blok kontrolny procesu, diagramy kolejkowe; planista krótko, średnio i długo terminowy, metody planowania (FCFS, SJF, RR, planowanie wielopoziomowe, diagramy Gantta); wymiana (swapping); wątki; problemy współbieżnie działających procesów, synchronizacja procesów, problem sekcji krytycznej, semafor ogólny i binarny, implementacja semafora, monitor, inne klasyczne problemy współbieżności (czytelników i pisarzy, 5-filozofów), zakleszczenie.

·       Zarządzanie plikami/katalogami oraz pamięcią pomocniczą: definicja pliku, atrybuty pliku, operacje na pliku, pojęcie deskryptora pliku, metody dostępu do pliku; definicja katalogu, operacje na katalogu, rodzaje katalogów; ochrona plików; implementacja systemu plików, metody przydziału bloków dyskowych (listowy, indeksowy, FAT), planowanie dostępu do dysku (FCFS, LOOK); systemy plików DOS-u i Unixa, partycje dysków w komputerach osobistych.

·       Zarządzanie wejściem/wyjściem: urządzenie we/wy, kontroler, moduł sterujący urządzenia; klasyfikacja urządzeń; jak działa podsystem we/wy w jądrze systemu operacyjnego; system we/wy w Unixie, pliki specjalne ("b" i "c"), buforowa pamięć podręczna, tablica rozdzielcza.

·       Interfejs programisty: funkcje systemowe; fun. sys. Unixa dotyczące procesów: fork(), exit(), wait(), exec*(); fun. sys. Unixa dotyczące plików: open(), close(), read(), write(); pojęcie deskryptora do pliku, przeadresowywanie; dostęp do urządzeń jak do plików (pliki specjalne Unixa); komunikacja między procesami przy pomocy łącz.

·       System operacyjny Unix: historia; najważniejsze wersje (SystemV, BSD, Linux); architektura systemów unixowych; perspektywa użytkownika, programisty i administratora (katalog /etc, pliki: passwd, shadow, group, fstab, inittab).

·       System operacyjny Windows NT: podobieństwa i różnice między wersjami “Workstation” oraz “Server”; ogólna architektura systemu: warstwa API, moduł NT Executive, mikrojądro; budowa modułu NT Executive: warstwa HAL, podstawowe moduły, środowiska pracy (NTDVM, Win16/32, OS/2, POSIX)

 

 

Zadania domowe. (nieaktualne !!!)

Uwaga:

Można przesyłać mi rozwiązania poniższych zadań domowych na adres mailowy:
mhanckow@main.amu.edu.pl, subject: SOP121 - zadanie domowe nr X.

Spośród nadesłanych rozwiązań "zadania domowego X" wybiorę JEDNO najlepsze i osoba która je nadesłała zostanie zwolniona z egzaminu z oceną 5.0. (Tak więc liczba zwolnionych osób <= 3).

Proszę wyrażać chęć rozwiązania danego zadania mailem (subject: SOP121 - chce wykonac zad dom X), abym mógł umieszczać informacje o liczbie osób zainteresowanych wykonaniem danego zadania!
Liczba osób, które zadeklarowały chęć wykonania zadań domowych:

zadanie domowe nr liczba osób
1 2
2 1
3 0

Ostateczny termin nadsyłania rozwiązań: 3.06.2005 (czyli koniec semestru).

Zadanie domowe 1
*** miniaturowy "system operacyjny" z podziałem czasu ***
  • ma to być program DOS-owy, napisany w języku C lub w Pascalu (praktycznie bez "wstawek assemblerowych")
  • przełączanie procesora między procesami (zwane także "przełączaniem kontekstu") ma być wykonywane podczas obsługi przerwania zegarowego nr 8 czyli IRQ-0 [a nie 0x1C jak w przykładzie int.zip !] przez procedurę ze słowem kluczowym interrupt
  • wszystkie procesy działające w miniaturowym s.o. są w rzeczywistości procedurami języka programwania, innymi słowy są jakby "wkompilowane w jądro"
  • wszystkie procesy powinny uruchamiać się i działać współbieżnie po uruchomieniu miniaturowego s.o.
  • UWAGA: zasadniczo procesy nie mogą wywoływać fun. sys. DOS-u, gdyż DOS nie jest przystosowany do tego typu działań (można to "obejść" na różne sposoby); jedyny prosty sposób w jaki procesy mogą manifestować swoją obecność to pisanie bezpośrednio do pamięci ekranu
  • należy bardzo dokładnie i "elegancko" objaśniać kod przy pomocy komentarzy ...

    Dodatkowo należy wykonać:

  • zaimplementować "algorytm piekarni" (parz: wykład 5) oraz zademonstrować jego działanie dla kilku (>2) procesów
  • zaimplementować funkcje systemowe do wykonywania operacji na plikach (?) - używając pomocniczo fun. sys. DOS-u
  • zaimplementować funkcje systemowe do "czytania/pisania z terminala wirtualnego"

    Wskazówki:

    oto jak wygląda stos po uruchomieniu procedury proc():

    oto jak wygląda stos po uruchomieniu procedury handler() w wyniku wystąpienia przerwania:
    void interrupt handler()
    { int i,j;
      // <-- poniżej jest zawartość stosu w tym miejscu
    }
                                       adres powrotny
                                        | ------- |
    ----------------------------------------------------------------------------
    <--    | i | j | BP | ... | BX | AX | IP | CS | Flags | XXXXXXXXXX .........
    ----------------------------------------------------------------------------
           ^       ^
         SS:SP   SS:BP
    a oto koniec i początek procedury handler (ze słowem "interrupt"):
    _handler: void interrupt handler(void)
      cs:0074 50             push   ax
      cs:0075 53             push   bx
      cs:0076 51             push   cx
      cs:0077 52             push   dx
      cs:0078 06             push   es
      cs:0079 1E             push   ds
      cs:007A 56             push   si
      cs:007B 57             push   di
      cs:007C 55             push   bp
      cs:007D BD2058         mov    bp,5820
      cs:0080 8EDD           mov    ds,bp
      cs:0082 8BEC           mov    bp,sp
      cs:0084 83EC0C         sub    sp,000C
    #INT03#72:  int i=0x111,j=0x222,k=0x333,l=0x444,m=0x555,n=0x666
      cs:0087 C746FE1101     mov    word ptr [bp-02],0111

      cs:008C C746FC2202     mov    word ptr [bp-04],0222
      cs:0091 C746FA3303     mov    word ptr [bp-06],0333
      cs:0096 C746F84404     mov    word ptr [bp-08],0444
      cs:009B C746F65505     mov    word ptr [bp-0A],0555
      cs:00A0 C746F46606     mov    word ptr [bp-0C],0666
    ..................................
    ..................................
    #INT03#99: }
      cs:0136 8BE5           mov    sp,bp
      cs:0138 5D             pop    bp
      cs:0139 5F             pop    di
      cs:013A 5E             pop    si
      cs:013B 1F             pop    ds
      cs:013C 07             pop    es
      cs:013D 5A             pop    dx
      cs:013E 59             pop    cx
      cs:013F 5B             pop    bx
      cs:0140 58             pop    ax
      cs:0141 CF             iret
  • funkcja main() programu w języku C używa "stosu systemowego", dla procedur Proces?() musimy przygotować ich prywatne stosy
  • procedura handler() obsługująca przerwanie zegarowe nr 8 powinna dokonywać przełączenia procesora na inny proces; powinna zmieniać rejestry procesora związane ze stosem [SS,SP,BP] tak aby wskazywały na prywatny stos kolejnego procesu
  • początkowa zawartość prywatnego stosu powinna być taka aby wyjście z procedury handler() spowodowało rozpoczęcie działania Proces?() ... więcej nie powiem gdyż ostatecznie jest to zadanie domowe !

    Dokumentacje i przykłady:

  • pomocne kody źródłowe są w int.zip; jest to program DOS-owy, w którym procedura obsługi przerwania zegarowego wyświetla zawartość stosu
  • dokumentacja procesora 80386 

    (Koniec opisu "Zadania domowego 1")
     

    Zadanie domowe 2


    *** Windows 2000 lub XP z perspektywy użytkownika i adm ***
  • opis powinien być ukierunkowany na "polecenia systemowe" i powinien zawierać definicje pojęć które się przy tej okazji pojawiają
  • należy opisać wbudowany język skryptowy Windows (pliki .bat), zwłaszcza różnice z językiem skryptowym DOS
  • opisać niektóre procedury administracyjne (np dodawanie nowego użytkownika, konfigurowanie połączenia z Internetem poprzez modem)
  • należy przygotować  zadania/ćwiczenia do wykonania !!!
  • szczególną wagę położyć na polecenia sieciowe typu "net use ...", "net share ..."
  • opisać różnice między Windows NT 4.0 a Windows 2000 (np pojęcie Active Directory)
  • wszystko musi być przygotowane w postaci "elektronicznej" (np dokument Worda), aby mogło być użyte na zajęciach SOP121
     

    Zadanie domowe 3


    *** Linux: Xwindows, CUPS***
  • należy opisać architekturę i działanie Xwindows
  • należy opisać konfiguracje Xserwera (linuxxowego), opisać pliki konfiguracyjne, podać przykłady
  • należy podać przykłady prostych programów używających X za pośrednictwem biblioteki "xlib" (programy te muszą być napisane w języku C)
  • należy opisać dostępne narzędzia ułatwiające programowanie pod X (za wyjątkiem TclTk bo jest tematem ćwiczeń tematu E)
  • [druga część] należy opisać architekturę, działanie i konfiguracje podsystemu drukowania o nazwie CUPS
  • uwzględnić obsługę kilku drukarek różnych typów: np HP LaserJet 1005, Cannon 2000, oraz starej igłówki LC20 - niektóre z tych drukarek nie są bezpośrednio obsługiwane przez CUPS i trzeba instalować pewne rozszerzenia ...