besturingssysteem

Een besturingssysteem , ook wel OS (van het Engelse besturingssysteem ) genoemd, is een compilatie van computerprogramma's die de systeembronnen van een computer zoals hoofdgeheugen , harde schijven , invoer- en uitvoerapparaten beheren en deze toepassingsprogramma's beschikbaar stellen. Het besturingssysteem vormt zo de interface tussen de hardwarecomponenten en de applicatiesoftware van de gebruiker. [2] Besturingssystemen bestaan meestal uit een kernel die de hardware van de computer beheert, evenals speciale programma's die bij het opstarten verschillende taken overnemen. Deze taken omvatten het laden van apparaatstuurprogramma's . Besturingssystemen zijn te vinden in bijna alle soorten computers: als realtime besturingssystemen op procescomputers en embedded systemen , op personal computers , tabletcomputers , smartphones en op grotere multiprocessorsystemen zoals B. servers en mainframes .
De taken van een besturingssysteem kunnen als volgt worden samengevat: gebruikerscommunicatie; Programma's laden, uitvoeren, pauzeren en beëindigen; Beheer en toewijzing van processortijd; Beheer van interne opslagruimte voor applicaties; Beheer en bediening van de aangesloten apparaten; Beschermende functies b.v. B. door toegangsbeperkingen . De weging tussen deze taken is in de loop van de tijd veranderd; met name beveiligingsfuncties zoals geheugenbeveiliging of beperkte gebruikersrechten zijn belangrijker dan in de jaren negentig. Dit maakt systemen over het algemeen robuuster, waardoor b.v. B. het aantal programma- en systeemcrashes en maakt het systeem ook stabieler tegen aanvallen van buitenaf, zoals computervirussen .
Dit artikel behandelt de term "besturingssysteem" voornamelijk in de context van "computersystemen die algemeen worden gebruikt voor informatieverwerking". Daarnaast worden besturingssystemen (met mogelijk gespecialiseerde functionaliteit) in principe gebruikt in bijna alle apparaten waarin software wordt bediend (zoals spelcomputers , mobiele telefoons , navigatiesystemen , machines in de machinebouw en vele andere). Ook veel besturingssystemen (embedded system) z. B. in vliegtuigen, auto's, treinen of in satellieten gespecialiseerde besturingssystemen hebben.
Definities en afbakening
Een besturingssysteem neemt twee essentiële taken op zich die in principe niet direct met elkaar verband houden [3] :
- Een taak is om de applicatieprogrammeur te voorzien van schone abstracties van de bronnen (in plaats van de lelijke hardware). Het besturingssysteem biedt dus een gemakkelijker te begrijpen en beter beheersbare interface naar de eigenlijke machine en "verbergt" de complexiteit van de onderliggende machine: "De contactpersoon voor de programmeur is niet langer de echte machine, maar een virtuele machine (besturingssysteem) , dat veel eenvoudiger is, is te begrijpen en te programmeren.” [4] Het besturingssysteem creëert abstracte objecten om de complexiteit beheersbaar te maken. Een voorbeeld van zo'n abstractie is het bestand . Dit kan bijvoorbeeld in de vorm van een digitale foto , een opgeslagen e- mailbericht of een website zijn. Het is beslist gemakkelijker om mee om te gaan dan de details van de opslag op de harde schijf . [5]
- De andere taak is het beheren van de hardwarebronnen: "Een besturingssysteem moet zorgen voor een ordelijke en gecontroleerde toewijzing van processors, geheugeneenheden en randapparatuur over de verschillende programma's die erom strijden." [4] Het besturingssysteem organiseert en controleert de toewijzing van processors, geheugen en invoer- / uitvoerapparaten en controleert welk programma momenteel welke bronnen gebruikt. Als er bijvoorbeeld meerdere opdrachten voor een printer zijn , moet worden aangegeven hoe deze moeten worden verwerkt. Dit betekent dat er op een modern besturingssysteem meerdere programma's tegelijk kunnen worden uitgevoerd. Als meerdere gebruikers een computer of een netwerk gebruiken, worden maatregelen voor het beheren en beschermen van geheugen, invoer-/uitvoerapparaten en andere bedrijfsmiddelen nog belangrijker. Anders zouden de gebruikers met elkaar interfereren. [6]
Het geheel van alle programma's en bestanden die alle processen in de werking van een computer besturen, wordt systeemsoftware genoemd . Denk hierbij aan besturingssystemen, maar ook aan systeemgerelateerde software zoals compilers , interpreters en editors . Applicatiesoftware zoals browsers of boekhoudsoftware gebruiken de systeemsoftware om ervoor te zorgen dat alles soepel verloopt. [7] In de literatuur wordt de term "besturingssysteem" binnen de systeemsoftware anders geïnterpreteerd.
In DIN-verzameling 44300 (verouderd, vervangen door ISO / IEC 2382: 2015 zie: Lijst van DIN-normen / DIN 1–49999 onder DIN 44300) is de definitie gebaseerd op zijn taak en positie in een programmahiërarchie:
"Het besturingssysteem wordt gevormd door de programma's van een digitaal computersysteem die, samen met de eigenschappen van het computersysteem, de basis vormen van de mogelijke bedrijfsmodi van het digitale computersysteem en met name de uitvoering van programma's controleren en bewaken ."
Voor Andrew S. Tanenbaum is de term besturingssysteem in wezen beperkt tot de kernel : "Editors, compilers, assemblers , binders en command interpreters maken zeker geen deel uit van het besturingssysteem, zelfs als ze belangrijk en nuttig zijn." [9] Velen leerboeken volgen dit engere gezichtspunt. Andere auteurs voegen ook een commandotaal voor het besturingssysteem toe: "Naast het beheer van de hardware [...], bieden moderne besturingssystemen tal van diensten, zoals voor begrip tussen processen, bestands- en directorysystemen, gegevensoverdracht via netwerken en een commandotaal." [10] Een andere versie van de term, die bijvoorbeeld ook redacteuren en compilers omvat, gaat gedeeltelijk terug op oudere werken in het Duitstalige gebied, maar is nog steeds te vinden in de huidige literatuur. De auteurs van Informatik-Dudens rekenen ook vertaalprogramma's en hulpprogramma's tot de essentiële componenten van een besturingssysteem. [11] Meer recentelijk kan het GNU / Linux-naamgeschil worden gezien als een voorbeeld van de afbakeningsproblemen.
Ongeacht hoe breed of beperkt de term "besturingssysteem" wordt gebruikt, de installatiemedia van het besturingssysteem bevatten meestal extra hulpprogramma's en toepassingen.
Ontwikkelingsstadia
De ontwikkeling van computerbesturingssystemen liep en gaat parallel aan de ontwikkeling en performance van beschikbare hardware: beide lijnen zijn onderling afhankelijk en maken aan de 'andere' kant verdere ontwikkelingen mogelijk of nodig. De ontwikkeling vond deels plaats in kleine, soms grotere sprongen:
Systemen die ponskaarten verwerken (geldt ook voor ponsbanden) behoren tot het verleden (sinds begin jaren 70). Ze zijn echter een goed uitgangspunt om naar systeemontwikkeling te kijken: in deze ruimtelijk relatief grote systemen waren er geen externe elektronische opslagmedia. De programma's waren beschikbaar (in machinetaal ) in de vorm van stapels ponskaarten en werden door de operator met behulp van de ponskaartlezer 'ingelezen' in het interne geheugen. Na de "end-Card", dat was het applicatieprogramma gestart, ook via de kaartlezer om de invoergegevens afhankelijk van de taak (vandaar de term batchverwerking , Eng. Batchverwerking, wachtrijsysteem) en de resultaten rechtstreeks naar een printer te lezen en/of via de kaartpons moest besteden. Stroomopwaarts en stroomafwaarts werden uitgevoerd met behulp van elektromechanische apparaten (kaartpons, mixer, sorteerder), opname-, meng- en sorteerprocessen waren vereist. Op dit moment was de interne verwerking al aanzienlijk sneller dan de invoer / uitvoerapparaten ; Het uitlezen van een stapel ponskaarten (doos met 2000 kaarten) duurde ca. 5-10 minuten, het werkgeheugen van dergelijke computers was ca. 16 tot 64 kB (zie bijvoorbeeld Systeem / 360 ).
Deze machines hadden geen conventioneel besturingssysteem zoals tegenwoordig gebruikelijk is. Alleen een besturingsprogramma (resident monitor) werd in het geheugen bewaard en zorgde ervoor dat alles soepel verliep door de besturing over te dragen aan de programma's die op dat moment werden uitgevoerd. De computer kon maar één programma tegelijk uitvoeren.
Een verdere ontwikkeling - Multiprogrammed Batch Systems - zou extra apparaten kunnen ondersteunen ( magneetbandeenheden , eerst magnetische schijven met bijvoorbeeld 7,25 MB opslagvolume), meerdere programma's tegelijkertijd uitvoeren (bijvoorbeeld in 3 'partities' ) evenals programma's en gegevens op externe herinneringen bewaren. Snellere verwerking was mogelijk omdat er geen tijd was om de stapels kaarten te lezen en uit te geven - en de processors werden sneller. Mechanismen als spooling (tussentijdse uitvoer van printergegevens op magneetband met vertraagd, parallel printen) en de mogelijkheid tot offline bediening worden al veelvuldig toegepast. Er was echter een programma nodig dat de taken van I/O-beheer, geheugenbeheer en vooral CPU-planning op zich zou nemen . Vanaf dat moment zou je kunnen spreken van de eerste besturingssystemen.
De volgende stappen waren vervolgens de consequenties van de respectievelijke verantwoordelijkheden die aan de systemen waren toegewezen. De volgende systemen zijn gemaakt en worden nog steeds gebruikt: parallelle systemen , gedistribueerde systemen , personal computersystemen , timesharingsystemen , realtime-systemen en, meest recentelijk, persoonlijke digitale assistenten en smartphones .
In de pc-sector zijn de meest gebruikte besturingssystemen momenteel de verschillende versies van Windows van Microsoft (leidend in systemen met GUI ), BSD inclusief macOS van Apple (meest gebruikte desktop Unix) en GNU / Linux (leidend in servers). Voor speciale toepassingen (bijvoorbeeld: industriële besturing ) worden experimentele besturingssystemen ook gebruikt voor onderzoeks- en onderwijsdoeleinden.
Naast de klassieke varianten zijn er ook speciale besturingssystemen voor gedistribueerde systemen waarbij onderscheid wordt gemaakt tussen het logische systeem en het fysieke systeem(en). De logische computer bestaat uit verschillende fysieke computereenheden. Veel mainframes, number crunchers en de systemen van Cray werken volgens dit principe. Een van de meest populaire besturingssystemen op het gebied van gedistribueerde systemen is Amoeba .
taken
De taken van een besturingssysteem omvatten meestal:
- Geheugen management
- Beheer van het hoofdgeheugen van de systeembron.
- Loggen van geheugengebruik.
- Reserveren en vrijgeven van geheugen.
- ( Proces )management
- Bewaking van geheugentoegangen en, indien nodig, beëindiging van processen in geval van een beveiligingsfout .
- Creëren van nieuwe processen (hetzij op verzoek van het besturingssysteem of op verzoek van andere reeds bestaande processen) en reservering van het geheugen dat nodig is voor de processen.
- Communicatie en synchronisatie van processen met elkaar ( interprocescommunicatie )
- Apparaat- en bestandsbeheer
- Efficiënte toewijzing van invoer- / uitvoerapparaten en schakeleenheden (datakanalen, besturingseenheden), vermijding van conflicten
- Initiëren, bewaken van uitvoering, beëindigen van input/output processen.
- Beheer van het bestandssysteem . Creëren van een naamruimte met bijbehorende opslagobjecten en, indien nodig, verdere objecten.
- Rechtenbeheer
- Onafhankelijke gebruikers / programma's mogen elkaar niet hinderen.
- abstractie
- Verberg de complexiteit van de machine voor de gebruiker
- Abstractie van het machineconcept (naar Coy ):
- Echte machine = centrale unit + apparaten (hardware)
- Abstracte machine = echte machine + besturingssysteem
- Gebruikersmachine = abstracte machine + applicatieprogramma
Om historische redenen is een apparaat vanuit het oogpunt van een besturingssysteem alles dat wordt aangesproken via invoer- / uitvoerkanalen. Dit zijn niet alleen apparaten in de traditionele zin, maar inmiddels ook interne extensies zoals grafische kaarten, netwerkkaarten en andere. De (sub)programma's voor het initialiseren en besturen van deze "apparaten" worden gezamenlijk apparaatstuurprogramma's genoemd .
Resource management en abstractie
Apparatuur of middelen zijn alle componenten die beschikbaar worden gesteld door de hardware van een computer, d.w.z. de processor (in multiprocessorsystemen, de processors), het fysieke geheugen en alle apparaten zoals harde schijven, diskettes en cd-rom-drives, netwerk- en interface- adapters en andere. De Hardware Compatibility List bevat alle hardwareproducten die zijn getest op functionaliteit in combinatie met een specifiek besturingssysteem.
Inleidend voorbeeld: timermodules
Moderne computersystemen hebben timermodules. In vroege pc's , b.v. B. de component 8284 van Intel wordt gebruikt. Dit blok moet eerst worden geïnitialiseerd. Hij kan dan de processor na verloop van tijd of periodiek onderbreken en deze zijn eigen routine laten verwerken. Naast de initialisatie moet een interruptroutine worden gemaakt, waarvan de aanroep in een geschikte taal moet worden geprogrammeerd (meestal assembler ). Omdat onderbrekingen asynchroon plaatsvinden, moet rekening worden gehouden met complexe relaties met betrekking tot de datastructuren. Exacte kennis van de component (datasheet), de computerhardware (interrupt handling) en de processor is vereist. De afzonderlijke componenten die bij dit proces betrokken zijn, worden samengevat onder de term computerarchitectuur.
Virtuele processors
Een modern multiprogramma-besturingssysteem gebruikt zo'n timermodule om de normaal gesproken enkele processor periodiek (meestal in het millisecondebereik) te onderbreken en mogelijk door te gaan met een ander programma (zogenaamde preëmptieve multitasking ). De initialisatie en de interruptroutine worden geïmplementeerd door het besturingssysteem. Zelfs als er maar één processor beschikbaar is, kunnen meerdere programma's worden uitgevoerd; elk programma krijgt een deel van de processortijd ( scheduling ). Met uitzondering van de langzamere uitvoeringstijd gedraagt elk programma zich alsof het zijn eigen virtuele processor heeft .
Virtuele timers
Daarnaast wordt elk programma via een systeemoproep, bijvoorbeeld alarm , voorzien van een eigen virtuele timer . Het besturingssysteem telt de onderbrekingen van de oorspronkelijke timer en informeert programma's die de alarmsysteemoproep hebben gebruikt . De individuele tijden worden beheerd via een wachtrij .
abstractie
De hardware van de timer is dus verborgen voor de programma's. Een systeem met geheugenbescherming geeft alleen toegang tot de timermodule via de kernel en alleen via nauwkeurig gedefinieerde interfaces (meestal systeemaanroepen genoemd die worden geïmplementeerd met behulp van speciale processorcommando's zoals TRAP, BRK, INT). Geen enkel programma kan het systeem in gevaar brengen, het gebruik van de virtuele timer is eenvoudig en draagbaar. De gebruiker of programmeur hoeft zich geen zorgen te maken over de (complexe) details.
Virtualisatie van verdere bronnen
Net zoals processors en timers worden gevirtualiseerd , is dit ook mogelijk voor alle andere bedrijfsmiddelen. Sommige abstracties worden soms alleen als software geïmplementeerd, andere vereisen speciale hardware.
Bestandssystemen
De details van de externe opslagsystemen (harde schijven, diskettes of cd-rom-drives) zijn verborgen via bestandssystemen . Bestandsnamen en mappen zorgen voor gemakkelijke toegang, de daadwerkelijk bestaande blokstructuur en de apparaatverschillen zijn volledig onzichtbaar.
Intern geheugen
Het interne geheugen ( RAM ) wordt ook wel hoofdgeheugen genoemd en wordt door het besturingssysteem in blokken (tegels) verdeeld, die op verzoek aan de geladen programma's ter beschikking worden gesteld. Meestal wordt het geheugen geïnitialiseerd, wat inhoudt dat eventueel nog aanwezige gegevens vooraf worden gewist. In veel systemen wordt via virtueel geheugen een doorlopend (aangrenzend) gebied aan elk programma ter beschikking gesteld. Virtueel geheugenbeheer maakt een flexibele benadering mogelijk waarbij het echte, fysiek beschikbare geheugen niet aaneengesloten hoeft te zijn ( segmentatie ) en ook niet echt zo groot hoeft te zijn als het lijkt vanuit het oogpunt van de programma's. In plaats daarvan worden individuele geheugenblokken, Engelse pagina's , heen en weer geschoven tussen het hoofdgeheugen (RAM) en het externe geheugen (bijv. het wisselbestand ) zoals vereist ( paging ).
netwerk
De details van netwerktoegang worden verborgen door een protocolstack toe te voegen aan de eigenlijke hardware (netwerkkaart). De netwerksoftware staat een willekeurig aantal virtuele kanalen toe . Op socketniveau (programmering) is de netwerkkaart volledig onzichtbaar, het netwerk heeft veel nieuwe mogelijkheden (bidirectioneel, betrouwbare datastromen, adressering, routering).
scherm
Een schermuitvoer wordt over het algemeen beschreven als een grafische gebruikersinterface (GUI, afkorting voor Graphical User Interface ) als deze verder gaat dan een opdrachtprompt . Met de juiste grafische kaarten en schermen, is het mogelijk om geometrische objecten (lijnen, cirkels, ellipsen, maar ook lettertype attributen en kleuren) op het scherm, van waaruit meer complexe geometrische elementen zoals knoppen, menu's, enz., Weer te geven kan zijn gebruikt om gebruikersinterfaces te maken voor eenvoudige bediening van programma's.
De grafische kaart als hardware is volledig verborgen voor de programmeur en gebruiker.
verhaal
Eerste besturingssystemen (tot 1980)
De eerste computers beheerden zonder een echt besturingssysteem, omdat slechts één programma in batchmodus kon worden geladen en de ondersteunde hardware nog steeds zeer beheersbaar was. De eerste digitale computer werd ontwikkeld door Charles Babbage (1792-1872). Hij zag al de noodzaak in om zijn “analytische machine” met software te bedienen. Hij huurde de dochter van de beroemde dichter Lord Byron Ada Lovelace in om vroege programma's te schrijven. Ada Lovelace wordt beschouwd als de eerste vrouwelijke programmeur. Charles Babbage is er nooit in geslaagd zijn "Analytical Machine" goed te laten werken. Tandwielen, koppelingen en andere mechanische onderdelen konden niet met de nodige precessie worden vervaardigd. [12]
Na de mislukte pogingen van Charles Babbage werd er weinig moeite gedaan om nog een digitaal computerproject op te zetten. Pas voor de Tweede Wereldoorlog werden de ideeën van Babbage weer opgepakt. De eerste digitale computers werden geïmplementeerd op basis van elektrische relais en buizen. De vroegste geleerden waren Howard Aiken van de Havard University , John von Neumann van de Princeton University , John William Mauchly , John Presper Eckert in Pennsylvania en Konrad Zuse in Berlijn. De eerste computers werden ontwikkeld door een team van technici die verantwoordelijk waren voor het ontwerp, de bouw, de programmering en het onderhoud van dergelijke machines. Programmeertalen waren onbekend en de programma's werden geïmplementeerd met behulp van insteekkaarten waarop de programma's werden geprogrammeerd met behulp van elektrische draden. Omdat een computer maar één programma kon draaien, waren besturingssystemen niet nodig. Het berekenen van een enkele taak duurde seconden en het uitvoeren van een programma duurde uren. Maar alleen als de computers met duizenden buizen of relais goed werkten. In de vroege jaren 1950 werden elektrische draden vervangen door ponskaarten . [13]
De voorloper van het besturingssysteem is de resident-monitor die in 1956 werd uitgevonden in de vorm van de GM-NAA I/O bij General Motors voor de IBM 704 , een stukje software dat automatisch de volgende taak startte nadat een batchtaak was voltooid. In 1959 ontstond het SHARE Operating System (SOS), dat al over rudimentair resourcebeheer beschikte. [14] Zijn opvolger IBSYS had al een simpele shell met commandotaal. [15]
In 1961 was het Compatible Timesharing System (CTSS) voor de IBM 7094 bijMIT het eerste besturingssysteem voor gebruik door meerdere gebruikers. Hierdoor konden meerdere gebruikers tegelijkertijd gebruik maken van het computersysteem via aangesloten terminals . [16] Een groot aantal programma's die tegelijkertijd werden geladen, maakten het noodzakelijk om de geheugengebieden die ze gebruikten af te bakenen. Virtueel geheugen [17] werd in 1956 ontwikkeld als een oplossing aan de Technische Universiteit van Berlijn en werd halverwege de jaren zestig voor het eerst geïmplementeerd in mainframe-besturingssystemen.
In die tijd leverde de hardwarefabrikant meestal het besturingssysteem dat alleen op een bepaalde modelserie draaide, zelfs alleen op een bepaald systeem, zodat programma's niet tussen verschillende computers of over verschillende generaties konden worden geporteerd. Met de introductie van de System/360 modelreeks van IBM in 1964 introduceerde IBM het OS/360 besturingssysteem in verschillende uitvoeringen (OS/360 voor systemen die puur op ponskaarten zijn gebaseerd, TOS/360 voor machines met tapedrives, DOS/360 voor mensen met harde schijven). Het was het eerste besturingssysteem dat in alle modelseries werd gebruikt.
Vanaf 1963 werd Multics ontwikkeld door AT&T in samenwerking metMIT , General Electric en Bell Laboratories (Bell Labs), maar het was pas in gebruik van 1969 tot 2000. Multics is geprogrammeerd in PL/I. Geïnspireerd door het werk aan Multics, begon een groep onder leiding van Ken Thompson en Dennis Ritchie bij Bell Labs in 1969 met de ontwikkeling van Unix . Van 1970 tot 1972 waren de RSX-15 en RSX-11 vroege voorlopers van het huidige Windows NT . In de jaren 1972-1974 werd Unix opnieuw geïmplementeerd in de hogere programmeertaal C met als doel de portabiliteit, op enkele onderdelen na, om op de toen nieuwe PDP-11 te kunnen draaien. Hierdoor ontwikkelde UNIX zich tot een hele familie van systemen voor verschillende hardwareplatforms.
De eerste pc's zoals de Altair 8800 uit 1975 hadden aanvankelijk geen besturingssysteem. Daarom moesten alle acties in een pure machinecode worden ingevoerd . De Altair 8800 ontving zijn eerste besturingssysteem in de vorm van een BASIC- interpreter. [18] Dit vertegenwoordigde zowel een programmeeromgeving als de algemene interface tussen de gebruiker en de hardware (die deze tolk direct bestuurde). Het was zowel een runtime-omgeving als een gebruikersinterface; Met behulp van bepaalde commando's kan de gebruiker bijvoorbeeld gegevens laden en opslaan en programma's uitvoeren. In 1974 vond Gary Kildall CP / M uit , dat wordt beschouwd als het eerste universele pc-besturingssysteem. Vanwege het modulaire ontwerp (de platformonafhankelijke kernel BDOS was gebaseerd op een hardwarestuurprogrammalaag genaamd BIOS), kon het met redelijke inspanning worden geport naar tal van incompatibele pc-platforms. Een programmeeromgeving bestuurde (meestal) de hardware niet meer rechtstreeks, maar maakte gebruik van de interfaces van het besturingssysteem. Hierdoor kon de programmeeromgeving niet meer alleen op specifieke hardware draaien, maar op tal van pc's.
Puur op tekst gebaseerde gebruikersinterfaces waren niet langer voldoende voor de opkomende computergraphics . De in 1973 geïntroduceerde Xerox Alto was het eerste computersysteem met een objectgeoriënteerd besturingssysteem [19] en een grafische gebruikersinterface, wat deze computer geschikt maakte voor desktop publishing en een grote stap voorwaarts betekende op het gebied van gebruiksvriendelijkheid. [20]
Mijlpalen
De C64, een thuiscomputer uit de jaren 80

In de jaren tachtig werden thuiscomputers populair. Naast het uitvoeren van nuttige taken, konden deze ook games uitvoeren. De hardware bestond uit een 8-bit processor met maximaal 64 KiB RAM, een toetsenbord en een monitor of RF-uitgang. Een van de meest populaire van deze computers was de Commodore C64 met de microprocessor 6510 (een variant van de 6502 ). Deze computer had een systeemkernel in zijn eigen 8 KiB ROM- module genaamd Kernal met een BIOS ( Basic Input / Output System ), die het scherm van het apparaat, het toetsenbord, de seriële IEC-interface voor diskettestations of printer initialiseerde, en de cassette-interface gedeeltelijk geabstraheerd van een riool concept. Het systeem kon worden bediend en geprogrammeerd via een aparte 8 KiB-ROM- BASIC , die was gebaseerd op de functies van het BIOS. Het besturingssysteem van deze computer kan worden gezien als een goede hardware-abstractie op het niveau van de BASIC-interpreter. Natuurlijk is er geen kernel-, geheugen- of andere hardwarebescherming. Veel programma's, vooral games, negeerden het BIOS en hadden rechtstreeks toegang tot de bijbehorende hardware.
Basisprogramma | Machinetaalprogramma | |
8k ROM BASISPRINT #, VOOR | ||
8k ROM-BIOS (apparaatstuurprogramma) / Kernal / JSR | ||
Hardware (processor(s), geheugen, apparaten) |
Abstractielagen in het besturingssysteem van de thuiscomputer C64
Apple's grafische gebruikersinterface (GUI)
Xerox ontwikkelde het Smalltalk- ontwikkelsysteem in het Palo Alto Research Center ( PARC ) (Xerox ontwikkelde de eerste computers met een grafische gebruikersinterface met ALTO (1973) en Star (1981)). Apple bood Xerox aan om de technologie te kopen; Maar aangezien PARC in de eerste plaats een onderzoekscentrum was, was er geen interesse in sales en marketing. Nadat Apple-topman Steve Jobs Xerox-aandelen in Apple had aangeboden, mocht hij enkele Apple-ontwikkelaars de Xerox-demo's laten zien. Daarna was het de Apple-ontwikkelaars absoluut duidelijk dat de grafische gebruikersinterface tot de toekomst behoorde en begon Apple zijn eigen grafische gebruikersinterface te ontwikkelen.
Veel kenmerken en principes van elke moderne grafische gebruikersinterface voor computers zoals we die nu kennen, zijn originele Apple-ontwikkelingen ( vervolgkeuzemenu's , de bureaubladmetafoor , slepen en neerzetten , dubbelklikken). De bewering dat Apple zijn Xerox GUI illegaal heeft gekopieerd, is een constant probleem; er zijn echter serieuze verschillen tussen een Alto van Xerox en de Lisa / Macintosh .
De opvolger van Mac OS
Mitte der 1990er Jahre steckte das Unternehmen Apple in einer tiefen Krise; es schien kurz vor dem Ruin. Ein dringliches Problem war dabei, dass Apples Betriebssystem Mac OS als veraltet galt, weshalb sich Apple nach Alternativen umzusehen begann. Nach dem Scheitern des wichtigsten Projektes für ein modernes Betriebssystem mit dem Codenamen Copland sah sich Apple gezwungen, Ausschau nach einem für die eigenen Zwecke verwendbaren Nachfolger zu halten. Zuerst wurde vermutet, dass Apple das Unternehmen Be , mit ihrem auch auf Macs lauffähigen Betriebssystem BeOS , übernehmen würde. Die Übernahmeverhandlungen scheiterten jedoch im November 1996, da der frühere Apple-Manager und Chef von Be Jean-Louis Gassée im Falle einer Übernahme 300 Millionen US-Dollar und einen Sitz im Vorstand verlangte. Da Gil Amelio versprochen hatte, bis zur Macworld Expo im Januar 1997 die zukünftige Strategie zu Mac OS zu verkünden, musste schnell eine Alternative gefunden werden. Überraschend übernahm Apple dann noch im Dezember 1996 für 400 Mio. US-Dollar das Unternehmen NeXT des geschassten Apple-Gründers Steve Jobs mitsamt dem Betriebssystem NeXTStep bzw. OPENSTEP , das Apples Grundlage für die nachfolgende neue Betriebssystem-Generation werden sollte. Unter dem Codenamen Rhapsody wurde es weiterentwickelt zu einem UNIX für Heim- und Bürocomputer mit dem Namen „Mac OS X“; von Version 10.8 (2012) bis 10.11 hieß es einfach „OS X“, seit Version 10.12 (2016) „macOS“. Ab Version 10.5 ist es konform mit der Single UNIX Specification .
Das Betriebssystem OPENSTEP war die erste Implementierung der OpenStep -Spezifikationen, die zusammen mit Sun entwickelt wurden. Deren Entwicklung hatte Einfluss auf Java und somit letztlich auf Android .
Disk Operating System (DOS)
Der Ursprung von DOS liegt in CP/M und wurde 1974 von Digital Research eingesetzt. Die Portierung auf den Motorola 68000 , genannt CP/M-68k, selbst kein großer kommerzieller Erfolg, wurde zur Grundlage für TOS , dem Betriebssystem des Atari ST . MS-DOS Version 1.0 erschien 1981 als Nachbildung von CP/M und wurde für IBM-PCs eingesetzt. Es setzt auf das BIOS auf und stellt Dateisystemoperationen zur Verfügung.
Die ersten IBM-PCs waren ganz ähnlich wie der C64 aufgebaut. Auch sie verfügten über ein eingebautes BIOS zur Initialisierung und Abstraktion der Hardware. Sogar ein BASIC-Interpreter war vorhanden. Im Gegensatz zum BIOS wurde auf BASIC jedoch in den kompatiblen Rechnern anderer Unternehmen verzichtet.
Der PC konnte mit seinem Intel-8088 -Prozessor (16-Bit- Register ) bis zu 1 MiB Speicher adressieren, die ersten Modelle waren jedoch nur mit 64 KiB ausgestattet. Diskettenlaufwerke lösten die alten Kassettenrekorder als Speichermedium ab. Sie erlauben vielfaches Schreiben und Lesen einzeln adressierbarer 512-Byte-Blöcke. Die Benutzung wird durch ein Disk Operating System (DOS) vereinfacht, das ein abstraktes Dateikonzept bereitstellt. Blöcke können zu beliebig großen Clustern ( Zuordnungseinheit – kleinste für das Betriebssystem ansprechbare Einheit) zusammengefasst werden. Dateien (logische Informationseinheiten) belegen einen oder mehrere dieser (verketteten) Cluster. Eine Diskette kann viele Dateien enthalten, die über Namen erreichbar sind.
Auf den ersten PCs war kein Speicherschutz realisiert, die Programme konnten daher an DOS vorbei direkt auf BIOS und sogar auf die Hardware zugreifen. Erst spätere PCs wurden mit dem Intel-80286 -Prozessor ausgestattet, der Speicherschutz ermöglichte. MS-DOS stellte auch keine für alle Zwecke ausreichende Abstraktion zur Verfügung. Es ließ sich nur ein Programm gleichzeitig starten, die Speicherverwaltung war eher rudimentär. Ein Teil der Hardware wurde nicht unterstützt und musste von Programmen direkt angesprochen werden, was dazu führte, dass beispielsweise für jedes Spiel die Soundkarte neu konfiguriert werden musste. Die Performance einiger Routinen, speziell zur Textausgabe, war verbesserungswürdig. Viele Programme setzten sich daher über das Betriebssystem hinweg und schrieben z. B. direkt in den Bildschirmspeicher . MS-DOS wurde mit einem Satz von Programmen (sogenannten Werkzeugen) und einem Kommandointerpreter (COMMAND.COM) ausgeliefert.
Anwenderprogramm (COMMAND.COM, WORDSTAR) | ||
MSDOS (Dateisystem) INT | ||
BIOS (Gerätetreiber) INT | ||
Hardware (Prozessor(en), Speicher, Geräte) |
Abstraktionsschichten eines PC unter DOS
Windows
1983 begann das Unternehmen Microsoft mit der Entwicklung einer grafischen Betriebssystem-Erweiterung („Grafik-Aufsatz“) für MS-DOS namens Windows. Das MS-DOS und BIOS-Design der PCs erlaubten keine Weiterentwicklung in Richtung moderner Serverbetriebssysteme. Microsoft begann Anfang der 1990er ein solches Betriebssystem zu entwickeln, das zunächst als Weiterentwicklung von OS/2 geplant war (an dessen Entwicklung Microsoft zwischen 1987 und 1991 beteiligt war): Windows NT 3.1 (Juli 1993). Für den Consumer-Markt brachte Microsoft am 15. August 1995 Windows 95 heraus; es setzt auf MS-DOS auf. Dieser „Consumer-Zweig“, zusammengefasst Windows 9x , wurde mit der Veröffentlichung von Windows Me (August/September 2000) abgeschlossen.
Aufbau von Windows NT: Über die Hardware wurde eine Abstraktionsschicht, der Hardware Abstraction Layer (HAL) gelegt, auf den der Kernel aufsetzte. Verschiedene Gerätetreiber waren als Kernelmodule ausgeführt und liefen wie der Kernel im privilegierten Kernel Mode . Sie stellten Möglichkeiten der E/A-Verwaltung, Dateisystem, Netzwerk, Sicherheitsmechanismen, virtuellen Speicher usw. zur Verfügung. Systemdienste (System Services) ergänzten das Konzept; wie ihre Unix -Pendants, die daemons , waren sie in Form von Prozessen im User-Mode ausgeführt.
OS/2- Programme | Win32-Anwendungen | DOS- Programme | Win16- Programme | POSIX- Programme | User Mode | |||
Andere DLLs | DOS- System | Windows on Windows | ||||||
OS/2- Subsystem | Win32 Subsystem (kernel32.dll, user32.dll, gdi32.dll) | POSIX- Subsystem | ||||||
Systemdienste | Kernel Mode | |||||||
Ein-/Ausgabe-Manager (Dateisystem, Netzwerk) | Objektmanager/Security Resource Manager/Processmanager Local Procedure Call Manager/Virtual Memory Manager Mikrokernel | Window-Manager | ||||||
Gerätetreiber | Hardware-Abstraktions-Schicht (HAL) | Grafiktreiber | ||||||
Hardware (Prozessor(en), Speicher, Geräte) |
Abstraktionsschichten unter Windows NT (etwas vereinfacht)
Über sogenannte Personalities wurden dann die Schnittstellen bestehender Systeme nachgebildet, zunächst für Microsofts eigenes, neues Win32 -System, aber auch für OS/2 (ohne Grafik) und POSIX .1, also einer Norm, die eigentlich Unix-Systeme vereinheitlichen sollte. Personalities liefen wie Anwenderprogramme im unprivilegierten User-Mode . Das DOS-Subsystem war in Form von Prozessen implementiert, die jeweils einen kompletten PC mit MS-DOS als virtuelle Maschine darstellten; darauf konnte mit einer besonderen Version von Windows 3.1, dem Windows-on-Windows , auch Win16 -Programme ausgeführt werden. Windows-on-Windows blendete dazu die Fenster der Win16-Programme in das Win32-Subsystem ein, das die Grafikausgabe verwaltete. Das System erlaubte daher die Ausführung von Programmen sowohl für MS-DOS wie für die älteren Windows-Betriebssysteme, allerdings unter vollkommener Kontrolle des Betriebssystems. Dies galt aber nur für die Implementierung für Intel-80386-Prozessoren und deren Nachfolger.
Programme, die direkt auf die Hardware zugreifen, blieben aber außen vor. Insbesondere viele Spiele konnten daher nicht unter Windows NT ausgeführt werden, zumindest bis zur Vorstellung von WinG , das später in DirectX umbenannt wurde. Ohne die Möglichkeit eines direkten Zugriffs auf die Grafikhardware bzw. -treiber war die Programmierung von leistungsfähigen Actionspielen zunächst auf die älteren Windows-Versionen beschränkt.
Windows NT erschien in den Versionen 3.1, 3.5, 3.51 und 4.0. Windows 2000 stellte eine Weiterentwicklung von Windows NT dar. Auch Windows XP , Windows Server 2003 , Windows Vista , Windows Server 2008 , Windows 7 , Windows Server 2012 , Windows 8 /8.1 und Windows 10 bauen auf der Struktur von Windows NT auf.
Linux (GNU/Linux)
1991 begann Linus Torvalds in Helsinki / Finnland mit der Entwicklung des Linux-Kernels , den er bald danach der Öffentlichkeit zur Verfügung stellte.
Es läuft als portables Betriebssystem auf verschiedenen Rechnerarchitekturen, wurde aber zunächst für PCs mit Intel-80386 -Prozessor entwickelt. Das in diesen Rechnern verwendete BIOS dient nur noch zum Initialisieren der Hardware und zum Starten des Bootloaders , da die Routinen des BIOS für Multitaskingsysteme wie Linux ungeeignet sind. Dies kommt zustande, da insbesondere der Prozessor durch Warten belastet wird anstatt durch eine – in der Hardware durchaus vorhandene – geschickte Unterbrechungsverwaltung (interrupt handling) auf Ereignisse (events) zu reagieren. Linux verwendet daher nach dem Starten des Systems eigene Gerätetreiber.
Es verteilt die Prozessorzeit auf verschiedene Programme (Prozesse). Jeder dieser Prozesse erhält einen eigenen, geschützten Speicherbereich und kann nur über Systemaufrufe auf die Gerätetreiber und das Betriebssystem zugreifen.
Die Prozesse laufen im Benutzermodus (user mode) , während der Kernel im Kernel-Modus (kernel mode) arbeitet. Die Privilegien im Benutzermodus sind sehr eingeschränkt. Ein direkter Zugriff wird nur sehr selten und unter genau kontrollierten Bedingungen gestattet. Dies hat den Vorteil, dass kein Programm z. B. durch einen Fehler das System zum Absturz bringen kann.
Linux stellt wie sein Vorbild Unix eine vollständige Abstraktion und Virtualisierung für nahezu alle Betriebsmittel bereit (z. B. virtueller Speicher , Illusion eines eigenen Prozessors).
Anwenderprogramme (zB Textverarbeitung, Tabellenkalkulation oder Browser) | User Mode | |||
Complex Libraries ( GLib , GTK+ , Qt , SDL , EFL ) | ||||
Simple Libraries sin, opendbm | ||||
C-Standard-Bibliothek : glibc open, exec, sbrk, socket, fopen, calloc | ||||
Systemaufrufe TRAP, CALL, BRK, INT (je nach Hardware) | Kernel Mode | |||
Kernel (Gerätetreiber, Prozesse, Netzwerk, Dateisystem) | ||||
Hardware (Prozessor(en), Speicher, Geräte) |
Fast vollständige Abstraktion unter Linux
Verbreitung
Das Unternehmen StatCounter analysiert die Verbreitung von Endanwender-Betriebssystemen anhand von Zugriffsstatistiken diverser Websites. Sehr viele Jahre war Windows an der Spitze, bis es laut StatCounter 2017 von Android überholt wurde. [21]
Die laut StatCounter am weitesten verbreiteten Endanwender-Betriebssysteme sind: [22]
2017 | 2018 | |||
---|---|---|---|---|
1. | Android | 31,76 % | ![]() | 38,97 % |
2. | Windows | 43,82 % | ![]() | 37,07 % |
3. | iOS | 11,71 % | ![]() | 13,18 % |
4. | macOS | 5,09 % | ![]() | 5,24 % |
5. | Linux | 0,94 % | ![]() | 0,76 % |
nicht identifizierte B. | 3,64 % | ![]() | 2,72 % | |
andere Betriebssysteme | 3,03 % | ![]() | 2,06 % |
Siehe auch
Literatur
- Albrecht Achilles: Betriebssysteme. Eine kompakte Einführung mit Linux. Springer: Berlin, Heidelberg, 2006. ISBN 978-3-540-23805-8 .
- Uwe Baumgarten, Hans-Jürgen Siegert: Betriebssysteme. Eine Einführung. 6., überarbeitete, aktualisierte und erweiterte Auflage, Oldenbourg Verlag: München, Wien, 2007.
- Erich Ehses, Lutz Köhler, Petra Riemer, Horst Stenzel, Frank Victor: Systemprogrammierung in UNIX / Linux. Grundlegende Betriebssystemkonzepte und praxisorientierte Anwendungen. Vieweg+Teubner: Wiesbaden, 2012. ISBN 978-3-8348-1418-0 .
- Eduard Glatz: Betriebssysteme. Grundlagen, Konzepte, Systemprogrammierung. 1. Auflage. dpunkt: Heidelberg, 2006. ISBN 3-89864-355-7 .
- Sibsankar Haldar, Alex A. Aravind: Operating Systems. Delhi (ua): Pearson Education, 2009. ISBN 978-81-317-1548-2 .
- Helmut Herold, Bruno Lurz, Jürgen Wohlrab, Matthias Hopf: Grundlagen der Informatik. Kapitel 9: Betriebssysteme. 3., aktualisierte Auflage, Pearson: Hellbergmoos, 2017, S. 433–462. ISBN 978-3-86894-316-0 .
- Peter Mandl: Grundkurs Betriebssysteme. Architekturen, Betriebsmittelverwaltung, Synchronisation, Prozesskommunikation, Virtualisierung. 4. Auflage, Springer Vieweg: Wiesbaden, 2014. ISBN 978-3-658-06217-0 .
- Abraham Silberschatz, Peter Baer Galvin, Greg Gagne: Operating System Concepts. Ninth Edition, John Wiley & Sons: Hoboken, 2013. ISBN 978-1-118-06333-0 .
- Andrew S. Tanenbaum , Herbert Bos: Moderne Betriebssysteme. 4., aktualisierte Auflage. Pearson: Hallbergmoos, 2016. ISBN 978-3-86894-270-5 .
- Ältere zitierte Ausgabe: Andrew S. Tanenbaum: Moderne Betriebssysteme. 3., aktualisierte Auflage, Pearson Studium, 2009.
- Englische Originalausgabe: Modern Operating Systems. 4th Edition, Pearson, 2016.
Weblinks
- Linkkatalog zum Thema Betriebssysteme bei curlie.org (ehemals DMOZ )
- Informationen zu allen Betriebssystemen
- Lowlevel – Wiki und Forum zur Betriebssystementwicklung (Online)
Einzelnachweise
- ↑ Berechnung nach https://de.statista.com - abgerufen am 2. Februar 2020
- ↑ Andrew S. Tanenbaum: Moderne Betriebssysteme . Pearson Studium, 3., aktualisierte Auflage , ISBN 978-3-8273-7342-7
- ↑ Andrew S. Tanenbaum: Moderne Betriebssysteme . 3., aktualisierte Aufl., Pearson, 2009, S. 33.
- ↑ a b Helmut Herold, Bruno Lurz, Jürgen Wohlrab, Matthias Hopf: Grundlagen der Informatik. 3., aktualisierte Auflage, Pearson, 2017, S. 438.
- ↑ Andrew S. Tanenbaum: Moderne Betriebssysteme . 3., aktualisierte Aufl., Pearson, 2009, S. 34.
- ↑ Andrew S. Tanenbaum: Moderne Betriebssysteme . 3., aktualisierte Aufl., Pearson, 2009, S. 35–36.
- ↑ Peter Mandl: Grundkurs Betriebssysteme. 4. Aufl., Springer, 2014, S. 2.
- ↑ Zitiert nach Uwe Baumgarten, Hans-Jürgen Siegert: Betriebssysteme. Eine Einführung. 6., überarbeitete, aktualisierte und erweiterte Auflage, Oldenbourg Verlag: München, Wien, 2007, S. 3.
- ↑ Tanenbaum: Moderne Betriebssysteme . 3. Aufl. 2009, S. 79.
- ↑ Anthony Ralston, Edwin D. Reilly: Encyclopaedia of Computer Science. New York: Van Nostrand Reinhold, 3. Auflage 1993, S. 1290. Englisches Originalzitat: „Besides managing the hardware resources […], modern operating systems also provide numerous services, such as inter-process communication, file and directory systems, data transfer over networks, and a command language“.
- ↑ Volker Claus, Andreas Schwill: Duden Informatik AZ. Fachlexikon für Studium, Ausbildung und Beruf. Mannheim: Bibliographisches Institut & FA Brockhaus, 4. Aufl., 2006, ISBN 3-411-05234-1 .
- ↑ Andrew S. Tanenbaum: Moderne Betriebssysteme, Pearson Studium,2002, ISBN 3-8273-7019-1 , Seite 18
- ↑ Andrew S. Tanenbaum: Moderne Betriebssysteme, Pearson Studium,2002, ISBN 3-8273-7019-1 , Seite 18
- ↑ SOS Reference Manual, 1959.
- ↑ Jack Harper, IBM 7090/94 IBSYS Operating System, 2001.
- ↑ Fernando J. Corbató, Marjorie Merwin Daggett, Robert C. Daley: An Experimental Time-Sharing System, 1962.
- ↑ E. Jessen: Origin of the Virtual Memory Concept. IEEE Annals of the History of Computing. Band 26. 4/2004, S. 71 ff.
- ↑ Computer Classics, Jörg und Kerstin Allner, Data Becker Verlag, ISBN 3-8158-2339-0 , S. 27
- ↑ blinkenlights.com , abgerufen am 23. Oktober 2017
- ↑ Zenon W. Pylyshyn, Liam Bannon: Perspectives on the Computer Revolution . Intellect Books, January 1989, ISBN 978-0-89391-369-4 , S. 262, 263 etc. Vergleich Alto und Star mit detaillierten Spezifikationen.
- ↑ Android verdrängt Windows vom ersten Platz der Marktanteile. Pro-Linux , 4. April 2017, abgerufen am 4. April 2017 .
- ↑ Operating System Market Share Worldwide. StatCounter, 5. September 2018, abgerufen am 5. September 2018 .