Betriebssysteme

Prof. Dr.-Ing. Wilhelm G. Spruth

el0001 doc

© copyright W. G. Spruth, 10-2000

wgs 07-97

Betriebssysteme it-Akademie Bayern z/OS und OS/390 Lehrgang 2008 Prof. Dr.-Ing. Wilhelm G. Spruth

Teil 1 Überwacher- und Problemstatus

el0100 ww

© copyright W. G. Spruth, 10-2005

wgs 10-05

Einführung Betriebssysteme Übersicht 1. Überwacher- und Problemstatus 2. Stapel, Linkages, Assembler 3. Unterbrechungen 4. Überwacher - Kernel 5. Prozessverwaltung 6. Scheduling 7a. Struktur des Virtuellen Speichers 7b. Paging 7c. Swapping and Block Paging 7d. Address- and Data Spaces 8. Steuerung des Überwachers 9a. Job Control 9b. z/OS Subsysteme 10. System Address Spaces 11. RACF 12. z/OS Unix System Services

Literatur zum Thema z/OS

U. Kebschull, P. Herrmann, W.G. Spruth: „Einführung in z/OS und OS/390“. Oldenbourg 2002, M. Teuffel, R. Vaupel: „Das Betriebssystem z/OS und die zSeries“. Oldenbourg 2004, ISBN 3486-2752-83. W. Zack: „Windows 2000 and Mainframe Integration“. Macmillan Technical Publishing, 1999. J. Hoskins, G. Coleman: „Exploring IBM S/390 Computers“. Maximum Press 1999. M. Teuffel: „TSO Time Sharing Option im Betriebssystem OS/390“. Oldenbourg, 6. Auflage, J. Horswill: „Designing & Programming CICS Applications“. O´Reilly, 2000. ISBN 1-56592-676-5 R. Lamb: Cooperative Processing using CICS“. Mc-Graw Hill 1993. R. Ben-Natan: „IBM WebSphere Starter Kit“.McGrawHill, 2000. S:G:Sloan, A.K. Hernandez: „An Introduction to DB2 for OS/390“. Prentice Hall 2001

es 0102z ww6

wgs 09-99

Betriebssystem Dem Benutzer wird eine Schnittstelle (Architektur) zur Verfügung gestellt, die leichter zu benutzen und zu programmieren ist, als die eigentliche Hardware. Definition nach DIN: Unter Betriebssystem versteht man alle Programme eines digitalen Rechensystems, die zusammen mit den Eigenschaften der Rechenanlage die Basis der möglichen Betriebsarten des digitalen Rechnersystems bilden und insbesondere die Abwicklung von (Anwendungs-) Programmen steuern und überwachen. Betriebsmittel (Resources) wie • • • •

Hauptspeicherplatz Plattenspeicherplatz Zugriff zu EIA Geräten Zeit der Zentraleinheit

werden für eine größere Anzahl von Benutzern und Prozessen verwaltet.

Grundaufgaben von Betriebssystemen Wichtige Aufgaben eines Betriebssystems sind: Programmierer leicht verständliche und gut handhabbare Schnittstelle zur eigentlichen Maschine anzubieten und Komplexität der darunterliegenden Maschine zu verstecken. Ansprechpartner für Programmierer ist nicht mehr die Maschine (Hardware), sondern das Betriebssystem, das wesentlich einfacher zu verstehen und zu programmieren ist: Eine weitere Aufgabe eines Betriebssystems ist es, alle Einzelteile eines komplexen Systems, z.B. • • • • •

Prozessoren, Arbeitsspeicher, Festplatten, Bildschirme, Drucker,

zu verwalten. Ein Betriebssystem muss eine geordnete und kontrollierte Zuteilung von Prozessoren, Speichereinheiten und Peripheriegeräten unter den verschiedenen Programmen, welche darum konkurrieren, sicherstellen.

Dienste von Betriebssystemen Prozessmanagement Verschiedene laufenden Programmen und Aufgaben müssen Prozessor und auch andere Ressourcen zugeteilt werden. Einzelne Aufgaben werden als Prozesse ausgeführt, die vom Betriebssystem verwaltet werden. Speichermanagement Oft passen nicht alle Programme/Daten in den Speicherplatz. Speichermanagement sorgt dafür, dass immer die gerade benötigten Speicherinhalte zur Verfügung stehen, ohne dass Anwendungssoftware sich darum kümmern muss. Dateiverwaltung Logik der Dateiverwaltung wird in Form von Dateisystemen vom Betriebssystem bereitgestellt, damit alle Programme auf dieselbe Art und Weise darauf zugreifen können. Steuerung der Hardware, Geräteverwaltung, E/A-Steuerung Gerätetreiber sind gerätespezifische Programme, die in das Betriebssystem eingebunden (installiert) werden und die Steuerlogik für bestimmte Hardware enthalten. Betriebssysteme steuern die Zusammenarbeit mit vielen verschiedenen Ein- und Ausgabegeräten wie Tastatur und Bildschirm, Datenträgern oder Netzwerken. Bereitstellen der Benutzeroberfläche

Benutzer Schnittstelle Benutzer Prozesse

SprachÜbersetzer

Presentation Manager (GUI)

Kommando Interpreter (Shell) Betriebssystem Schnittstelle

Betriebssystem Kernel

Hardware Schnittstelle

Hardware

Schichtenmodell der Rechnerarchitektur

es 0520z ww6

wgs 09-99

Schnittstelle zwischen Mensch und Hardware Bedienschnittstelle (User Interface) 2 verschiedene Arten von Benutzeroberflächen: Zeilenorientierte Benutzeroberfläche Benutzer gibt über Tastatur Befehle ein und erhält entsprechende Antworten.

Grafische Benutzeroberfläche intuitive Erledigung von Aufgaben über Aktivieren von Schaltflächen, Menüs und Symbolen mit der Maus.

So gut wie alle modernen Betriebssysteme besitzen Varianten beider Arten von Oberflächen. Grafische Benutzeroberfläche ist leichter zu lernen. Zeilenorientierte Benutzeroberfläche ist schneller zu bedienen. z/OS benutzt in den meisten Fällen zeilenorientierte Benutzeroberfläche

Privilegstufen Speicherschutz Stapel (Stack) Unterbrechungen

Hardware Unterstützung von Betriebssystem-Funktionen

00..00 Code Data Heap Stack

Kernel Mode Code

FF..FF

WindowsXP Virtueller Adressenraum Ursprüngliche Aufteilung

Annahme Keine virtuelle Speichertechnik

SYSTEM - INTEGRITÄT PROZESSOR - STATUS , PRIVILEGSTUFEN

Die Zentraleinheit kann in mehr als einem Status mit unterschiedlichen Privilegstufen laufen. Je nach Privileg bestehen für die Zentraleinheit Einschränkungen in • Benutzung bestimmter, sogenannter "privilegierter" Maschinenbefehle, • Umfang der Autorisierung, auf Bereiche des Hauptspeichers zuzugreifen. • Verfügbarkeit von Zugriffen auf bestimmte Register der Zentraleinheit. Privilegstufen stellen sicher, dass Prozesse sich nicht ungeplant gegenseitig beeinflussen.

Überwacherstatus Problemstatus

Definiert durch 1 Bit in einem Steuerregister in der Zentraleinheit ( Status Register, Programm Status Wort )

Der Überwacher (Kernel) läuft im Überwacherstatus (Supervisor State, Kernel State). Anwendungsprogramme laufen im Problemstatus (Problem State, User State).

Auswirkungen: • Bestimmte „Privilegierte“ Maschinenbefehle können nur im Überwacherstatus ausgeführt werden • Speicherschutz. Im Problemstatus kann nur auf einen Teil des Hauptspeichers zugegriffen werden

PRIVILEGIERTE MASCHINENBEFEHLE Der Befehlssatz der Zentraleinheit besteht aus privilegierten und nicht-privilegierten Befehlen. Privilegierte Befehle können nur im Überwacherstatus (in der Privilegstufe 0) ausgeführt werden. ( Eine versuchte Ausführung in einer höheren Privilegstufe führt zu einer Programmunterbrechung.) Die allermeisten Befehle sind nicht privilegiert. Privilegierte Befehle sind vor allem solche, die geeignet sind, die Privilegstufe oder den Speicherschutz abzuändern. Dazu gehören : • Laden oder abspeichern des Programm-StatusWortes. • Laden oder abspeichern der Steuerregister in der Zentraleinheit. • Programm - Status - Wort und Steuerregister gemeinsam laden oder abspeichern. • Spezielle Maschinenbefehle, die den Status der Zentraleinheit und nicht den eines einzigen Prozesses betreffen. • Spezielle Maschinenbefehle, welche systemweite Betriebsmittel betreffen (z.B. E/A-Befehle).

Beispiel: Maschinenbefehle, die den SpeicherschutzSchlüssel ändern. Programme, die in einer niedrigen Privilegstufe laufen, können den Wechsel zu einer höheren Privilegstufe dadurch erreichen, daß sie in eine spezielle Überwachungsroutine verzweigen, welche die Privilegerhöhung bewirkt. Der entsprechende Aufruf des Überwachers (wie jeder Aufruf des Überwachers) erfolgt durch einen Uberwacherauf-Unterbrechung bzw. einen Systemaufruf Maschinenbefehl. • z.B. SVC Unterbrechung bei /370, • TRAP # n Exception bei 68030 • Call Gate bei Pentium • Change Mode Befehl bei Vax, • GATEWAY Befehl bei Precision

ar1902ww6

wgs02-98

Problem State (User Mode) • In problem state, the program must not execute privileged instructions • No access to control registers • No access to timers • No access to storage keys • Access only to “uncritical” parts of the PSW • In general: No access to architecture facilities that are vital to the system as a whole

Privilegstufen der IA32 Architektur (Pentium)

Alle Architekturen verfügen über eine Privilegstufe 0, als Uberwacher-Status bezeichnet, und ein oder mehrere Privilegstufen 1 .. n, gemeinsam als Problemstatus bezeichnet. Der Überwacher hat die größten Privilegien (läuft im Überwacher-Status, Privilegstufe 0). Normale Benutzerprogramme haben die wenigsten Privilegien; sie laufen im Problemstatus mit der Privilegstufe n. Im Überwacherstatus laufende Programme haben Zugriff auf den gesamten virtuellen und realen Adressenraum. Um sicherzustellen, daß der Speicherschutz nicht umgangen wird, können gewisse Maschinenbefehle nur vom Überwacher im Überwacher-Status (Privilegstufe 0) ausgeführt werden.

ar1902ww6

wgs02-98

Ring 3

Ring 1,2

Anwendungen

Erweiterte Systemfunktionen

Überwacher Ring 0

Executive Kernel

Hardware

Strukturierter Überwacher Beispiel Pentium ar 1443 ww6

wgs 02-98

GRUNDGEDANKE DER PRIVILEGSTUFEN IM PROBLEMSTATUS Benutzerprogramme haben das geringste Privileg. Sie haben nur zu einem Teil des virtuellen Speichers Zugriff. Gewisse Betriebssystem-Programme, die nicht zum harten Kern des Betriebssystems gehören, laufen ebenfalls im Problemstatus. Sie haben Zugriff zum gesamten virtuellen Speicher, z.B. mit Privilegstufe 1. Benutzerprogramme, z.B. in Privilegstufe 3, können die Systemprogramme in Stufe 1 im Fehlerfall nicht unbeabsichtigt abändern. Für gewisse Systemprogramme, die z.B. neu und (noch) nicht vollständig ausgetestet sind, mag es sinnvoll sein, eine weitere Privilegstufe 2 vorzusehen. Die S/360 bzw. zSeries und manche RISC-Architekturen verzichten hierauf.

wgs 12-87

Register Number

Control Register

Access Register

General Register

Floating Point Register

64 bits

32 bits

64 bits

64 bits

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

zSeries Control-, Access, General, and Floating-Point Register es 0158 ww97

wgs 04-02

Supervisor und Problem State Privilegierte Maschinenbefehle können nur im Supervisor Status ausgeführt werden. Bit 15 im PSW gibt an, ob die CPU im Supervisor Status oder im Problemstatus läuft When PSW bit 15 is one, the CPU is in the problem state. When PSW bit 15 is zero, the CPU is in the supervisor state (zArchitecture Principles of Operations, p. 4-6)

Überwacherstatus

• Benutzung bestimmter, sogenannter "privilegierter" Maschinenbefehle, • Umfang der Autorisierung, auf Bereiche des Hauptspeichers zuzugreifen. • Verfügbarkeit von Zugriffen auf bestimmte Register der Zentraleinheit.

bs 0102 ww6

wgs 09-02

S/390 Architektur PSW Format

es 0242 ww6

wgs 09-02

z/ PSW Format

es 0241 ww6

wgs 09-02

zSeries Architektur Programm Status Wort

System Memory

CPU Hardware

The PSW format was changed to allow instruction addresses above 2 Gigabytes. However, as long as the instruction address is below 2 Gigabytes, the 128-bit PSW can be mapped into the ESA/390 64-bit PSW with no loss of information. The first 33 bits and the last 31 bits of the PSW are the same in both formats with the following exceptions: • Bit 12: 1 for 64-bit PSW (old S/370 EC-mode bit), 0 for 128-bit PSW. • Bit 31: Always 0 in S/370 and ESA/390. • 1 for AMODE 64, 0 for AMODE 24 or 31 in z/Architecture. LPSW instruction automatically converts a 64-bit PSW to 128-bit format for z/Architecture. New LPSWE instruction is used to load a 128-bit format PSW.

Adresse

004710 11 12 13

Hauptspeicherinhalt 1 3 5 7

2 4 6 8

1 2 3 4 5 6 7 8

Big Endian

004710 11 12 13

1 3 5 7

2 4 6 8

7 8 5 6 3 4 1 2

Little Endian Wenn Halbworte oder Worte im Hauptspeicher gespeichert sind, dann befindet sich an der adressierten Hauptspeicherstelle: -

Das wertniedrigste Byte bei Little Endian Rechnern

-

Das werthöchste Byte bei Big Endian Rechnern

Die Bytes eines Halbwortes oder Wortes werden bei Little Endian Rechnern in umgekehrter Reihenfolge abgespeichert wie bei Big Endian Rechnern. ar0306 ww6

wgs 09-96

Byte Ordering Hauptspeicheradressen sind Byteadressen - es wird ein bestimmtes Byte adressiert. Bei Zugriff auf ein Halbwort, Wort oder Doppelwort im Hauptspeicher bezieht sich Adresse entweder auf das werthöchste oder das wertniedrigste Byte.

Little Endian Das wertniedrigste Byte wird adressiert. Beispiele: DEC Alpha DEC VAX Intel Pentium, Pentium Pro Intel 80860

Big Endian Das werthöchste Byte wird adressiert. Beispiele: HP Precision IBM ESA/390 IBM/Motorola PowerPC (mit little Endian Option) MIPS 10000 (mit little Endian Option) Motorola 68040 Motorola 88110 (mit little Endian Option) Sun Sparc Beim Internet (TCP/IP) wird der Big Endian Standard eingesetzt (Network Byte Order) ar0307 ww6

wgs 09-96

Big Endian - Little Endian Kompatibilität

Moderne Mikroprozessoren verfügen über zwei Status Bits im PSW Register, welche definieren, ob der Rechner im Big Endian oder im Little Endian Modus arbeitet. Diese Bits können während der Programmausführung dynamisch gesetzt werden. Ein Bit definiert den Modus des laufenden Programms; das 2. Bit definiert den Modus der Unterbrechungsroutinen. Dadurch ist es z.B. möglich, daß ein Big Endian Betriebssystem (z.B. Unix) Little Endian Anwendungen (z.B. Windows) ausführen. Wenn eine externe Unterbrechung auftritt, kann der Rechner vom Little Endian Modus in den Big Endian Modus umgeschaltet werden. Eine Workstation kann so Anwendungen aus unterschiedlichen Betriebssystemumgebungen gleichzeitig ausführen. Die P-Series Architektur ist prinzipiell Big Endian, unterstützt aber auch Little Endian. Die S/360 und zSeries Architektur ist ausschließlich Big Endian.

ar 1209 ww

wgs 12-94

Privilegstufen Speicherschutz Stapel (Stack) Unterbrechungen

Hardware Unterstützung von Betriebssystem-Funktionen

Speicherschutz (Hardware) Storage Protection

Hardware-Einrichtungen, die mehrere Prozesse daran hindern, Daten anderer Prozesse zu verändern.

(zArchitecture Principles of Operations, p. 3-8)

7 1 3 4 4 3

Hauptspeicher aufgeteilt in Blöcke (Rahmen) zu je 4096 Bytes Jedem Block wird vom Kernel eine Speicherschutznummer zwischen 0 ... 15 zugeordnet

3 3 1 7 7 1 0 0 0 00 ... 00

S/390 Speicherschutz

es 0146 ww6

wgs 06-99

S/390 Speicherschutz Speicherschutzschlüssel, Bit 8 - 11

4 Bit

Programmstatuswort

19 Bit

12 Bit

4 Bit

Adresse

RÄ Speicherschutzschnellspeicher mit Hauptspeicherschlüsseln. Je 1 Schlüssel (4 Bit) pro 4096 Byte Block (plus Steuerbits, z.B. Referenzbit R und Änderungsbit Ä)

ja Vergleich

Speicherzugriff ok

nein Programmunterbrechung

es 0147 ww6

wgs 06-99

SpeicherschutzSchlüssel

0

Nutzung

Genutzt vor allem vom Betriebssystem Kernel. Erlaubt Zugriff auf den gesamten Speicher

1–7

von verschiedenen Subsystemen verwendet

8

Default für Anwendungen

9

CICS Speicherschutz

10 - 15

6 unterschiedliche Prozesse in virtual = real mode

Nutzung der Speicherschutzschlüssel

Zweistufige Adressumsetzung, S/390, Pentium In der S/390 Architektur übernimmt Control Register 1 (CR1) die Rolle des Segment Registers (STOR, Segment Table Origin Register)

Speicherschutz in virtuellen Systemen Virtuelle Systeme erreichen den Speicherschutz dadurch, daß die Prozesse mit getrennten Segmenttafeln arbeiten. Die Segmenttafel befindet sich im Hauptspeicher. Die Anfangsadresse der Segmenttafel befindet sich in einem Steuerregister der Zentraleinheit, dem Segmentregister. Bei einstufiger Adressumsetzung (z.B. VAX) hat die Seitentafel und das Seitentafelregister die gleiche Funktion. Das Segmentregister wird beim Prozesswechsel mit unterschiedlichen Werten geladen. Da Rahmen nur über Seitentafeleinträge angesprochen werden können, kommt ein Prozess nicht an Rahmen heran, die ihm nicht zugeordnet sind.

physische Rahmenadresse

SpeicherSchutzBits

Speicherschutz über Seitentafel-Feld z. B. Read only, Read/Wri

Seitentafel Speicherschutzschlüssel

Zusätzlich haben virtuelle Systeme einen Speicherschutzschlüssel in einem Feld des Seitentafeleintrags. Hiermit können im Benutzer Status mehrfache Privilegstufen verwirklicht werden. Zum Beispiel können in Privilegstufe 2 manche Seiten nur gelesen werden, die in Privilegstufe 1 auch abgeändert werden können. Die Privilegstufe steht in einem Register der Zentraleinheit. Bei jedem Speicherzugriff wird die Berechtigung überprüft, indem das Speicherschutzschlüsselfeld im Seitentafel Eintrag mit dem Privilegstufenfeld des PSW verglichen wird. Ein nicht berechtigter Speicherzugriff führt zu einer Programmunterbrechung. wgs 4-89

Speicherschutz - Eintrag in der Segmenttafel

Vorteilhaft, wenn mehrere Prozesse die gleiche Seitentafel benutzen. Unterschiedliche Zugriffsberechtigungen für unterschiedliche Prozesse

Hauptspeicher aufgeteilt in 4 KByte Blöcke (Seitenrahmen) mit unterschiedlichen Speicherschutzschlüsseln

Puffer Überlauf in benachbarten 4 KByte Block

C 7 7 3 3 3 4 4 4 A A 0 0 0 0

Speicherschutzschüssel

Verhinderung des Puffer Überlaufs (Buffer Overflow)

es 0263 ww6

wgs 07-04

Computer security and Buffer Overflows In a discussion in 2Q2004 Prof. Welsch (IBM Laboratory Boeblingen) and myself came to an interesting conclusion with regard to another leading edge technology characteristic of the zSeries systems. Security holes leave computer systems open to malicious attacks. There is general agreement the most common exploit involves stack overruns and buffer overflows. Microsoft states no single technique can completely eliminate this type of vulnerability. See http://msdn.microsoft.com/events/pdc/default.aspx?pull=/library/enus/dnwxp/html/securityinxpSP2.asp Well, this statement by Microsoft is not quite true. Let me start with stack overruns. Computer scientists have argued for quite some time that hardware architectures should refrain from implementing a hardware stack, but should implement stacks in software only. A hardware stack is an area of memory, on which you can operate with PUSH and PULL machine instructions and which is used for subroutine linkage etc. The IA32 (Pentium) architecture uses a hardware stack (4-5 as a matter of fact). Several modern hardware architctures, including Hewlett Packard Precision, IBM zSeries, IBM and Motorola Power PC, and MIPS do not have a hardware stack. If there is no hardware stack, a stack overrun cannot happen. Now to buffer overflows. The zSeries (former S/390) architecture features a 4 bit hardware protection key. Every 4 Kbyte page frame in memory is assigned one of the 16 keys, and each process runs with one of the 16 keys. Keys are checked during each physical memory access, including cache accesses. If a process accesses a page frame where the keys do not match, a protection error interrupt occurs. This is especially true, if a user process tries to acces kernel mode memory, but it can also be used to protect user processes from each other. If a buffer overflow grows into an adjacent page frame with a non-matching key, access is denied. Certainly, illegal access into kernel areas is impossible.

Key = x buffer overflows into adjacent page frame

Key = y Main Memory, divided into 4Kbyte blocks (= page frames) each with a different protection key

The zSeries machines appear to be quite invulnerable to outside attacks. The hardware protection key mechanism is probably one of the reasons - there are of course others. The IA32 Architecture and most other architectures do not provide such a feature. The IA64 (Itanium) Architecture uses a Register Stack Engine (http://cpus.hp.com/technical_references/dale.ppt).and protection keys (http://www.gelato.unsw.edu.au/IA64wiki/LongFormatVhpt). An analysis of their vulnerabilities requires more work. W. G. Spruth