BÖLÜM 13

47
Yrd. Doç. Dr. Sevinç İlhan Om urca - OS Bölüm 13 BÖLÜM 13 DOSYA SİSTEMİ UYGULAMASI

description

BÖLÜM 13. DOSYA SİSTEMİ UYGULAMASI. Dosya Sistemi Yapısı. Disk ikincil depolamanın en önemli kısmını oluşturur. Dosya sistemi de disk üzerinde bulunur. Diskleri birçok dosyayı depolama da elverişli cihazlar yapan iki karakteristikleri bulunmaktadır: - PowerPoint PPT Presentation

Transcript of BÖLÜM 13

Page 1: BÖLÜM 13

Yrd. Doç. Dr. Sevinç İlhan Omurca - OS Bölüm 13

BÖLÜM 13

DOSYA SİSTEMİ UYGULAMASI

Page 2: BÖLÜM 13

Dosya Sistemi Yapısı

Disk ikincil depolamanın en önemli kısmını oluşturur. Dosya sistemi de disk üzerinde bulunur. Diskleri birçok dosyayı depolama da elverişli cihazlar yapan iki karakteristikleri bulunmaktadır: Aynı yere yeniden yazılabilirler; bir bloğu diskten okuyup güncelleyip tekrar

diskin aynı bölgesine yazmak mümkündür Disk üzerinde verilen herhangi bir blok bilgisine direk ulaşılabilir. Bu da sıralı

ya da random istenen dosyaya kolayca ulaşılabileceği anlamına gelmektedir. (okuma yazma kafası hareketleri ile)

I/O zamanını kısaltabilmek için bellek ve disk bloklar şeklinde organize edilmişlerdir. Her blok bir yada daha çok sektörden oluşmaktadır.

File Control Block bir dosya hakkındaki bilgilerin saklandığı veri yapısıdır.

Page 3: BÖLÜM 13

Dosya Sistemi

Page 4: BÖLÜM 13

Partition içeriği

MBR aktif partition bilgisini verir, aktif bölümün ilk bloğu okunur (boot blok) bu bloktaki program çalıştırılır.

Superblok: dosya sistemi hakkında anahtar parametreleri saklar. Dosya sistemi ile ilk temasa geçildiğinde ya da sistem boot olduğunda bu bilgiler belleğe yüklenir.

Free bloklar (bitmap ya da linklist) i-node: dosya ile ilgili tüm mantıksal ve fiziklsel

yerleşim bilgileri Root dir: ağacın başındaki sistem dizini

Page 5: BÖLÜM 13

Dosya Sistemine ait Katmanlı Yapı

Page 6: BÖLÜM 13

Katmanlı Yapı

Page 7: BÖLÜM 13

Katmanlı Yapı

Page 8: BÖLÜM 13

En alt katman I/O control, disk ile bellek arasında veri transferi için aygıt sürücüleri ve interrupt handlerları(kesme işleyici programlar) içerir. Aygıt sürücü bir dönüştürücü olarak da düşünülebilir. İçeriği yüksek seviyeli komutlardan oluşur. Aygıt sürücü genellikle, özel bit patternlerini, I/O kontrolöre

hangi aygıt konumu üzerinde iş yapacağını ve ne yapacağını söylemek üzere I/O kontrolörün belleğindeki özel konumlara yazar.

Page 9: BÖLÜM 13

Basic file sistem, disk üzerindeki fiziksel bloklara okuma yada yazma işini yapabilmek için genel komutları ortaya çıkarmaya ihtiyaç duyar. Her fiziksel blok kendi adresi ile temsil edilir.

Dosya organizasyon modülü, dosyalar ve mantıksal blokları hakkında bilgiye sahiptir. Hangi tip dosya yerleşiminin gerçekleştiğini ve yerleşim bilgisini

bilerek mantıksal dosya bloklarını fiziksel bloklara adresleyebilir. Her dosyanın mantıksal blok adresi 0-N arasındadır. Bu durumda

fiziksel blok adreslerine erişmek için bir adres dönüşümü gerekmektedir.

Ayrıca boş alan yönetimi de bu katmanda gerçekleştirilir.

Page 10: BÖLÜM 13

Mantıksal dosya sistemi, metadata bilgisi ile ilgilidir. Metadata, tüm dosya sistemi yapısı ile ilgilidir.

Dizin yapısını düzenler. Dosya yapılarını FCB(file control block) ile

düzenler. Bir dosyaya ait tüm bilgiler bu yapılarda saklanır.

Bu katman aynı zamanda dosya korunması ve güvenliğinden sorumludur.

Page 11: BÖLÜM 13

Dosya Sistem Uygulaması

Dosya sisteminin, disk ve bellek üzerindeki uygulaması işletim sistemlerine göre değişiklik gösterirler. Ama yine de değişmeyen bazı prensipleri vardır.

Disk üzerinde, dosya sistemi, işletim sisteminin nasıl boot edeceği, fiziksel blok yerleşimleri, dizin yapısı ve özel dosyalar

hakkında bilgi içerebilir.

Page 12: BÖLÜM 13

Disk Üzerindeki Yapılar

Boot kontrol bloğu, bir sistemin bir partitiondan boot edebilmesi için gerekli olan bilgileri içerir. Eğer disk bir işletim sistemi içermiyorsa, bu blok boş olabilir. Bu aynen bir partitionun ilk bloğu gibidir. UFS’lerde boot blok diye, NTFS’lerde ise partition boot sektör diye adlandırılır.

Partition Kontrol bloğu, partitionlar hakkında detay bilgileri içerir. İçindeki blok sayısı, blokların boyutu, boş blok sayısı, boş blok pointerları, boş FCB sayısı ve pointerleri gibi. UFS’lerde superblok diye, NTFS’lerde ise Master file table diye adlandırılır.

Bir dizin yapısı dosyaları organize etmek için kullanılır. Bir FCB, bir çok dosya detayı içerir, erşim hakları, sahibi, blokların

yerleşim bilgileri. UFS’lerde inode diye, NTFS de, bu bilgi master file table bilgisinde saklanır, burda ilişkisel bir veri tabanı yapısından bahsedilebilir.

Page 13: BÖLÜM 13

Bellekte Dosya Sistemi Yapıları İn-memory bilgisi, dosya sistemi yönetimi ve

performans için kullanılır. Bu yapı şunları içerir: Partition tablosu, mount edilmiş bölüm bilgisi içerir. Dizin yapısı, güncel olarak erişilmiş olan dizin bilgilerini

içerir. System-wide open-file tablosu, her açık dosyanın FCB

bilgisinin kopyasını içerir. Per-process open-file tablosu, system-wide tablosuna

uygun giriş pointerı içerir.

Page 14: BÖLÜM 13

Bellekte Dosya Sistemi Yapıları

Page 15: BÖLÜM 13

FCB

Page 16: BÖLÜM 13

Yeni bir dosya yaratmak için, bir uygulama programı mantıksal dosya sistemini çağırır. Mantıksal dosya sistemi, dizin yapısının formatını bilir. Yeni bir dosya yaratmak için, yeni bir FCB ayırır, uygun dizini belleğe okur, yeni dosya ve FCB ile günceller ve diske geri yazar.

Page 17: BÖLÜM 13

Bir dosya yaratıldı ve I/O işlemleri için kullanılabilir durumda. Öncelikle bunun için açılmalıdır. Open sistem çağrısı, dosya sistemine

bir dosya adı verir. Dosya ismi gelince dizin yapısı araştırılır. Dizin bilgileri bu işlemleri

hızlandırabilmek için genelde ön bellekte yer alırlar. Dosya bulunduğu zaman FCB’si, bellekteki system-wide-open-file

tablosuna kopyalanır. Bir kopyası hala disk üzerindedir. Bir sonraki adımda, per-process open-file tablosunda bir giriş yapılır. Bu

giriş system-wide tablosuna işaretçi içerir. Özetle dosya kapatılmadığı sürece, tüm işlemler per-proc open-file tablosunda yapılır.

Bir proses bu dosyayı kapattığı zaman, per,proc tablo girişi temizlenir ve kaç prosesin dosyayı açtığını belirten open count sayısı 1 azaltılır.

Page 18: BÖLÜM 13

Dizin Yapılandırılması

Lineer Liste Yapısı En basit yollarından birisidir. Dizin, veri bloklarına işaretçiler ile dosyaların adlarına lineer liste olarak erişir. Özel bir girişin bulunabilmesi için bu liste yapısında lineer arama yapılır. Bir dosya yaratılacağı zaman önce dizin yapısı aynı isimde başka dosya varmı

diye taranır varsa aynı isim verilemez. Sonra dizin kaydına yani bir kayıt eklenir. Bu yöntemin dezavantajı her seferinde lineer arama yapmak zorunda olmamız

ve bunun çok zaman almasıdır.Hash Table Dizin organizasyonunda kullanılan bir diğer veri yapısı hash tablolardır. Bu metotta, dizin girişlerini bir lineer liste yapısı tutar, fakat bununla birlikte bir

hash veri yapısı da kullanılır. Hash table, dosya adından hesaplanan bir değeri alır ve lineer liste yapısındaki

dosya adına bir işaretçi döndürür. Buradaki tek dezavantaj çakışmadır. İki dosya adı aynı yere hash ettiklerinde

oluşan durum.

Page 19: BÖLÜM 13

Yerleşim Metotları

(Sürekli Yerleşim) Contiguous allocation

(Linkli Yerleşim) Linked allocation

(Indexli Yerleşim) Indexed allocation

Page 20: BÖLÜM 13

Sürekli Yerleşim

Her dosya diskte sürekli disk blokları ile temsil edilir. Disk adresi disk üzerinde doğrusal sıralama şeklindedir. Bu metotta dosya ilk bloğun başlangıç adresi ve boyu ile

gösterilir. Özetle dosyanın başladığı yer ve blok adedi. Dosyalara erişim bloklar sürekli olduğu için kolay ve hızlıdır.

Sequential ve direct adressing metotlarını destekler. Burada esas problem Yeni bir dosya için gerekli olan sürekli boş

miktardaki yeri bulmaktadır. Her zaman yeni yaratılacak dosyanın boyunu tam olarak bilebilir

miyiz ? Her zaman dış parçalanmadan bahsetmek mümkündür.

Page 21: BÖLÜM 13

Page 22: BÖLÜM 13

Örnek

Page 23: BÖLÜM 13

örnek

Block size=1024 bytes Hangi blok X dosyasının 0.byte (LA=0) bilgisini taşır?

disk block=6, disk block offset=0 Hangi disk blogu LA 2500 deki byte bilgisini saklar? Yada LA 2500

disk uzerinde nerededir?

Page 24: BÖLÜM 13

Linkli Yerleşim

Bu metodda her dosya disk bloklarının bir linked list ‘i şekilde tanımlanır. Disk blokları diskin herhangi bir yerinde olabilirler. Sürekli olmaları

gerekmemektedir. Dosyalar ilk bloğun başlangıcı ve son bloğun bitiş adresleri ile

gösterilirler. Bunun dışındaki ilişkiler blokların kendi aralarında birbirlerini işaret etmeleri şeklinde gerçeklenir.

pointerblock =

Page 25: BÖLÜM 13

Sürekli yerleştirmedeki gibi bir fragmentation ‘dan bahsetmek mümkün değildir.

Dosya yaratılırken boy deklarasyonu gibi bir zorunluluk yoktur. Değişiklikler gerçekleştikçe dosyanın boyu kolayca değiştirilebilir.

Bu metodun da elbette ki dezavantajları vardır. Bunlardan en önemlisi pointer link şekilde gidildiği için sequential erişime zorlamasıdır. Herhangi bir adrese ulaşılmak istendiğinde o adrese kadar olan tüm adresler incelenmek zorundadır.

Bir diğer dezavantaj pointer için ekstra bir depolama alanına ihtiyaç olunmasıdır

Daha önemli bir problem ise güvenilirliktir. Bloklar birbirine pointerlar ile bağlı olduğu durumda , diskte herhangi bir blokta arıza meydana geldiğinde ya da bir pointer kaybolduğunda ya da yazılımsal bir problem çıkıp pointer yanlış ifade edildiğinde ne olacaktır. Bu çok ciddi bir problemdir.

Page 26: BÖLÜM 13

..

Page 27: BÖLÜM 13

Ornek

Mapping Algortihm

Block size=1024 bytes Pointer size=4 bytes File size=4000 bytes Dosya baslangic blogu = 5 LA 2900 disk uzerinde nerededir?

Page 28: BÖLÜM 13

Dosya Yerleşim Tablosu-FAT

Page 29: BÖLÜM 13

Indexli Yerleşim

Sürekli yerleşim ve indexli yerleşimin problemlerini önemli oranda gideren bir metoddur. Hem external fragmentation , hem de direkt erişim için önemli çözümler sunar.

Güvenliği de iki metodun arasında kabul edilebilir. Uygulamada her bloğun yerlerinin kaydı detaylı bir şekilde tutulur. Bu

kayıtların tutulduğu yere index block adı verilir. Her dosya için bir index blok bulunur. Burada dosyaya ait her disk

bloğunu işaret eden ayrı bir kayıt vardır. Dosya yeni yaratıldığında tüm index bloğu kayıtları boştur. Bir blok

yazıldığında blok free space list ‘ten silinir , ilgili dosyanın index bloğuna yazılır.

Direkt dosya erişimine izin verir. External fragmentation problemi yoktur.

Page 30: BÖLÜM 13

Page 31: BÖLÜM 13

Ornek

Page 32: BÖLÜM 13

Ornek-Two Level Index

Page 33: BÖLÜM 13

Ornek-Two Level Index

Max file size=512*512*512

Page 34: BÖLÜM 13

Örn: UNIX (block size =4K bytes)

Page 35: BÖLÜM 13

UNIX Dosya Sistemi

Dizindeki her dosya kaydı için bir giriş bilgisi tutar(i-node)

Bir dizin iki alandan oluşur: Dosya adı: 14 bytes Bu dosya için i-node numarası: 2bytes

Page 36: BÖLÜM 13

UNIX i-node

Page 37: BÖLÜM 13

i-node

İlk 10 pointer data bloklarına işaret eder Blok 11 “indirect bloklar” a işaret eder, 256

tane içerir Blok 12 “double indirect bloklar” a işaret eder,

toplam 64 K lık blok için 256 indirect blok içerir

Blok 13 “triply indirect bloklar” a işaret eder(16M blokcs)

Page 38: BÖLÜM 13

/usr/ast/mbox dizinine erişmek

Page 39: BÖLÜM 13

Boş Alan Yönetimi

Boş disk yeri listesi için sistem free space list denen bir tablo kaydı tutar. Yeni bir dosya yaratılacağında bu boş yer listesinden ilk boş yerin bilgisi

alınır ve dosya oradan yaratılmaya başlanır. Kullanılan kısımlar boş yer listesinden silinir. Bir dosya silindiği zaman free space list ‘e tekrardan eklenir. Kullanılan Yöntemler:

Bit Vektör Linked List Gruplama (Grouping) Sayma (Counting)

Page 40: BÖLÜM 13

Bit Vektör

Çoğunlukla boş alan listesi bir bit map veya bit vector şekilde gerçekleştirilir.

Her blok bir bit ile temsil edilir. Eğer blok boş ise bit 1 ‘d’r , dolu yani kullanılıyor ise 0 ‘ dir .

Diskin 2,3,4,5,8,9,10,11,12,13,17,18,25,26,27 nolu blokları dolu ve diğer kısımları bos ise bit map : 110000110000000111001111111001111.... Bos blogun daha etkin sekilde bulunmasini istersek word taramasi

yapilabilir

Page 41: BÖLÜM 13

Linkli Şema

Page 42: BÖLÜM 13

Windows Dosya Sistemi Terminolojisi

Sektörler: Depolama birimindeki donanım-adreslenebilir bloklar x86-temelli sistemlerde harddisklerde tipik sektör boyutu 512

byte tır. Dosya sistemi formatı:

Depolama biriminde saklanan veriyi tanımlamanın yolu Dosya sistemi özellikleri: izinler & güvenlik, dosya

boyutlandırmadaki limitler, small/large files/disks için destek Cluster’lar:

Birçok dosya sisteminin kullanabileceği adreslenebilir bloklar Birden çok sektörden oluşur. Cluster size tradeoff: space efficiency vs. access speed

Metadata: Metadata dosya ve dizinlerin bölümler üzerindeki

yerleşimini tanımlar.

Page 43: BÖLÜM 13

Windows tarafından desteklenen formatlar

CD-ROM File System (CDFS) Universal Disk Format (UDF) File Allocation Table (FAT12, FAT16, and

FAT32) New Technology File System (NTFS)

Page 44: BÖLÜM 13

FAT

FAT (File Allocation Table) dosya sistemi DOS ve Windows 9x için dosya formatı

Windows FAT dosya sistemi sürücüsü\Winnt\System32\Drivers\Fastfat.sys de uygulanmıştır.

Her FAT formatı, disk üzerindeki bir clusterı tanımlamak için kullanılan bitleri temsil eden bir numara içerir.

Boot sectorFile allocation

table 2 (duplicate)File allocation

table 1Root directory Other directories and all files

FAT format organizationFAT format organization

Page 45: BÖLÜM 13

NTFS

NTFS Windows’un temel(native) dosya sistemi NTFS 64-bit cluster indexi kullanır

Volume leri 16 exabytes (16 billion GB) a kadar adresleyebilir. Windows 2000 bir NTFS volume’ün boyutunu 32-bit

adreslenebilir cluster ile sınırlandırır. (64-KB cluster kullanır) Neden FAT yerine NTFS? FAT daha basit, fakat NTFS şunları

destekler: Daha geniş dosya boyutu ve diskler Daha geniş disklerde daha iyi performans, geniş dizinler, ve

küçük dosyalar güvenilirlik Güvenlik

Page 46: BÖLÜM 13

NTFS & Dosya Nesneleri

File object

Handle tableProcess

File objectData

attribute

User-definedattribute

Streamcontrolblocks

Filecontrolblock

Master filetable

NTFS datastructures

(used to managethe on-diskstructure) NTFS

database(on disk)

Objectmanager

datastructures

App accesses files asNT objects by handles.Object Manager and securitysubsystem verify access rights

Page 47: BÖLÜM 13

Master File Table

Tüm veriler bir dosyanın içerdiği bir volume üzerinde saklanır.

MFT: NTFS volume yapısının kalbi Kayıtlar dizisi şeklinde organize

edilmiştir. Volume üzerindeki her dosya için bir

satır. (MFT kendisi için de bir satır içerir)

Metadata dosyaları dosya sisteminin yapısını saklar (hidden files; $MFT; $Volume...)

MFT

MFT copy (partial)

Log file

Volume file

Attribute def. table

Root directory

Bitmap file

Boot file

Bad cluster file

User files and dirs.

...

NTFSmetadata

file