OS: Some solutions to exercise 6

Please note that these are suggested solutions. There can be other solutions that are also correct.

Uppgift 1

b) I Unix finns en datastruktur som kallas i-nod (på engelska "i-node" eller "inode"). Vad används den till, och vad innehåller den?

Svar:

I-noden innehåller data om en fil i filträdet. En fil kan vara en normal fil med data eller körbar kod, men den kan också vara en filkatalog ("directory") eller en "speciell" fil ("special file"). Speciella filer kan representera en fysisk enhet (exempelvis en hårddiskenhet), eller fungera som ett gränssnitt mot operativsystemet (exempelvis /proc-filsystemet).

I-noden innehåller data om filen, som vilken användare som är filens ägare, vilka rättigheter (att läsa, skriva och exekvera filen) olika användare har, filens storlek, tid för senaste ändring, och referenser till var filens data är lagrade. Den innehåller också antalet hårda länkar, dvs antalet förekomster i filkataloger av denna fil. När det antalet går ner till noll kan i-noden och filens data tas bort.

I-noden innehåller inte filens namn. Filnamn lagras i filkatalogerna.

Uppgift 2

...

Uppgift 3

I uppgiften ovan står det att filsystemet "normalt" är på sekundärminne. Var kan det annars vara?

Svar:

Med Linux och Unix kan filsystemet också lagras:

  • I en fil på ett annat filsystem
  • I primärminne
  • På en server som är ansluten via ett datornät

Uppgift 4

...

Uppgift 5

Hur lång tid tar det att skriva en gigabyte data till en fil?

Svar:

Svaret är förstås att det beror på. Det beror på vad är det för hårdvara, vad är det för operativsystem, vad är det för filsystem, vad är det för sorts fil, hur man skriver datat, och vad man egentligen menar med "skriva".

Några exempel, provkörda 2022, inklusive synkning så datat inte ligger kvar i någon buffert:

  • Skrivning till en fil på en modern SSD på en Linux-dator: 0.73 sekunder
  • Skrivning till en fil på en modern mekanisk hårddisk på en Linux-dator: 7.10 sekunder
  • Skrivning till en fil på ett primärminnesfilsystem, dvs med hela filsystemet lagrat i primärminne, på en Linux-dator: 0.16 sekunder
  • Skrivning till specialfilen /dev/null, som bara kastar bort alla data: 0.00 sekunder
Dessa tider inkluderar systemanropen write, close och sync. Programmet gigabyte.c användes vid mätningarna.

I tabellen nedan kan man se hur tiderna fördelade sig mellan systemanropen write, close och sync. Tiderna för skrivning till den mekaniska hårddisken visar tydligt att operativsystemet buffrar skrivningen, och man ser också att det flushar bufferten när man stänger filen.

Medium write-anropen close-anropet sync-anropet Total tid
SSD 0.32 0.39 0.02 0.73
Mekanisk hårddisk 0.31 6.63 0.16 7.10
Primärminnesfilsystem 0.16 0.00 0.00 0.16
/dev/null 0.00 0.00 0.00 0.00

Uppgift 6

...

Uppgift 7

...

Uppgift 8

...

Uppgift 9

...

Uppgift 10

Svar:

Påstående a är sant, och alla de andra är falska.


Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se), June 10, 2022