BÖLÜM 13
description
Transcript of BÖLÜM 13
Yrd. Doç. Dr. Sevinç İlhan Omurca - OS Bölüm 13
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: 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.
Dosya Sistemi
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
Dosya Sistemine ait Katmanlı Yapı
Katmanlı Yapı
Katmanlı Yapı
…
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.
…
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.
…
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.
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.
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.
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.
Bellekte Dosya Sistemi Yapıları
FCB
…
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.
…
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.
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.
Yerleşim Metotları
(Sürekli Yerleşim) Contiguous allocation
(Linkli Yerleşim) Linked allocation
(Indexli Yerleşim) Indexed allocation
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.
…
Örnek
ö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?
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 =
…
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.
..
Ornek
Mapping Algortihm
Block size=1024 bytes Pointer size=4 bytes File size=4000 bytes Dosya baslangic blogu = 5 LA 2900 disk uzerinde nerededir?
Dosya Yerleşim Tablosu-FAT
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.
…
Ornek
Ornek-Two Level Index
Ornek-Two Level Index
Max file size=512*512*512
Örn: UNIX (block size =4K bytes)
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
UNIX i-node
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)
/usr/ast/mbox dizinine erişmek
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)
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
Linkli Şema
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.
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)
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
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
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
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