create account

Betriebssysteme (22) - Dateisysteme by ozelot47

View this thread on steemit.com
· @ozelot47 ·
$6.30
Betriebssysteme (22) - Dateisysteme
Neben den Prozessen sind Dateien und Dateisysteme die Objekte, mit denen jeder Anwender und Programmierer zu tun hat; sie bestimmen zu einem großen Teil seine Arbeitsumgebung. Dateisysteme dienen der Verwaltung von **Dateien (files)**. Eine Datei ist eine Folge von Datensätzen, die zusammengehörige Information enthalten. Für den Benutzer wird eine Datei durch ihren **Namen (filename)** kenntlich gemacht. Oft wird der Typ einer Datei durch eine **Erweiterung (extension)** des Dateinamens bezeichnet, z.B. *.mp3 für eine Musikdatei oder *.txt für eine einfache Textdatei.

Wir wollen nun untersuchen, wie das Dateisystem intern die **logische Sicht auf die physische Sicht abbildet**. Während eine Datei sich aus logischer Sicht als eine Folge von Datensätzen darstellt, ist sie aus physischer Sicht eine Folge von gleich großen Blöcken. Auf der Festplatte wird jeder Block mit Zusatzinformation versehen und in einem Sektor gespeichert.

Aus zwei Gründen wäre es wünschenswert, die Blöcke einer Datei möglichst hintereinander auf der Platte zu speichern: Bei sequentiellem Zugriff auf mehrere aufeinander folgende Blöcke wird dadurch die Zeit für die Bewegung der Schreib-/Leseköpfe minimiert. Und bei wahlfreiem Zugriff auf einzelne Blöcke kann man leicht die Blocknummern berechnen:
Wenn der <code>i−te</code> Block der Datei gelesen werden soll und die Datei bei Block <code>b</code> beginnt, so muss der Gerätetreiber einen Leseauftrag für den Block mit der Nummer <code>b + i</code> erhalten. Leider führt der Wunsch nach zusammenhängender Speicherung von Dateien zu demselben Problem der **externen Fragmentierung**, wie bei der Hauptspeichervergabe: Zwischen den Dateien entstehen Lücken, die sich nicht mehr zur Speicherung längerer Dateien eignen. Eine Kompaktifizierung durch Zusammenschieben der vorhandenen Dateien ist zwar möglich, wird aber wegen des hohen Zeitaufwands in der Regel nicht bei laufendem Betrieb durchgeführt. Man hat deshalb auch beim Sekundärspeicher die Forderung nach zusammenhängender Speicherung aufgegeben und stattdessen Speicherverfahren entwickelt, bei denen die Blöcke einzeln gespeichert werden können, wo immer gerade Platz frei ist. Hier stellt sich die Frage, wie man die Blöcke effizient wiederfindet.

### Beispiel : FAT
![bs.png](https://cdn.steemitimages.com/DQmRvmxTwoPcZjBZSYKk48Dg8TZuPoaT9HdmhdTKbyzohTx/bs.png)

Eine Lösung könnte darin bestehen, die Blöcke einer Datei in einer Liste zu verketten: In dem Verzeichnis, das die Datei enthält, wäre dann beim Dateinamen die physische Adresse von Block Nr. 0 der Datei aufgeführt; am Schluss dieses Blocks stünde die physische Blocknummer von Dateiblock Nr. 1, und so fort. Diese Idee geht zwar effizient mit dem Speicherplatz um und vermeidet externe Fragmentierung, sie hat aber einen anderen schwerwiegenden Nachteil: Wahlfreier Zugriff wird nicht unterstützt. Um Block Nr. <code>i</code> zu lesen, sind nämlich <code>i</code> Externzugriffe auf die Blöcke <code>0,...,i-1</code> notwendig.

Die Betriebssysteme MS-DOS und OS/2 umgehen diesen Nachteil durch einen einfachen Trick: Verkettet werden nicht die Blöcke, sondern ihre physischen Blockadressen. Sie wird als FAT (file allocation table):

<code> FAT: array[0..MaxBlockNummer-1] of BlockNummer</code>

implementiert und enthält für jeden Block der Festplatte einen Eintrag. Im Dateiverzeichnis steht bei jedem Dateinamen X die physische Adresse <code>i</code> von Dateiblock Nr. 0. Der Eintrag <code>FAT[i]</code> enthält dann die Adresse <code>j</code> des zweiten Blocks der Datei X, in <code>FAT[j]</code> steht die
Adresse des dritten Blocks, und so fort. Für den letzten Block <code>l</code> der Datei hat <code>FAT[l]</code> den speziellen Wert **eof, der für end of file** steht. Für freie Blöcke lautet der Eintrag **free**. Wenn eine Datei verlängert werden soll, kann man also die FAT dazu benutzen, einen unbelegten Block zu finden.

Die FAT wird auf konsekutiven Blöcken im Externspeicher abgelegt. Die Blockgröße sollte so bemessen sein, dass die FAT zur Laufzeit in den Cache im Hauptspeicher passt. Dann kann man die physische Adresse des <code>i-ten</code> Blocks einer Datei mit <code>i</code> Hauptspeicherzugriffen herausfinden, also rund tausendmal schneller als bei einer Verkettung der Blöcke im Externspeicher.

Anstatt die Blöcke einer Datei als verkettete Liste zu verwalten, kann man für jede Datei einen Index anlegen. Ein Index ist eine Tabelle, die zu jeder logischen Blocknummer die zugehörige physische Blocknummer enthält. Sie entspricht der Seitentabelle eines Prozesses bei der Hauptspeicherverwaltung. Diese Indextabelle wird selbst auch im Externspeicher abgelegt.

Auch mit diesem Ansatz ist das Problem der externen Fragmentierung beseitigt. Heikler ist dagegen die Frage nach der Indexgröße: Bei einer sehr kurzen Datei ist es nicht zu rechtfertigen, einen ganzen Block für die Speicherung des Index zu verwenden. Wenn dagegen die Datei sehr lang ist, reicht ein einzelner Block hierfür nicht aus; es kann dann sogar notwendig werden, einen Index für den Index anzulegen.

Quelle
Munegowda et. al. Cluster Allocation Strategies of the ExFAT and FAT File Systems: A Comparative Study in Embedded Storage Systems. Volume 154. Juli 2012. DOI: 10.1007/978-81-322-0740-5_82
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 329 others
properties (23)
post_id82,122,943
authorozelot47
permlinkbetriebssysteme-22-dateisysteme
categoryde-stem
json_metadata{"tags":["de-stem","deutsch","steemstem","stem","palnet","science","education"],"image":["https:\/\/cdn.steemitimages.com\/DQmRvmxTwoPcZjBZSYKk48Dg8TZuPoaT9HdmhdTKbyzohTx\/bs.png"],"app":"steemit\/0.1","format":"markdown"}
created2019-11-29 12:02:33
last_update2019-11-29 12:02:33
depth0
children5
net_rshares22,702,705,153,773
last_payout2019-12-06 12:02:33
cashout_time1969-12-31 23:59:59
total_payout_value3.183 SBD
curator_payout_value3.120 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length5,264
author_reputation9,822,504,178,255
root_title"Betriebssysteme (22) - Dateisysteme"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (393)
@mima2606 ·
### Du hast ein Upvote von unserem Kuration – Support Account erhalten. 
### Dieser  wird nicht von einem Bot erteilt. Wir lesen die  Beiträge. (#deutsch) und dann entscheidet der Kurator eigenverantwortlich  ob und in welcher Stärke gevotet wird. Unser Upvote zieht ein Curation Trail von vielen Followern hinter sich her!!! 
### Wir, die Mitglieder des German Steem Bootcamps möchten "DIE DEUTSCHE COMMUNITY" stärken und laden Dich ein Mitglied zu werden.

## Discord Server an https://discord.gg/Uee9wDB

https://steemitimages.com/640x0/https://cdn.discordapp.com/attachments/444873283708518403/541214381262897152/mima2606.png
👍  
properties (23)
post_id82,123,302
authormima2606
permlinkre-ozelot47-q1qd33
categoryde-stem
json_metadata{}
created2019-11-29 12:23:27
last_update2019-11-29 12:23:27
depth1
children0
net_rshares13,014,514,380
last_payout2019-12-06 12:23:27
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length629
author_reputation25,442,252,331,525
root_title"Betriebssysteme (22) - Dateisysteme"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@eltonwright ·
@tipu curate
👍  
properties (23)
post_id82,123,728
authoreltonwright
permlinkq1qe4c
categoryde-stem
json_metadata{"users":["tipu"],"app":"steemcoinpan\/0.1"}
created2019-11-29 12:45:51
last_update2019-11-29 12:45:51
depth1
children1
net_rshares12,497,517,070
last_payout2019-12-06 12:45:51
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length12
author_reputation8,776,742,025
root_title"Betriebssysteme (22) - Dateisysteme"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@tipu ·
$0.07
<a href="https://tipu.online/curator?eltonwright" target="_blank">Upvoted &#128076;</a> (Mana: 0/10 - <a href="https://steemit.com/steem/@tipu/tipu-curate-project-update-recharging-curation-mana" target="_blank">need recharge?</a>)
👍  ,
properties (23)
post_id82,123,732
authortipu
permlinkre-q1qe4c-20191129t124606
categoryde-stem
json_metadata{}
created2019-11-29 12:46:09
last_update2019-11-29 12:46:09
depth2
children0
net_rshares396,437,546,839
last_payout2019-12-06 12:46:09
cashout_time1969-12-31 23:59:59
total_payout_value0.033 SBD
curator_payout_value0.033 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length231
author_reputation47,497,053,264,845
root_title"Betriebssysteme (22) - Dateisysteme"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (2)
@stem.curate ·
Hello,

Your post has been manually curated by a @stem.curate curator.

<center>![FA8866FD-F2C3-43B3-A5A5-E0324BA4BB47.jpeg](https://cdn.steemitimages.com/DQmaqMpaEpJBAwJMN9bCHhmTzUEuymBj8V4BMsiJteZMG7L/FA8866FD-F2C3-43B3-A5A5-E0324BA4BB47.jpeg)</Center><center> *Supporting Steemians on STEMGeeks*</center>

We are dedicated to supporting great content, like yours on the [STEMGeeks](stemgeeks.net) tribe.

If you like what we are doing, please show your support as well by following our [Steem Auto curation trail](https://steemauto.com/dash.php?trail=Stem.curate&i=1).

Please join us on [discord](https://discord.gg/73WaANa).
👍  
properties (23)
post_id82,124,663
authorstem.curate
permlinkq1qgg5
categoryde-stem
json_metadata{"tags":["de-stem","stem"],"users":["stem.curate"],"image":["https:\/\/cdn.steemitimages.com\/DQmaqMpaEpJBAwJMN9bCHhmTzUEuymBj8V4BMsiJteZMG7L\/FA8866FD-F2C3-43B3-A5A5-E0324BA4BB47.jpeg"],"links":["stemgeeks.net","https:\/\/steemauto.com\/dash.php?trail=Stem.curate&i=1","https:\/\/discord.gg\/73WaANa"],"app":"stemgeeks\/0.1","canonical_url":"https:\/\/stemgeeks.net\/@stem.curate\/q1qgg5"}
created2019-11-29 13:36:06
last_update2019-11-29 13:36:06
depth1
children0
net_rshares12,753,496,269
last_payout2019-12-06 13:36:06
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length629
author_reputation468,933,340,012
root_title"Betriebssysteme (22) - Dateisysteme"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@steemstem ·
re-ozelot47-betriebssysteme-22-dateisysteme-20191202t181257054z
<div class='text-justify'> <div class='pull-left'> <center> <br /> <img width='200' src='https://res.cloudinary.com/drrz8xekm/image/upload/v1553698283/weenlqbrqvvczjy6dayw.jpg'> </center>  <br/> </div> 

This post has been voted on by the **SteemSTEM curation team** and voting trail. It is elligible for support from @curie and @minnowbooster.<br /> 

If you appreciate the work we are doing, then consider supporting our witness [@stem.witness](https://steemconnect.com/sign/account_witness_vote?approve=1&witness=stem.witness). Additional witness support to the [curie witness](https://steemconnect.com/sign/account_witness_vote?approve=1&witness=curie) would be appreciated as well.<br /> 

For additional information please join us on the [SteemSTEM discord]( https://discord.gg/BPARaqn) and to get to know the rest of the community!<br />

Please consider using the <a href='https://www.steemstem.io'>steemstem.io</a> app and/or including @steemstem in the list of beneficiaries of this post. This could yield a stronger support from SteemSTEM.
properties (22)
post_id82,228,871
authorsteemstem
permlinkre-ozelot47-betriebssysteme-22-dateisysteme-20191202t181257054z
categoryde-stem
json_metadata{"app":"steemstem-bot"}
created2019-12-02 18:13:00
last_update2019-12-02 18:13:00
depth1
children0
net_rshares0
last_payout2019-12-09 18:13:00
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length1,050
author_reputation220,461,792,063,618
root_title"Betriebssysteme (22) - Dateisysteme"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000