Un sistem de fișiere virtual ( sistemul de fișiere virtual în engleză - VFS) sau un comutator al sistemului de fișiere virtual ( comutatorul sistemului de fișiere virtual în engleză ) este un strat de abstractizare peste o implementare specifică a unui sistem de fișiere . Scopul VFS este de a oferi acces uniform pentru aplicațiile client la diferite tipuri de sisteme de fișiere. VFS poate fi folosit pentru a accesa dispozitive și fișiere locale ( fat32 , ext4 , ntfs ), dispozitive de rețea și fișiere de pe acestea ( nfs ) și dispozitive care nu sunt de stocare a datelor ( procfs [1] ). VFS declară o interfață de programare între nucleu și un anumit sistem de fișiere, astfel încât adăugarea suportului pentru un nou sistem de fișiere nu necesită modificări ale nucleului sistemului de operare .
Unul dintre primele sisteme de fișiere virtuale în sisteme de operare asemănătoare Unix a fost implementat de Sun Microsystems în SunOS 2.0 în 1985 . Acest lucru a permis apelurilor de sistem Unix să acceseze transparent UFS local și NFS la distanță . Din acest motiv, furnizorii Unix care au licențiat cod NFS au copiat adesea designul VFS al Sun. Alte sisteme de fișiere pot fi montate în același mod: a existat o implementare a sistemului de fișiere MS-DOS FAT dezvoltat de Sun care a folosit SunOS VFS, deși nu a fost livrat ca produs până la SunOS 4.1. Implementarea SunOS este în centrul mecanismului VFS din System V Release 4 .
John Heidemann a dezvoltat un VFS stivuit sub SunOS 4.0 pentru sistemul de fișiere Ficus experimental . Acest proiect a implicat reutilizarea codului în sisteme de fișiere cu semantică diferită, dar similară (de exemplu, un sistem de fișiere criptat ar putea folosi un sistem de denumire și un cod pentru a stoca date dintr-un sistem de fișiere necriptat). În disertația sa, Heidemann a adaptat această lucrare pentru a fi utilizată în 4.4BSD. Descendenții acestui cod stau la baza implementărilor sistemelor de fișiere moderne în sistemele de operare derivate din BSD , inclusiv Mac OS X.
După cum am menționat mai devreme, scopul principal al VFS modern este de a organiza o singură interfață de utilizator pentru accesarea diferitelor sisteme de fișiere, ale căror drivere sunt încărcate în memoria computerului. Pentru a atinge acest obiectiv, nucleul sistemului de operare necesită crearea unei singure interfețe de programare pentru apelurile interne ale nucleului. Această interfață ar trebui să fie suficient de largă în ceea ce privește funcționalitatea, deoarece va fi utilizată pentru a accesa un număr foarte mare de sisteme de fișiere diferite (în ceea ce privește proprietățile și funcționalitatea). Pe lângă apelurile standard de deschidere/închidere și citire/scriere pentru fișiere, VFS trebuie să aibă o interfață pentru revalidarea datelor (din revalidarea engleză ), lucrul cu cache-urile , trimiterea de solicitări speciale (IOCTL - Input/Output Control ), precum și cât pentru organizarea sesiunii curente cu un fișier deschis.
Pentru a lucra cu VFS, driverul sistemului de fișiere trebuie să implementeze apelurile de program desemnate, ținând cont de specificul activității acestui sistem de fișiere. Driverul poate suporta doar o parte din apelurile API VFS, caz în care nucleul sistemului de operare ar trebui să „dezactiveze” corect solicitările neprocesate corespunzătoare de la utilizator.
De fapt, interfața VFS furnizată driverelor de sistem de fișiere poate fi o definiție pentru însuși conceptul de sistem de fișiere. Orice driver care implementează funcționalitatea API VFS și este încărcat corespunzător în kernel devine un driver de sistem de fișiere, indiferent dacă este folosit pentru accesul la fișiere sau nu. Mai mult decât atât, funcționalitatea sistemului de fișiere în sine poate să nu fie chiar în driver, ci în spațiul utilizatorului . Un exemplu izbitor al acestei abordări este sistemul de fișiere din spațiul utilizatorului ( Sistemul de fișiere în spațiul utilizatorului - FUSE ).
Pe OS/2 și Microsoft Windows , mecanismul sistemului de fișiere virtual este numit sistem de fișiere instalabil .
Pe Linux, mecanismul VFS, la fel ca tot codul de kernel, este open source. Acest lucru permite dezvoltatorilor de sisteme de fișiere să-și scrie driverele cât mai eficient posibil. Ca rezultat, Linux acceptă montarea marii majorități a sistemelor de fișiere moderne.
Pe Unix, sistemele de fișiere includ comutatorul sistemului de fișiere în System V Release 3 și în Ultrix .
E. Tanenbaum, H. Bos Sisteme de operare moderne. - Ed. a 4-a. - Sankt Petersburg: Peter, 2018.
Sisteme de fișiere ( listă , comparație ) | |||||||
---|---|---|---|---|---|---|---|
Disc |
| ||||||
Distribuit (rețea) | |||||||
Special |
|
ale sistemelor de operare | Aspecte|||||
---|---|---|---|---|---|
| |||||
Tipuri |
| ||||
Nucleu |
| ||||
Managementul proceselor |
| ||||
Gestionarea și adresarea memoriei |
| ||||
Instrumente de încărcare și inițializare | |||||
Coajă | |||||
Alte | |||||
Categorie Wikimedia Commons Wikibooks Wiktionar |