Allt är en fil

Från Wikipedia, den fria encyklopedin
Hoppa till navigation Hoppa till sökning

Allt är en fil ( engelska för Everything is a file ) beskriver en av de definierande funktionerna i UNIX och dess derivat , alltså I / O -resurser som filer, kataloger, enheter (som hårddiskar, tangentbord, skrivare.) Och till och med mellanprocess - och nätverksanslutningar som enkla byte -strömmar via filsystem är tillgängliga. [1]

Fördelen med detta tillvägagångssätt är att samma verktyg och programmeringsgränssnitt kan användas för att komma åt alla dessa resurser. När en fil öppnas får programmet en filbeskrivning från kärnan . Detta fungerar som ett input / output -gränssnitt för alla efterföljande operationer. Eftersom fildeskriptorer skapas också för anonyma rör och nätverksuttag , men de har ingen väg, är principen ofta också Allt är en fil deskriptor ( "Allt är en filidentifierare) eller enligt Linus Torvalds är allt en ström av bytes ('Allt är en byte -ström ') [2] .

Dessutom finns det ett antal virtuella filsystem och pseudofilsystem som gör information om systemstatus och processer tillgängliga på ett hierarkiskt strukturerat sätt.

Termen används konsekvent som ett slagord för Unix -systemets unika egenskaper vid hantering av filer. Det är dock inte skarpt avgränsat och, som anges ovan, syftar det till olika aspekter beroende på dess användning. Även om ovannämnda egenskaper bara finns i Unix-liknande operativsystem idag och är allmänt associerade med allt är en fil , introducerade Unix också innovationer som nu finns allestädes närvarande. Följande avsnitt behandlar aspekterna i detalj.

Katalogstruktur som ett namnområde

Katalogstrukturen är en enhetlig, hierarkiskt strukturerad namnrymd genom vilken en fil ges en sökväg under vars namn den är tillgänglig. En katalog är en speciell fil som listar alla katalogposter den innehåller. Detta kan inkludera både filer och kataloger. Den resulterande kataloghierarkin kan sträcka sig över olika enheter. Filsystemet fanns redan i detta formulär i Multics , en föregångare till Unix. [3] Sådana katalogstrukturer är nu utbredda, om än med vissa avvikelser. Till exempel är de inte enhetliga i MS-DOS och Windows : Sökvägar innehåller också en enhetsspecifik enhetsbokstav .

Namnutrymmet används också av namngivna rör och fungerar som grund för det utbredda System V - IPC -gränssnittet, där befintliga filer fungerar som en mötesplats för två processer. [4] POSIX- analogen, POSIX-IPC-namn, är inte baserade på filer. [5]

Sekundär lagring och filer

En annan [6] läsning av principen, som inte längre är utbredd idag, avser innovationen att filer under UNIX består av en enkel bit byte och dessutom inte omfattas av några begränsningar i deras format (i motsats till data uppsättning som var utbredd vid de tidorienterade filsystemen). [6] Syftet var att jämna ut enhetsspecifikationer, att abstrahera dem från minnesorganisationen och att lämna så många beslut som möjligt åt användarutrymmet :

“[…] UNIX -kärnan stöder inte filåtkomstmetoder, fildisposition, filformat, filmaximal storlek, spooling, kommandospråk, logiska poster, fysiska poster, tilldelning av logiska filnamn, logiska filnamn, mer än en teckenuppsättning , en operatörskonsol, en operatör, inloggning eller utloggning. Många av dessa saker är symptom snarare än funktioner. Många av dessa saker implementeras i användarprogramvara med kärnan som ett verktyg. "

Denna förståelse av filer tas för givet idag och finns i de flesta vanliga operativsystem.

Utrustning

Enligt Dennis Ritchie kom tanken på att göra enheter tillgängliga via filer från Dennis Ritchie . [Åttonde]

Se även

Individuella bevis

  1. Machtelt Garrels: Introduktion till Linux. En nybörjarguide . 2: a upplagan. Fultus, 2007, ISBN 1-59682-112-4 , avsnitt 3.1.1.1.
  2. Linus Torvalds: signalfd v2 - signalfd -kärna . Hämtad 17 januari 2013.
  3. RC Daley, Peter G. Neumann: Ett filsystem för allmänna ändamål för sekundär lagring. I: AFIPS '65 (fodral, del I). Las Vegas 1965, s. 213-229 ( online ).
  4. Se ftok () biblioteksfunktion
  5. Marc J. Roch -barn: Avancerad UNIX -programmering. Andra upplagan, Addison-Wesley, 2004, kapitel 7.6.2.
  6. ^ A b Brian W. Kernighan , Rob Pike : UNIX -programmeringsmiljön. Prentice Hall, 1984, kapitel 2.
  7. Ken Thompson: UNIX -implementering. I: Bell System Technical. 1978, nummer 57, s. 1931-1946.
  8. Dennis Ritchie: Utvecklingen av Unix Time-sharing System. I: Språkdesign och programmeringsmetodik. 25-35, Springer, Berlin / Heidelberg 1980, ( online ).