[{"data":1,"prerenderedAt":1170},["ShallowReactive",2],{"content-\u002Ffaecher\u002Fbsa\u002F3-4-zsmf-sa1":3},{"id":4,"title":5,"body":6,"class":1153,"description":17,"extension":1154,"meta":1155,"navigation":1156,"path":1158,"pdfDownload":1159,"scope":1160,"scopeName":1161,"seo":1162,"stem":1163,"subject":1164,"subjectName":1165,"type":1166,"typeName":1167,"year":1168,"__hash__":1169},"faecher\u002Ffaecher\u002Fbsa\u002F3-4-zsmf-sa1.md","Zusammenfassung – Schulaufgabe 1",{"type":7,"value":8,"toc":1115},"minimark",[9,14,18,35,38,52,57,109,113,116,130,133,147,151,154,174,177,191,194,208,212,216,219,226,231,278,282,285,317,321,324,374,378,395,399,403,426,429,437,441,446,450,476,480,485,511,515,518,521,541,545,556,560,603,607,639,643,736,744,748,751,756,760,774,778,803,807,850,854,859,879,883,921,925,947,951,988,993,998,1012,1017,1021,1072,1077,1081,1085,1096,1100,1103,1107,1110],[10,11,13],"h1",{"id":12},"betriebssysteme","Betriebssysteme",[15,16,17],"p",{},"Im engeren Sinne nur der Kernel",[19,20,21,29],"ul",{},[22,23,24,28],"li",{},[25,26,27],"strong",{},"Kernel",": sehr klein, enthält Grundfunktionen",[22,30,31,34],{},[25,32,33],{},"Pakete",": Rest der Betriebssysteminstallation",[15,36,37],{},"Beispiel: Bestandteile Linux",[19,39,40,46],{},[22,41,42,45],{},[25,43,44],{},"Linux-Kernel",": hardwarenahe Software für Scheduling, Multitasking, Gerätetreiber, Speicherverwaltung etc.",[22,47,48,51],{},[25,49,50],{},"GNU-Paketen",": Shell, Compiler, Bibliotheken usw.",[53,54,56],"h2",{"id":55},"aufgaben","Aufgaben",[19,58,59,79,90,98],{},[22,60,61,62],{},"Prozessverwaltung\n",[19,63,64,70,73,76],{},[22,65,66,69],{},[25,67,68],{},"Prozess",": ausführbares Programm – besteht aus Code, Daten und Ressourcen",[22,71,72],{},"Überwacht Prozesse",[22,74,75],{},"Erzeugt neue Prozesse",[22,77,78],{},"Regelt Kommunikation unter den Prozessen",[22,80,81,82],{},"Speicherverwaltung\n",[19,83,84,87],{},[22,85,86],{},"Verwaltung des Hauptspeichers",[22,88,89],{},"Speicherzuteilung zu Prozessen",[22,91,92,93],{},"Verwaltung des Dateisystems\n",[19,94,95],{},[22,96,97],{},"Erzeugung eines Namensraums mit dem auf das Dateisystem zugegriffen werden kann",[22,99,100,101],{},"Verwaltung von Geräten\n",[19,102,103,106],{},[22,104,105],{},"Zugriff auf Ein- und Ausgabegeräte mittels überwachter Aufrufe",[22,107,108],{},"Effiziente Aufteilung der E\u002FA Geräte zu Prozessen",[53,110,112],{"id":111},"ringe-der-cpu","Ringe der CPU",[15,114,115],{},"Ring: Sicherheitsstufe eines Prozesses. Bestimmt nutzbaren Befehlssatz und Speicherbereich",[19,117,118,124],{},[22,119,120,123],{},[25,121,122],{},"Kernel-Mode",": Ring 0",[22,125,126,129],{},[25,127,128],{},"User-Mode",": Ring 1-3",[15,131,132],{},"Ringe:",[19,134,135,138,141,144],{},[22,136,137],{},"0: meisten Berechtigungen, direkte Hardwarezugriffe & Zugriff auf alle RAM-Bereiche",[22,139,140],{},"1: wird nicht verwendet",[22,142,143],{},"2: wird nicht verwendet",[22,145,146],{},"3: Anwenderprogramme: eingeschränkte Rechte (z.B. keine Interrupts – Programmunterbrechungen – erlaubt)",[53,148,150],{"id":149},"arten","Arten",[15,152,153],{},"Allgemein",[19,155,156,162,168],{},[22,157,158,161],{},[25,159,160],{},"Batch-System",": z.B. DOS",[22,163,164,167],{},[25,165,166],{},"Dialogsystem",": z.B. Windows, Linux, Unix",[22,169,170,173],{},[25,171,172],{},"Echtzeitsystem",": für Industrieanwendungen",[15,175,176],{},"Anzahl der parallel bedienbaren Benutzer",[19,178,179,185],{},[22,180,181,184],{},[25,182,183],{},"Singleuser-System",": nur ein Nutzer",[22,186,187,190],{},[25,188,189],{},"Multiuser-System",": mehrere Nutzer",[15,192,193],{},"Anzahl der parallel bearbeitbaren Aufträge",[19,195,196,202],{},[22,197,198,201],{},[25,199,200],{},"Ein-Prozess-Betriebssysteme"," (Single Tasking): DOS",[22,203,204,207],{},[25,205,206],{},"Mehr-Prozess-Betriebssysteme"," (Multi-Tasking): Linux, Windows",[10,209,211],{"id":210},"rechnerarchitektur","Rechnerarchitektur",[53,213,215],{"id":214},"von-neumann","Von-Neumann",[15,217,218],{},"Code und Daten des Programms liegen im gleichen Speicherbereich",[15,220,221],{},[222,223],"img",{"alt":224,"src":225},"","\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa1_img_1.png",[227,228,230],"h3",{"id":229},"komponenten","Komponenten",[19,232,233,239,245,266,272],{},[22,234,235,238],{},[25,236,237],{},"Rechenwerk (ALU):"," Ausführung von Befehlen (Addition, logische Operationen)",[22,240,241,244],{},[25,242,243],{},"Steuerwerk",": Koordiniert die Abarbeitung des Programms (Laden von Befehlen, Operanden holen)",[22,246,247,250,251],{},[25,248,249],{},"Bussystem",": Kommunikation zwischen den einzelnen Komponenten\n",[19,252,253,260],{},[22,254,255,259],{},[256,257,258],"em",{},"Adressbus",": Auf welche Adresse soll zugegriffen werden?",[22,261,262,265],{},[256,263,264],{},"Datenbus",": Liefert Daten",[22,267,268,271],{},[25,269,270],{},"Speicher",": Arbeitsspeicher mit Daten und Code",[22,273,274,277],{},[25,275,276],{},"Ein-\u002FAusgabewerk",": Schnittstellen zum Anwender oder anderen Systemen",[227,279,281],{"id":280},"zyklus","Zyklus",[15,283,284],{},"5 Phasen:",[19,286,287,293,299,305,311],{},[22,288,289,292],{},[25,290,291],{},"Fetch",": Nächsten Befehl holen",[22,294,295,298],{},[25,296,297],{},"Decode",": Befehl dekodieren (Mit Mikrocode – Befehlssatz der CPU)",[22,300,301,304],{},[25,302,303],{},"Fetch Operands",": Benötigte Operanden holen",[22,306,307,310],{},[25,308,309],{},"Execute",": Befehl ausführen",[22,312,313,316],{},[25,314,315],{},"Write back",": Ergebnis zurückschreiben",[53,318,320],{"id":319},"simplifizierte-rechnerarchitektur","Simplifizierte Rechnerarchitektur",[227,322,230],{"id":323},"komponenten-1",[19,325,326,332,338,344,350,356,362,368],{},[22,327,328,331],{},[25,329,330],{},"ALU",": Führt Rechenoperationen aus",[22,333,334,337],{},[25,335,336],{},"Mehrzweck- und Gleitkommaregister",": Spezielle Speicher mit denen die CPU rechnen kann",[22,339,340,343],{},[25,341,342],{},"Befehlsregister",": Spezielles Register, in dem der Maschinencode des aktuell ausgeführten Befehls steht",[22,345,346,349],{},[25,347,348],{},"Programmstatuswort\u002FStatusregister",": Enthält Flags die ALU setzt (Überlauf, negatives Ergebnis etc.)",[22,351,352,355],{},[25,353,354],{},"Stackpointer",": Spezielles Register, das auf die Adresse des obersten Elements des Programmstacks zeigt",[22,357,358,361],{},[25,359,360],{},"Befehlszähler",": Register, das auf die Adresse des nächsten Befehls zeigt, der geholt werden soll",[22,363,364,367],{},[25,365,366],{},"Memory Management Unit (MMU):"," Verwaltet Zugriff auf den Arbeitsspeicher",[22,369,370,373],{},[25,371,372],{},"L1\u002FL2\u002FL3 Cache:"," Sehr schneller Pufferspeicher zwischen RAM und CPU – Speichert häufig benutze Daten",[53,375,377],{"id":376},"maschinensprache","Maschinensprache",[19,379,380,383,389],{},[22,381,382],{},"Programmiersprache, die aus Elementen besteht, die der Prozessor direkt ausführen kann",[22,384,385,388],{},[25,386,387],{},"Befehlssatz",": Menge der Befehle eines Prozessors",[22,390,391,394],{},[25,392,393],{},"Mnenomics",": Für bessere Lesbarkeit von Maschinencode",[53,396,398],{"id":397},"betriebssystemaufrufe","Betriebssystemaufrufe",[227,400,402],{"id":401},"ablauf","Ablauf",[19,404,405,408,411,414,417,420,423],{},[22,406,407],{},"Die zugehörige Interrupt-Service-Routine wird ausgeführt (dadurch wird Betriebssystem-Code ausgeführt)",[22,409,410],{},"Es wird in den Kerne-Mode geschaltet",[22,412,413],{},"Notwendige Überprüfungen werden durchgeführt (z.B.: dürfen nicht quasi-gleichzeitig mehrere Prozesse in eine Datei schreiben)",[22,415,416],{},"Der Datenzugriff wird entweder erlaubt und durchgeführt oder verweigert",[22,418,419],{},"Es wird in den User-Mode zurückgeschaltet",[22,421,422],{},"Der zuvor angehaltene Prozess wird wieder gestartet",[22,424,425],{},"Dabei wird ihm ein Rückgabewert mit dem Ergebnis des Systemaufrufs zur Verfügung gestellt",[15,427,428],{},"Interrupt: Signal, das von Gerät oder Thread an das OS geschickt wird, um rauszufinden, was als Nächstes zu tun ist:",[19,430,431,434],{},[22,432,433],{},"Software: Programm fordert Betriebsdienste an oder Gerätetreiber mit System interagieren wollen",[22,435,436],{},"Hardware: Hardware benötigt OS (bewegen der Maus, drücken einer Taste)",[227,438,440],{"id":439},"aufruf-unter-linux","Aufruf unter Linux",[15,442,443],{},[222,444],{"alt":224,"src":445},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa1_img_2.png",[10,447,449],{"id":448},"prozesse","Prozesse",[19,451,452,458,461,467,473],{},[22,453,454,457],{},[25,455,456],{},"Prozess\u002FTask",": Ablaufumgebung für ein Programm auf einem Rechnersystem",[22,459,460],{},"Prozess ist Programm zur Laufzeit",[22,462,463,466],{},[256,464,465],{},"Multitasking",": Mehrere Prozesse konkurrieren um Betriebsmittel wie CPU und Speicher",[22,468,469,472],{},[256,470,471],{},"Single-Task",": Immer nur ein Prozess",[22,474,475],{},"Zuteilung\u002FScheduling: Wird vom Betriebssystem übernommen",[53,477,479],{"id":478},"prozesslebenszyklus","Prozesslebenszyklus",[15,481,482],{},[222,483],{"alt":224,"src":484},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa1_img_3.png",[19,486,487,493,499,505],{},[22,488,489,492],{},[25,490,491],{},"Bereit",": Prozess wird erzeugt",[22,494,495,498],{},[25,496,497],{},"Aktiv",": Prozess arbeitet gerade und ist einer CPU zugeteilt",[22,500,501,504],{},[25,502,503],{},"Blockiert",": Prozess wartet auf Ressource\u002FBetriebsmittel während der Ausführung",[22,506,507,510],{},[25,508,509],{},"Nicht-existent",": Nicht erzeugt oder bereits beendet",[53,512,514],{"id":513},"prozesskontext","Prozesskontext",[15,516,517],{},"Informationen zu einem Prozess",[15,519,520],{},"Drei Bereiche des Prozesskontexts:",[19,522,523,529,535],{},[22,524,525,528],{},[25,526,527],{},"Benutzerkontext",": Daten des Prozesses",[22,530,531,534],{},[25,532,533],{},"Hardwarekontext",": Inhalte der CPU-Register, Stackpointer, Befehlszähler, Programmstatuswort",[22,536,537,540],{},[25,538,539],{},"Systemkontext",": Informationen aus Sicht des Betriebssystems (Prozessnummer, geöffnete Dateien…)",[227,542,544],{"id":543},"kontextwechsel","Kontextwechsel",[19,546,547,550,553],{},[22,548,549],{},"CPU wird dem aktuell laufenden Prozess entzogen und einem anderen Prozess zugeteilt",[22,551,552],{},"Prozesskontext des alten Prozesses muss gesichert werden",[22,554,555],{},"Prozesskontext des neuen Prozesses muss geladen werden",[53,557,559],{"id":558},"prozesstabelle-process-control-block","Prozesstabelle & Process Control Block",[19,561,562,568,600],{},[22,563,564,567],{},[25,565,566],{},"Prozesstabelle",": Alle Prozesse eines Betriebssystems",[22,569,570,573,574],{},[25,571,572],{},"Process Control Block",": Datenstruktur in der Prozesstabelle, die wichtige Informationen eines Prozesses speichert\n",[19,575,576,579,582,585,588,591,594,597],{},[22,577,578],{},"Programmzähler",[22,580,581],{},"Prozesszustand",[22,583,584],{},"Priorität",[22,586,587],{},"Verbrauchte Prozessorzeit",[22,589,590],{},"Eigene Prozessnummer",[22,592,593],{},"Prozessnummer des erzeugenden Prozesses (Elternprozess)",[22,595,596],{},"Zugeordnete Betriebsmittel (geöffnete Dateien)",[22,598,599],{},"Registerinhalte, Stackpointer, Programmstatuswort",[22,601,602],{},"Beim Kontextwechsel werden Daten aus dem alten Prozess in einen PCB gespeichert und aus dem PCB des laufenden Prozesses geladen.",[53,604,606],{"id":605},"threads-leichtgewichtprozesse","Threads (Leichtgewichtprozesse)",[19,608,609,631],{},[22,610,611,612],{},"Kontextwechsel bei einem Prozess ist zeitaufwändig\n",[19,613,614,617],{},[22,615,616],{},"Innerhalb eines Prozesses kann es nebenläufige Aufgaben geben, die sich Betriebsmittel teilen, sog. Threads",[22,618,619,620],{},"Wechsel zwischen Threads ist schneller als zwischen Prozessen unter anderem aufgrund von geteilten Betriebsmitteln zwischen Threads:\n",[19,621,622,625,628],{},[22,623,624],{},"Codesegment",[22,626,627],{},"Datensegment",[22,629,630],{},"Dateideskriptoren (geöffnete Dateien)",[22,632,633,634],{},"Beispiel Word:\n",[19,635,636],{},[22,637,638],{},"Je ein Thread für Eingabeverarbeitung, Darstellung, Druckaufträge",[227,640,642],{"id":641},"kernel-level-threads-heavy-weight-threads-user-level-threads","Kernel-Level-Threads (Heavy-Weight-Threads) & User-Level-Threads",[644,645,646,668],"table",{},[647,648,649],"thead",{},[650,651,652,658,663],"tr",{},[653,654,655],"th",{},[25,656,657],{},"Art",[653,659,660],{},[25,661,662],{},"Kernel Level Threads",[653,664,665],{},[25,666,667],{},"User Level Threads",[669,670,671,685,698,711,723],"tbody",{},[650,672,673,679,682],{},[674,675,676],"td",{},[25,677,678],{},"Verwaltung",[674,680,681],{},"Werden durch das Betriebssystem verwaltet:   - Erzeugen, Beenden - Scheduling",[674,683,684],{},"Betriebssystem kennt die Threads nicht. Werden durch Threadbibliothek verwaltet:   - Erzeugen, Beenden - Scheduling",[650,686,687,692,695],{},[674,688,689],{},[25,690,691],{},"Basisinfo",[674,693,694],{},"- Aktuelle Werte eines Threads werden in einem Thread Control Block (TCB) gespeichert - Äquivalent zu PCB",[674,696,697],{},"- Threadbibliothek wird durch den Prozess eingebunden - Threadbibliothek teilt CPU auf Threads auf",[650,699,700,705,708],{},[674,701,702],{},[25,703,704],{},"Verhalten",[674,706,707],{},"Warten auf ein Signal blockiert andere Threads nicht",[674,709,710],{},"Warten auf ein Signal blockiert andere Threads",[650,712,713,717,720],{},[674,714,715],{},[25,716,544],{},[674,718,719],{},"Fast wie bei Prozessen",[674,721,722],{},"Sehr einfach",[650,724,725,730,733],{},[674,726,727],{},[25,728,729],{},"Beispiel",[674,731,732],{},"Windows",[674,734,735],{},"Java-Threads",[15,737,738,741],{},[222,739],{"alt":224,"src":740},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa1_img_4.png",[222,742],{"alt":224,"src":743},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa1_img_5.png",[53,745,747],{"id":746},"cpu-scheduling","CPU-Scheduling",[15,749,750],{},"Nebenläufige Prozesse müssen sich die CPU teilen",[19,752,753],{},[22,754,755],{},"Zuteilung der CPU wird durch das CPU-Scheduling geregelt",[227,757,759],{"id":758},"arten-des-cpu-scheduling","Arten des CPU-Scheduling",[19,761,762,768],{},[22,763,764,767],{},[25,765,766],{},"Non-preemptiv"," (nicht verdrängend): Prozess wird nicht unterbrochen, bis er selbst die CPU frei gibt",[22,769,770,773],{},[25,771,772],{},"Preemptiv"," (verdrängend): Einem Prozess kann die CPU durch das Betriebssystem entzogen werden",[227,775,777],{"id":776},"bestandteile-des-cpu-scheduling","Bestandteile des CPU-Scheduling",[19,779,780,786,797],{},[22,781,782,785],{},[25,783,784],{},"Prozessmanager",": Verwaltet Prozesse",[22,787,788,791,792],{},[25,789,790],{},"Scheduler",": Teil des Prozessmanagers – regelt Planung der CPU-Zuteilung\n",[19,793,794],{},[22,795,796],{},"Bereite Prozesse stehen in der „Ready-Queue“. Scheduler legt die Reihenfolge fest",[22,798,799,802],{},[25,800,801],{},"Dispatcher",": Führt Prozesswechsel aus",[227,804,806],{"id":805},"verschiedene-schedulingziele","Verschiedene Schedulingziele",[19,808,809,815,821,827,832,838,844],{},[22,810,811,814],{},[25,812,813],{},"Fairness",": Garantierte Mindestzuteilung",[22,816,817,820],{},[25,818,819],{},"Effizienz",": Möglichst hohe CPU-Auslastung",[22,822,823,826],{},[25,824,825],{},"Minimale Antwortzeit",": Reaktionszeit auf ein Ereignis soll minimiert werden",[22,828,829],{},[25,830,831],{},"Durchschnittliche Wartezeit",[22,833,834,837],{},[25,835,836],{},"Durchsatz",": Möglichst viele Prozesse bearbeiten",[22,839,840,843],{},[25,841,842],{},"Durchlaufzeit",": Mittlere Zeit, bis ein Prozess abgearbeitet ist, soll möglichst gering sein",[22,845,846,849],{},[25,847,848],{},"Kalkulierbarkeit",": Zeit, bis zu der ein Prozess abgearbeitet ist, ist berechenbar",[227,851,853],{"id":852},"arten-des-scheduling","Arten des Scheduling",[15,855,856],{},[222,857],{"alt":224,"src":858},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa1_img_6.png",[19,860,861,867,873],{},[22,862,863,866],{},[25,864,865],{},"Kurzfristig (Short-Term)",": Regelt, welcher Prozess aus der Warteschlange als nächstes die CPU bekommt",[22,868,869,872],{},[25,870,871],{},"Mittelfristig (Medium-Term)",": Kann Prozesse aus dem Hauptspeicher auf die Festplatte auslagern, wenn der Prozess lange nicht im Zustand „Bereit“ war",[22,874,875,878],{},[25,876,877],{},"Langfristig (Long-Term):"," Regelt, welche Prozesse überhaupt in die Warteschlange dürfen. Bei Überlastung des Systems können Prozesse abgewiesen werden",[227,880,882],{"id":881},"strategien","Strategien",[19,884,885,891,897,903,909,915],{},[22,886,887,890],{},[25,888,889],{},"First Come First Serve:"," Abarbeitung nach Ankunftszeit",[22,892,893,896],{},[25,894,895],{},"Shortest Job First",": Kürzeste Bearbeitungszeit zuerst",[22,898,899,902],{},[25,900,901],{},"Priority Scheduling",": Höchste Priorität zuerst",[22,904,905,908],{},[25,906,907],{},"Shortest Remaining Time First",": Kürzeste Restbearbeitungszeit zuerst – Prozess mit kürzerer Restbearbeitungszeit als laufender Prozess kommt an -> laufender Prozess wird unterbrochen",[22,910,911,914],{},[25,912,913],{},"Round Robin",": Nach bestimmtem Zeitabschnitt wird der Prozess gewechselt",[22,916,917,920],{},[25,918,919],{},"Dynamic Priority Round Robin",": Statische Priorität zu Prozessbeginn, kann sich aber zur Laufzeit ändern",[53,922,924],{"id":923},"prozesssynchronisation","Prozesssynchronisation",[19,926,927,930,933],{},[22,928,929],{},"Auf Mehr-Programm-Betriebssystemen werden Prozesse oder Threads quasi-parallel ausgeführt (Nebenläufigkeit)",[22,931,932],{},"Durch präemptives (verdrängendes) Scheduling kann einem Prozess der CPU entzogen werden, wenn ein anderer Prozess aktiviert werden muss",[22,934,935,936],{},"Prozess kann nicht wissen wann er unterbrochen wird und es nur teilweise beeinflussen\n",[19,937,938,941],{},[22,939,940],{},"Bearbeitet ein Prozess ein Betriebsmittel, das mit anderen geteilt wird, muss es in einem konsistenten Zustand hinterlassen werden",[22,942,943,946],{},[25,944,945],{},"Atomare Aktionen",": Codebereiche, die an einem Stück bearbeitet werden müssen um Betriebsmittel konsistent zu hinterlassen",[227,948,950],{"id":949},"lost-update-problem","Lost-Update-Problem",[19,952,953,956,976,979,982],{},[22,954,955],{},"Zwei Prozesse wollen auf dieselbe Variable zugreifen",[22,957,958,959],{},"Prozess A erhöht die Variable um 1, Prozess B um 5\n",[19,960,961],{},[22,962,963,964],{},"Aktion „Erhöhen um x“ auf Maschinenbefehlsebene:\n",[965,966,967,970,973],"ol",{},[22,968,969],{},"Counter lesen",[22,971,972],{},"Counter um x erhöhen",[22,974,975],{},"Counter schreiben",[22,977,978],{},"Wird Prozess A zwischen 1. Und 2. Von Prozess B unterbrochen, so wird das Ergebnis von Prozess B überschrieben, sobald Prozess A wieder CPU-Zeit hat, da Prozess A noch mit dem Variablenwert vor der Ausführung von Prozess B arbeitet.",[22,980,981],{},"Das Ergebnis der beiden Prozesse hängt von ihrer zeitlichen Reihenfolge ab",[22,983,984,987],{},[25,985,986],{},"Race Condition",": Ergebnis zweier Prozesse mit dem gleichen Betriebsmittel, das von der zeitlichen Reihenfolge abhängt",[15,989,990],{},[222,991],{"alt":224,"src":992},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa1_img_7.png",[994,995,997],"h4",{"id":996},"lösung-wechselseitiger-ausschluss","Lösung: wechselseitiger Ausschluss",[19,999,1000,1006],{},[22,1001,1002,1005],{},[25,1003,1004],{},"Kritischer Abschnitt",": Programmteil, der eine atomare Aktion beinhält",[22,1007,1008,1011],{},[25,1009,1010],{},"Wechselseitiger Ausschluss",": Sorgt dafür, dass sich in einem kritischen Abschnitt immer nur ein Prozess befindet (z.B. mit Hilfe einer Semaphore)",[15,1013,1014],{},[222,1015],{"alt":224,"src":1016},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa1_img_8.png",[994,1018,1020],{"id":1019},"praktische-implementierung-binäre-semaphoren","Praktische Implementierung: (binäre) Semaphoren",[19,1022,1023,1034,1053,1069],{},[22,1024,1025,1028,1029],{},[25,1026,1027],{},"Semaphorenzähler",": Bestimmt wie viele Prozesse in einem kritischen Abschnitt sein dürfen\n",[19,1030,1031],{},[22,1032,1033],{},"Binäre Semaphore: Maximal ein Prozess in einem kritischen Abschnitt",[22,1035,1036,1037],{},"Eintritt in kritischen Abschnitt:\n",[19,1038,1039],{},[22,1040,1041,1042],{},"Funktion P() wird aufgerufen\n",[19,1043,1044,1047,1050],{},[22,1045,1046],{},"Sperrt kritischen Bereich",[22,1048,1049],{},"Reduziert Semaphorenzähler um 1, sofern er größer als 0 ist",[22,1051,1052],{},"Semaphorenzähler ist 0: Eintritt in kritischen Bereich wird verwehrt – Prozess verliert CPU",[22,1054,1055,1056],{},"Verlassen eines kritischen Abschnitts:\n",[19,1057,1058],{},[22,1059,1060,1061],{},"Funktion V() wird aufgerufen\n",[19,1062,1063,1066],{},[22,1064,1065],{},"Gibt kritischen Bereich frei",[22,1067,1068],{},"Semaphorenzähler wird um 1 erhöht",[22,1070,1071],{},"Jeder kritische Abschnitt\u002Fjedes Betriebsmittel hat eine zugeordnete Semaphore",[15,1073,1074],{},[222,1075],{"alt":224,"src":1076},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa1_img_9.png",[227,1078,1080],{"id":1079},"probleme-mit-nebenläufigen-prozessen","Probleme mit nebenläufigen Prozessen",[994,1082,1084],{"id":1083},"blockieren","Blockieren",[19,1086,1087,1090,1093],{},[22,1088,1089],{},"Prozess 1 belegt ein Betriebsmittel",[22,1091,1092],{},"Prozess 2 benötigt das gleiche Betriebsmittel",[22,1094,1095],{},"Prozess 2 ist blockiert",[994,1097,1099],{"id":1098},"verhungern","Verhungern",[15,1101,1102],{},"Ein Prozess erhält ein Betriebsmittel nie, da immer andere Prozesse das Betriebsmittel belegen",[994,1104,1106],{"id":1105},"deadlock","Deadlock",[15,1108,1109],{},"Mehrere Prozesse versuchen auf Betriebsmittel zuzugreifen, die von jeweils einem der anderen Prozesse blockiert sind.",[15,1111,1112],{},[222,1113],{"alt":224,"src":1114},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa1_img_10.png",{"title":224,"searchDepth":1116,"depth":1116,"links":1117},2,[1118,1119,1120,1121,1126,1129,1130,1134,1135,1138,1139,1142,1149],{"id":55,"depth":1116,"text":56},{"id":111,"depth":1116,"text":112},{"id":149,"depth":1116,"text":150},{"id":214,"depth":1116,"text":215,"children":1122},[1123,1125],{"id":229,"depth":1124,"text":230},3,{"id":280,"depth":1124,"text":281},{"id":319,"depth":1116,"text":320,"children":1127},[1128],{"id":323,"depth":1124,"text":230},{"id":376,"depth":1116,"text":377},{"id":397,"depth":1116,"text":398,"children":1131},[1132,1133],{"id":401,"depth":1124,"text":402},{"id":439,"depth":1124,"text":440},{"id":478,"depth":1116,"text":479},{"id":513,"depth":1116,"text":514,"children":1136},[1137],{"id":543,"depth":1124,"text":544},{"id":558,"depth":1116,"text":559},{"id":605,"depth":1116,"text":606,"children":1140},[1141],{"id":641,"depth":1124,"text":642},{"id":746,"depth":1116,"text":747,"children":1143},[1144,1145,1146,1147,1148],{"id":758,"depth":1124,"text":759},{"id":776,"depth":1124,"text":777},{"id":805,"depth":1124,"text":806},{"id":852,"depth":1124,"text":853},{"id":881,"depth":1124,"text":882},{"id":923,"depth":1116,"text":924,"children":1150},[1151,1152],{"id":949,"depth":1124,"text":950},{"id":1079,"depth":1124,"text":1080},"3-4","md",{},{"title":1157},"Zusammenfassung – Schulaufgabe 1 (2023\u002F2024)","\u002Ffaecher\u002Fbsa\u002F3-4-zsmf-sa1","\u002Fdownloads\u002FBSA\u002FBSA_3-4_ZSMF_SA1.pdf","SA1","Schulaufgabe 1",{"title":5,"description":17},"faecher\u002Fbsa\u002F3-4-zsmf-sa1","BSA","Betriebssysteme und Administration","ZSMF","Zusammenfassung","2023\u002F2024","UCml3q7ij2FGv2JpnjORZX6xjuNJlPZXqP7CYuzGgBY",1778676320472]