VFS en lokale FS
Jul 26, 2023De kernel van het besturingssysteem moet een volledig I/O-besturingsproces bieden en een groot aantal verschillende gegevensstructuren voorbereiden om de stroom van I/O tussen verschillende modules te beheren.
Deze modules omvatten: VFS-directorylaag, Page Cache-laag, bestandssysteemlaag, netwerkverwerkingslaag, gemeenschappelijke bloklaag, I/O-schedulerlaag, blokapparaatstuurprogrammalaag, stuurprogrammalaag voor externe I/O-kanaalcontroller. Deze lagen vormen samen een grote en complexe I/O-protocolstack.
Ik weet zeker dat je al een idee hebt van hoe programma's I/O-apparaten gebruiken. De meest voorkomende I/O-apparaten vallen in drie categorieën: netwerk kaart apparaten, opslagapparaten(st2400mm0129), en interactieve apparaten zoals toetsenborden/muizen. Deze apparaten kunnen via PCIE- of USB-poorten op het systeem worden aangesloten. De vraag is, hoe worden de gegevens die naar hen worden verzonden gegenereerd en helemaal naar het apparaatstuurprogramma en naar het apparaat gestuurd?
Als een gebruikersmodusprogramma de inhoud van sector 0 van een ventilator van een harde schijf wil lezen, kan het de harde schijf niet rechtstreeks manipuleren, omdat het de functies van de harde schijf niet kan aanroepen. harde schijf apparaat driver helemaal niet, het kan alleen de kernelcode delegeren om dit te doen via de gelezen systeemaanroep.
In de parameters van de gelezen systeemaanroep moet het programma aan de gebruikerszijde de kernel op zijn minst vertellen: welk apparaat moet worden gelezen, van welke bytes van het apparaat moet worden gelezen, waar de gelezen gegevens in het geheugen moeten worden teruggezet en andere parameters (zoals welke manier om te lezen tijdens het lezen, enz.). Hetzelfde geldt voor het lezen van bestanden.