UNIX-Schnittstelle
==================
0. UNIX und Standards
=====================
|
| next | back | 2017 - 1 |
Alle Beispiel-Quellen mittels SVN unter:
https://svn.informatik.hu-berlin.de/svn/unix-2014/Einleitung
Was ist UNIX?
Ein Betriebssystem.
Was ist ein Betriebssystem?
Philosoph:
Menge von manuellen oder automatischen
Prozeduren, die es einer Menge von Personen
ermöglichen einen Rechner geteilt oder
gemeinsam zu nutzen.
Praktiker:
Die Gesamtheit aller Programme, die sich zu
einem bestimmten Zeitpunkt in einem
Rechnersystem befinden.
|
| next | back | 2017 - 2 |
Entwicklung des Betriebssystems UNIX
------------------------------------
Kurzer geschichtlicher Abriss
http://www.levenez.com/unix/unix_a4.pdf (27 DIN A4 Seiten)
1965-1969 Multics
1969/70 UNIX für PDP-7 (Version 1)
1970 Entstehungsjahr
in Bell Laboratorien (Anfang der Arbeiten 1962)
Die Pioniere:
Ken Thompson
Douglas Mcllroy
Dennis Ritchie
auf DEC PDP-11/20
64 KByte Haupspeicher, 4 Platten a 2,5 MB
Fernschreibmaschinen für die Kommunikation
Ziel: Kleines Dialogsystem für die Programmentwicklung
für ein kleines Team.
System: leistungsfähiges Filesystem + kleines Betriebssystem
UNIX Programmer's Manual, Version 2, Juni 1972:
"Es gibt zur Zeit zehn UNIX Installationen,
mehr sind zu erwarten."
Philosophie: einfache Programme, die eine kleine Aufgabe
perfekt realisieren und die man dynamisch zu grossen
Werkzeugen verbinden kann.
|
| next | back | 2017 - 3 |
1973 UNIX für PDP-11 (Version 3 vollständig in C)
Erster Kernel in C!!!!
1975 UNIX Version 6 (letzte einheitliche Version)
erste Portierungen auf nicht PDP-Architekturen
(Dauer: 6 Monate)
1977 500 UNIX-Systeme im akademischen Bereichen
1. nicht PDP-Maschine unter UNIX (Interdata 8/32)
1979 UNIX Version 7 (letzte einheitliche Version)
1979/80 AT&T BSD
(Berkeley System Distribution)
PDP-11 VAX
System III BSD 2 BSD 3
BSD 2.1 BSD 4.0
Nun beginnt das Chaos:
1980 XENIX UNIX Version 7 BSD-UNIX Version 1
Kommerzielles: DG/UX, IX/379, MUNIX, HP-UX
1983 System V.0 BSD 2.8 BSD 4.1
(UNIX Version 8)
1984 System V.2 BSD 2.9 BSD 4.2
Signalbehandlung, IPC,
schnelles Dateisystem
|
| next | back | 2017 - 4 |
1985 UNIX System VR2 UNIX Version 8 BSD-UNIX Version 4.2
Kommerzielles: SunOS, Ultrix, SCO-UNIX, Venix
Grafische Oberfläche Windows (MIT)
Kommuniktation über Sockets ("Internet")
1986 System V.3 BSD 4.3
(UNIX Version 8) (UNIX Version 9)
1987 System V.3.1 BSD 2.10
1988 System V.3.2 BSD 4.3 Tahoe
1990 UNIX System VR4, UNIX Version 10, BSD-UNIX Version 4.3, OSF/1
Kommerzielles: SUNOS, AIX, Ultrix, HP-UX, SCO-UNIX
Akademisches: MINIX
1995 UNIX SYSTEM VR5, BSD-UNIX Version 4.4
Kommerzielles: SUNOS 4.1, AIX, Digital UNIX, HP-UX
Akademisches: Linux
2003 UNIX System VR5, Open BSD, Linux 2.4/2.6
Kommerzielles: Solaris 2.9, AIX, HP-UX, Compaq-UNIX, SGI-UNIX, ..
Akademisches: Linux, OpenBSD
2005 UNIX System VR5, Open BSD, Linux 2.4/2.6
Kommerzielles: Solaris 2.10, AIX, HP-UX, SGI-UNIX, ....
Akademisches: Linux, Open BSD, FreeBSD
|
| next | back | 2017 - 5 |
Kommerzielle UNIX-Systeme:
UNIX Version 7:
MUNIX, ULTRIX-11, HP-UX 1.0, VENIX, ZEUS
BSD 4.2:
ULTRIX-32, ULTRIX, SUN-OS, Solaris 1.0,
System V.2:
XENIX 5.0, Interactive V.2
System V.3 + BSD 4.2:
HP-UX 8.0, Sinix, AIX
System V.4:
HP-UX 10.0, Solaris 2.11, SINIX V.4, Interactive V.4
OSF/1:
DEC OSF/1 AXP Version 3.2 (1996)
|
| next | back | 2017 - 6 |
Standards
---------
1989
XPG3
(X/Open Portability Guide, Issue 3)
Zusammenschluss von Firmen
Basis ist IEEE 1003.1 von 1988
(Institute of Electrical and Electronical
Engineers)
Standardisiert wurde:
Betriebssystemschnittstellen
ANSI-C
(American National Standards Institute)
ANSI Standard X3.159-1989
Identisch mit ISO/IEC 9899 von 1990
Standardisiert wurde:
Syntax und Semantik von C
Bibliotheksfunktionen von C
UNIX-Systeme:
System V.3.3
System V.4
BSD Net1 (386)
UNIX Version 9
|
| next | back | 2017 - 7 |
1988
POSIX.1
(Portable Operating System Interface for
Computer Environments)
Besteht aus mehreren IEEE-Standards
Standardisiert wurde:
Operating System Interface (IEEE 1003.1 - 1988
Shells and Utilities (IEEE 1003.2 - 1988)
Systemadministration (IEEE 1003.7 - 1989)
kleiner gemeinsamer Teil der existierenden UNIX-Systeme
1993
XPG 4
1994
X/Open Foundation
Spec 1170 bassieren auf System V
relativ grosse Differenzen zu POSIX.1
1998
Gründung der Austin Group bestehend aus Teilnehmern
der X/Open Group, von IEEE POSIX und dem
ISO/IEC Joint Technical Commitee
Ziel: Schaffung eines einheitlichen UNIX-Standards unter
Berücksichtigung der Microsoft-Welt
2002
Verabschiedung von IEEE Std. 1003.1-2001 - POSIX
4 Teile: Base Definitions, Shell and Utilities,
System Interfaces, Rationale
|
| next | back | 2017 - 8 |
Aktuelles POSIX
Es gibt in den realen Systemen verschiedenste Versionen
von POSIX. Außerdem gibt es noch ca. 50 Erweiterungen.
genauere Informationen erhält man
für Linux aus:
/usr/include/unistd.h --> /usr/include/bits/confname.h
für Solaris aus:
/usr/include/unistd.h --> /usr/include/sys/unistd.h
z.B. _POSIX_VERSION
199506L - Solaris 2.9
199506L - debian - Woody 3.0-r2, 2.4.18
198808L - Mac OS 10.2
199212L - OpenBSD 4.3
200112L - SuSE 9.1 - 11.1, Solaris 2.10
200809L - SuSE 11.4
Programm: getconf -a
getconf <Variablenname>
getconf _POSIX_VERSION
|
| next | back | 2017 - 9 |
Zum POSIX gibt es definierte Zusätze, die bei einem System
vorhanden sein können oder nicht. Das System ist in jedem
Fall POSIX-Konform.
Einige mögliche POSIX-Zusätze (Beispiele)
(ca. 50)
POSIX Bedeutung Solaris 9 Linux MAC OS
Code 2.4.18 10.2
AIO Asynchrone input and output + + -
CD C-Language dev. utilities + + +
CS Clock section + + +
CX Extension ISO C standard + + +
FSC Filesynchronization + + +
ML Process memory lock + + +
MPR Memory protection + + +
MSG Message passing + + +
RTS Realtime signals extension + + -
PS Processing sheduling + + +
SEM Semaphore + +- +-
unnamed named
SHM Shared Memory + + +
THR Threads + + +
TSA Thread Stack address Attribute - - -
TSF Thread Safe Functions + +- +
|
| next | back | 2017 - 10 |
Bestimmung der Fähigkeiten eines UNIX-Systems mittels des Systemrufes
"sysconf".
#include <unistd.h>
long sysconf(int name)
main(int argc,char **argv);
{
printf( "OPEN MAX: %ld\n", sysconf(_SC_OPEN_MAX));
printf( "_SC_THREADS: %ld\n", sysconf(_SC_THREADS));
}
Beispiele:
_SC_THREADS - Threads vorhanden
_SC_SHARED_MEMORY_OBJECTS - Shared Memory vorhanden
_SC_ARG_MAX - Maximaler Platz für Argumente
_SC_MEMLOCK - Process Memory Locking
_SC_SEMAPHORES - Semaphore vorhanden
_SC_FSYNC - File Synchronisation
_SC_TRACE - Trace möglich
_SC_TIMERS - Timer vorhanden
|
| next | back | 2017 - 11 |
Standardisierte Headerfiles
---------------------------
XPG3 Headerfiles
-----------------
dirent.h - Directoy entry
fcntl.h - Filesteuerung
ftw.h - File-Baum-Struktur
grp.h - "/etc/group"-File
langinfo.h - Sprachinformationen
nl_types.h - nationaler Nachrichtenkatalog
pwd.h - "/etc/passwd"-File
regex.h - reguläre Ausdrücke
search.h - Tabellen suchen
termios.h - Terminal E/A
ulimits.h - Nutzerlimits
unistd.h - Symbolische Konstanten
utime.h - Zeitstempel in Files
sys/ipc.h - Interprozesskommunikation
sys/msg.h - IPC Messages
sys/sem.h - IPC Semaphore
sys/shm.h - IPC Shared Memory
sys/stat.h - Filestatus
sys/times.h - Prozesszeiten
sys/types.h - Systemdatentypen
sys/utsname.h - Systemname
sys/wait.h - Prozessteuerung
|
| next | back | 2017 - 12 |
ANSI-C Headerfiles
------------------
assert.h - Fehlerprüfung
ctype.h - char-Typen
errno.h - Fehlerkodes
float.h - Gleitkommakonstanten
limits.h - Implementationskonstanten
local.h - lokale Konstanten
math.h - mathematische Konstanten
setjmp.h - Sprung
signal.h - Signalbehandlung
stdarg.h - Argumentenübergabe
stddef.h - Standarddefinitionen
stdio.h - Standard E/A
stdlib.h - Hilfsfunktionen
string.h - Stringfunktionen
time.h - Datum und Uhrzeit
|
| next | back | 2017 - 13 |
POSIX Headerfiles
-----------------
cpio.h - cpio-Archivstruktur
dirent.h - Directoy entry
fcntl.h - Filesteuerung
grp.h - "/etc/group"-File
tar.h - tar-Archivstruktur
termios.h - Terminal E/A
unistd.h - Symbolische Konstanten
utime.h - Zeitstempel in Files
sys/stat.h - Filestatus
sys/times.h - Prozesszeiten
sys/types.h - Systemdatentypen
sys/utsname.h - Systemname
sys/wait.h - Prozessteuerung
"Quasi"-Standards
-----------------
System V Release 3 (SVR3)
System V Release 4 (SVR4)
BSD 4.3
BSD 4.4
"Linux"
In der Vorlesung benutzt:
XPG4, ANSI-C, POSIX, Linux, Solaris
|
| next | back | 2017 - 14 |
Filesystemübersicht SUN Solaris 2.10
====================================
/bin - Link auf /usr/bin
/boot - Bootloader Solaris
/cdrom - Mountpunkt für CDROM-Laufwerk
/devices - Physische Geräte
/devices/pci@1c,600000, /devices/pci@1d,700000, /devices/pseudo
/dev - Gerätedateien
/dev/cfg, /dev/cua, /dev/dsk, /dev/md, /dev/md/dsk, /dev/md/admin,
/dev/md/rdsk, /dev/md/shared, /dev/pts, /dev/rdsk,
/dev/rmt, /dev/sad, /dev/swap, /dev/term, /dev/usb
/etc - Files für Systemverwaltung
/etc/acct, /etc/apache2, /etc/certs, /etc/cron.d, /etc/default,
/etc/dfs, /etc/dhcp, /etc/dt, /etc/fonts, /etc/fs, /etc/ftpd, /etc/gconf,
/etc/gnome /etc/gtk, /etc/inet, /etc/init.d, /etc/lib, /etc/lp,
/etc/lvm, /etc/mail, /etc/net, /etc/nfs, /etc/opt, /etc/opt/licenses,
/etc/rc0.d - Files zur Herstellung des Systemzusandes 0
/etc/rc1.d, /etc/rc2.d, /etc/rc3.d, /etc/rcS.d
/etc/saf - Files für Terminalinitialisierung
/etc/security - Sicherheitsbereich
/etc/sfw - OpenSource
/etc/ssh - ssh-Bereich
/etc/svc - SMF
/etc/uucp - uucp-Konfiguration
/etc/xml, /etc/zfs, /etc/zones
/export
/export/exec, /export/exec/kvm, /export/home, /export/share
/home - Homedirectoies
|
| next | back | 2017 - 15 |
/kernel - Kernel-Module
/kernel/drv, /kernel/exec, /kernel/fs, /kernel/misc,
/kernel/sched, /kernel/strmod, /kernel/sys
/lib - wichtige Libraries
/mnt - allgemeiner Mountpoint
/net
/opt - optionale Software
/opt/SUNWconn, /opt/SUNWdat, /opt/SUNWsdocs, /opt/csw
/platform - Plattformabhängige Software
/platform/sun4u, /platform/sun4u/kernel
/platform/SUNW,Sun-Fire-880, /platform/SUNW,Sun-Fire-V240
/proc - Prozess-Filesystem
/rpool - Mountpoint für ZFS
/sbin - System-Binaries
/system - System
/tftpboot - Homedir für TFTP
/tmp - temporäre Files
/usr - Systemfiles für Nutzer
/usr/X
/usr/X11
/usr/X11R6
/usr/4lib - Libraries
/usr/5lib - Libraries
/usr/adm - ../var/adm
/usr/apache2
/usr/apserver
/usr/bin - Binaries
/usr/ccs, /usr/demo, /usr/dt
/usr/games, /usr/gnome
/usr/include - Headerfiles
|
| next | back | 2017 - 16 |
/usr/java
/usr/jdk
/usr/j2se
/usr/kernel - Kernelmodule
/usr/kvm
/usr/lib - Libraries und Konfigurationsfiles
/usr/lib/acct, /usr/lib/adb /usr/lib/autofs
/usr/lib/cpu, /usr/lib/devfsadm, /usr/lib/firmware, /usr/lib/font
/usr/lib/fs, /usr/lib/glib-2.0, /usr/lib/help, /usr/lib/localedef
/usr/lib/lp, /usr/lib/inet, /usr/lib/krb5, /usr/lib/mail, /usr/lib/netsvc
/usr/lib/nfs, /usr/lib/nis, /usr/lib/patch, /usr/lib/pkgconfig
/usr/lib/secure, /usr/lib/security, /usr/lib/smartcard, /usr/lib/snmp
/usr/lib/term, /usr/lib/uucp, /usr/lib/vold
/usr/local - locale Files
/usr/mail
/usr/net
/usr/net/servers
/usr/news
/usr/openwin - Openwin
/usr/patch
/usr/perl5 - Perl 5
/usr/platform
/usr/platform/sun4m, /usr/platform/sun4u, SUNW,Sun-Fire-880, ..
/usr/proc
/usr/proc/bin, /usr/proc/lib
/usr/pub - Zeichensätze
/usr/sadm - Systemadministration
/usr/sadm/admin, /usr/sadm/bin, /usr/sadm/install, /usr/sadm/lib,
/usr/sadm/mof, /usr/sadm/smc, /usr/sadm/sysadm, /usr/sadm/updates
|
| next | back | 2017 - 17 |
/usr/sbin
/usr/sbin/install.d, /usr/sbin/static, /usr/sbin/sparcv7, /usr/sbin/sparcv9
/usr/sfw - OpenSource Software
/usr/sfw/bin, /usr/sfw/sbin, /usr/sfw/lib, /usr/sfw/share, ...
/usr/share
/usr/share/doc, /usr/share/lib, /usr/share/man, /usr/share/src,
/usr/snadm
/usr/snadm/bin, /usr/snadm/classes, /usr/snadm/etc, /usr/snadm/lib
/usr/spool - Spool-Directory
/usr/src - Quellen
/usr/sunvts
/usr/tmp - Temporäre Files
/usr/ucb - SUNOS-Programme
/usr/ucbinclude
/usr/ucbinclude/sys, /usr/ucbinclude/ufs
/usr/ucblib
/usr/xpg4
/usr/xpg4/bin, /usr/xpg4/include, /usr/xpg4/lib
/usr/xpg6
/var - veränderbare Systemfiles
/var/adm, /var/apache, /var/audit, /var/crash, /var/cron, /var/log
/var/lp, /var/mail, /var/news, /var/nfs /var/nis, /var/ntp
/var/opt, /var/preserve, /var/sadm, /var/saf, /var/samba, /var/snmp
/var/spool - Spool-System
/var/statmon
/var/statmon/sm, /var/statmon/sm.bak
/var/tmp
/var/uucp - UUCP
|
| next | back | 2017 - 18 |
/var/yp - NIS
/var/yp/binding, /var/yp/informatik
/vol - Mountpoint Automounter
/volumes - Volumemanager (/vol)
/xfn - cache
|
| back | 2017 - 19 |