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 |