Skip to content

Instantly share code, notes, and snippets.

@grobie
Created November 11, 2008 18:16
Show Gist options
  • Save grobie/23920 to your computer and use it in GitHub Desktop.
Save grobie/23920 to your computer and use it in GitHub Desktop.
1.1
********
==============================================
Ziele bei der Entwicklung von Betriebssystemen
==============================================
einfache Benutzbarkeit
Effizienz
Sicherheit
Zuverlässigkeit
(Kompatibilität)
Aus Entwicklersicht zusätzlich: einfache Umsetzbar-, Wart- und Erweiterbarkeit
=====================================
Beispiele für Kernelmode und Usermode
=====================================
Kernelmode:
Zugriffe auf den Speicher/CPU/Input und Output
Hardware Abstraction Layer (HAL)
Teile des Netzwerkprotokolls
Teile des Dateisystems
Usermode:
restliches Dateisystem
Environment Subsystems
Benutzerprogramme (Compiler, Browser, Word, Excel, Taschenrechner)
======================================================
Vor- und Nachteile der Trennung in User und Kernelmode
======================================================
Vorteile:
höhere Stabilität durch Aufteilung in Schichten
Sicherheit
Nachteile:
Geschwindigkeitseinbußen
Umschalten zwischen User- und Kernelmode ist aufwändig/komplex
Kontextwechsel
Daten kopieren
1.2 Programm/Prozess/Thread
***************************
Programm
- konkrete Realisierung (Implementierung) eines abstrakten Lösungsverfahrens (Algorithmus) zur Lösung eines allgemeinen Problems
- Besteht in der Regel aus einer Folge von Anweisungen.
- kein Prozess
- sog. passive Einheit (zB. Datei mit einer Liste von Instruktionen auf der Festplatte)
Prozess
- aktive Einheit/Instanz eines Programms (Programm in Ausführung)
- besitzt einen Program Counter, welcher den als nächstes auszuführenden Befehl angibt und eine Menge assoziierter Ressourcen/Betriebsmittel:
- Code-, Datenbereich, Speicher[Stack, Heap], Dateideskriptoren
- wird gestartet, wenn ein Programm gestartet wird
- IEEE Std 1003.1-2001: Ein Prozess ist eine Einheit bestehend aus:
- einem Adressraum
- mit einem oder mehreren in diesem Adressraum ablaufenden Threads und
- den für die Threads benötigten Systemressourcen
Thread
- haben eigene Stapelspeicher, müssen jedoch Betriebsmittel des Prozesses benutzen.
- Jeder Prozess besitzt einen oder mehrere Threads
- läuft im Kontext eines Prozesses
- bezeichnet einen sequentiellen Kontrollfluss (ein Ausführungsstrang)
- Scheduling: Windows (Threads), Linux (Prozesse)
1.3 Windows
***********
==============
Windows-Kernel
==============
- Executive
memory management Speicherverwaltung, Speicherschutz
process/thread management Bereitstellung der benötigten Ressourcen für Prozesse/Threads
Ausführung/Synchronisierung von Threads
Input/Output manager Schnittstelle zwischen Benutzer und Programmen
Object manager Zugriff auf Objekte mittels eines Namens
Bereitstellung eines Handles
- Kernel
multiprocessor synchronization
thread scheduling
interrupt and exception dispatching
provides a set of routines and basic objects that the rest of the executive uses to implement higher-level constructs
- Device Drivers
hardware device drivers translate user I/O function calls into specific hardware device I/O requests
- Windowing and Graphics Driver
GUI functions
windows, user interface controls, and drawing
- Hardware Abstraction Layer
isolates the kernel, device drivers, and executive from hardware
hides platform-specific hardware differences (motherboards)
====================
Userspace Subsystems
====================
Environment
Windows Startet Prozesse und Threads
verwaltet Input/Output von Tastatur/Maus/Monitor
Schnittstelle zwischen Benutzereingaben und Programmen
OS/2 führt OS/2-Programme aus
Posix führt Posix-Programme aus
1.4 WRK Dokumentation
*********************
===========================================================================================
Wie lässt sich die Verzeichnisstruktur in base/ntos des WRK auf den Kernelufbau abbilden?
===========================================================================================
cache\ cache manager
config\ registry implementation
dbgk\ user-mode debugger support
ex\ executive functions (kernel heap, synchronization, time)
fsrtl\ file system run-time support
io\ I/O manager
ke\ scheduler, CPU management, low-level synchronization
lpc\ local procedure call implementation
mm\ virtual memory manager
ob\ kernel object manager
ps\ process/thread support
se\ security functions
wmi\ Windows Management Instrumentation
inc\ NTOS-only include files
rtl\ kernel run-time support
init\ kernel startup
=============================================================
Welche Teile des Windows-Kernels sind nicht im WRK enthalten?
=============================================================
- plug-and-play
- power management
- device verifier
- kernel debugger interface
- virtual dos machine
- cleanup and removal of server support
================================================================================================================
In welcher Funktion werden die Kernelmodule initialisiert? Wie heißen die Initialisierungsfunktionen der Module?
================================================================================================================
init/initos.c (phase1initializationdiscard)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment