Dosya sistemi API - File system API

Bir dosya sistemi API'si bir olan uygulama programlama arayüzü olan bir dosya sisteminin bir yarar veya kullanıcı programı hizmetler istediği yoluyla. İşletim sistemi, şeffaf farklı dosya sistemine erişim soyutlamalar sağlayabilir.

Bazı dosya sistemi API'leri ayrıca oluşturma veya bir dosya sistemi başlatma, bütünlük ve dosya sistemi doğrulama gibi bakım işlemleri için arabirimler, içerebilir birleştirme .

Her işletim sistemi desteklediği dosya sistemleri için gerekli API'leri içerir. Microsoft Windows için dosya sistemi API'leri vardır NTFS ve birkaç FAT dosya sistemleri. Linux sistemleri için API'ler içerebilir ext2 , ext3 , ReiserFS ve Btrfs birkaç isim.

Tarihçe

Bazı erken işletim sistemleri sadece teyp ve disk işleme kapasitesine sahip olan dosya sistemlerini . Bunlar ile arayüzleri en temel sağlanan:

  • , Yaz okumak ve pozisyon

Böyle bir cihaz tayini ve tersi gibi daha koordinasyon eklenmesini gerekli:

  • Aç ve kapat

dosya sistemleri daha fazla hizmet sağlarken, daha arayüzleri tanımlandı:

  • Meta veri yönetimi
  • Dosya sistemi bakım

Ek dosya sistemi türleri, hiyerarşi yapısı ve bazı özel fonksiyonlar gerekli ortam, artan desteklenen ek özellikler gibi:

Çok kullanıcılı sistemler API'ler için gerekli:

  • Paylaşım
  • kısıtlama erişim
  • Şifreleme

API Özetler

, Yaz okumak ve pozisyon

Bir dosya sistemine kullanıcı verilerini yazma kullanıcı programı veya çalışma zamanı kitaplığı tarafından doğrudan kullanılmak üzere temin edilmektedir. Bazı programlama dilleri için çalışma zamanı kitaplığı biçimlendirme ve engelleme, tip dönüşümünü sağlayabilir. Bazı dosya sistemleri anahtar tarafından kayıtların tanımlanmasını sağlamak ve yeniden yazma varolan kaydını içerebilir. Bu işlem bazen denir PUTya PUTX(kayıt varsa)

Kimi zaman okuma kullanıcı verileri, Greco , (ileri veya geri) ya da anahtarlı bir dosya sistemi, belirli bir anahtar durumunda bir yönü de içerebilir. Kullanıcı programı için şefaat edebilir çalışma zamanı kitaplıkları yazma gibi.

Konumlandırma sonraki kaydın yerini ayarlayarak içerir. Bu ileriye atlanması ya da ters yanı sıra dosyanın başlangıcına veya sonuna konumlandırma içerebilir.

Aç ve kapat

Açık API açıkça talep veya dolaylı bir nesne üzerinde bir işlemle birinci operasyonun verilmesi üzerine çağırılabilir. Bu, çıkarılabilir medya montaj başka ana bilgisayara bağlantı kurulması ve nesnenin konumunu ve erişilebilirliğini doğrulayarak neden olabilir. Bu nesne kullanımda olduğunu belirtmek için sistem yapıları günceller.

Bir dosya sistemi nesnesine erişim talebi için olağan şartlar şunlardır:

  1. bir nesnenin erişilebilir (dosya, dizin, ortam ve konum)
  2. operasyonların amaçlanan tipi açık sonra yapılacak (okur, güncellemeler, silme)

Ek bilgiler, örneğin gerekli olabilir

  • bir şifre
  • açma işlemi nesnesi (dövme) kullanılarak iken diğer işlemler aynı nesne erişebilir bir beyan. Bu, diğer sürecin niyet bağlı olabilir. Aksine, başka hiçbir işlemi diğer işlemler niyet (münhasır kullanım) bakılmaksızın nesneye erişebilir bir bildiride.

Bu dosya sistemine talebin iletilmesi ek olarak süreçte modüllerin arasında koordinasyonu sağlayabilir bir programlama dili kütüphanesi ile talep edilmektedir.

Bir şey açık işlenmesi sırasında yanlış olabileceği beklenmelidir.

  1. Nesne veya amacı hatalı (ad, kabul edilemez bir karakteri içerebilir veya niyet tanınamamaktadır) belirlenebilir.
  2. işlem nesnesine erişim yasaklanmış olabilir (bir grup veya belirli bir kullanıcı tarafından erişilebilir olabilir).
  3. Dosya sistemi kullanıcıları arasında faaliyetlerini koordine etmek gerekli yapılar oluşturmak veya güncellemek için mümkün olmayabilir.
  4. Yeni (veya ikame) bir nesnenin durumunda, vasıtalar üzerinde yeterli bir kapasite olmayabilir.

Programlama dili bağlı olarak, açık ek özellikler bu koşulları ele modülleri kurabilir. Bazı kütüphaneler açılış programı bir arıza sonucunda hiçbir anlamlı eylemi gerçekleştirmek mümkün olmalıdır analizine imkan dosya sistemine bir kütüphane modülü belirtin. Başarısızlık gerekli giriş dosyasını açmak için girişimde açıksa Örneğin, sadece eylem yetmezliği rapor ve programı iptal etmek olabilir. Bazı dillerde basitçe başarısızlık türünü gösteren bir kod dönmek her zaman kontrol edilmelidir rapor ve devam edebilmesi eğer konuya ilişkin bir karar programı ile.

Yakın sökülmesi veya çıkarılabilir medyayı çıkartma ve nesne artık kullanımda olduğunu belirtmek için kütüphane ve dosya sistemi yapıları güncellenmesi neden olabilir. Yakın minimal özellikleri nesneye başvurur. Buna ek olarak, bazı dosya sistemleri nesne gösterebilir nesnenin bir eğilim belirten atıldı ve daha fazla dosya sisteminin bir parçası olan bir sağlar. Benzer açık nedeniyle, bir terslik olabileceğini tahmin edilmelidir.

  1. nesnenin özellikleri yanlış olabilir.
  2. Herhangi bir veri nesnesi başarıyla güncellendi gösteren bir yapıya tamponlu ya da çıkışına olan kaydetmek için vasıtalar üzerinde yeterli kapasiteye olmayabilir.
  3. Bir cihaz hata nesne, nesnenin ilgili meta veri (örneğin son erişim zamanı) tamponlanmış veri tamamlama yapısı yazma veya güncellenirken depolanan ortam oluşabilir.
  4. nesneyi serbest bırakmak için bir belirtim Diğer süreçler nesnesini kullanarak tutarsız olabilir.

Bir başarısızlık işlemek için Hususlar açık benzemektedir.

Meta veri yönetimi

Bir dosyada veriler hakkında bilgiler meta olarak adlandırılır.

Dosya sistemi yedekleme yardımcı programı varsa meta verilerden bazıları örnek son değişiklik tarihinden (ve dosya sistemine bağlı olarak çeşitli diğer tarihleri) dosyasının başında bulunduğu, dosyanın boyutuna, dosya sistemi tarafından korunur ve dosyaların geçerli sürümünü kurtardı. Bu öğeler genellikle kullanıcı programı tarafından değiştirilemez.

Bazı dosya sistemleri tarafından desteklenen ek meta veri dosyanın sahibini içerebilir, grup dosya izinleri ve / veya erişim kontrolü yanı sıra aittir (yani ne erişim ve çeşitli kullanıcıların veya grupların gerçekleştirebilir günceller) ve dosyanın olmadığını dizin listelenen normalde görülebilir. Bu öğeler sahibi tarafından yürütülebilir dosya sistem araçları tarafından genellikle değiştirilebilir vardır.

Bazı uygulamalar daha meta verileri depolar. görüntüler için meta fotoğrafını çekmek için kullanılan kamera modelini ve ayarları içerebilir. ses dosyaları için, meta veri albüm içerebilir, sahibi tarafından güncelleme olarak farklı bir yorum olabilir dosyası (aynı kaydın yani farklı kopya belirli bir kopyasına özgü olabilir kaydı hakkında kayıt ve yorumlar kaydedildi sanatçı dosyanın). Belgeler kontrol Uydudan onaylı-by vb gibi öğeleri içerebilir

Dizin yönetimi

bir dizinden bir dosyayı (veya bir alt dizin) hareketli ve bir dosya silme, dosya yeniden adlandırma operasyonların örnekleri dizinleri yönetimi için dosya sistemi tarafından sağlanmaktadır.

Böyle çeşitli kullanıcılara veya kullanıcı gruplarına göre erişimi bir dizin izin veya kısıtlamak olarak Meta veri işlemleri genellikle dahil edilir.

Dosya sistemi bakım

Bir dosya sistemi kullanılan dizinler, dosyalar ve kayıtlar eklenebilir gibi, silinmiş veya değiştirilmiş. Bu genellikle altta yatan veri yapılarında yetersizliklere neden olur. Aşırı yeniden konumlandırılmasını neden olacak bir şekilde ortam boyunca dağıtılmış mantıksal ardışık bloklar gibi şeyler, kısmen kullanılan da boş blok ilişkili yapıları dahil edilmiştir. Eksik yapılar veya başka tutarsızlıklar ve çok nadir durumlarda dosya sistemi kodlama hatalarını cihaz veya ortam hataları, güç ve gerçek güç kaybı, uygun olmayan bir kapatma sistemi veya ortam kaldırma yaklaşan kaybı algılanması arasında yetersiz zaman neden olabilir.

Dosya sisteminde Uzmanlaşmış rutinleri bu yapıları optimize veya onarmak için dahil edilmiştir. Genellikle doğrudan ancak dosya sisteminin kendi içinde tetiklenen kullanıcı tarafından başvurulmaz. Yapıların seviye sayısı iç sayaçları, eklenen nesnelerin sayısı eşiklere karşı kıyaslanabilir. Bu kullanıcı erişimi (genellikle etkilenen kullanıcı ya da kullanıcı hoşnutsuzluk), belirli bir yapıya süspanse edilebilir ya da düşük öncelikli olarak uyumsuz görevleri başlatılabilir ya da düşük kullanım etkinliğinin bir zamana ertelenebilir neden olabilir. Bazen bu rutinleri çağrılır ya durumunda sistem yöneticisi tarafından veya planlanan birleştirme .

Çekirdek düzeyinde API

Çekirdek dosya sistemleri geliştiriciler için arabirimler sunar ama aynı zamanda dosya sistemi kodunun yer aldığı alandır sadece zaman API "çekirdek düzeyinde" dir.

Bu çekirdek kendisi dosya sistemi düzeni ve dosya sistemi donanıma doğrudan erişmez bir kolları biri olan çekirdeğe aykırı olarak, dosya sistemi sürücüsü ve tersi ile konuşmak için kendi tesislerini kullandığı eski şemayla farklıdır.

En temiz düzeni değil ama eski düzeni vardır majör yeniden yazma zorlukları giderir.

Modüler çekirdekleri sayesinde herhangi çekirdek modülü, hatta üçüncü taraf olanlar olarak dosya sistemlerini ekleyerek sağlar. o çekirdek gerektirir ancak modüler olmayan çekirdekler ile yeni dosya sistemi kodu ile yeniden derlenmesi (ve kapalı kaynak çekirdekleri, bu üçüncü şahıs dosya sistemi imkansız hale getirir).

Unixler ve Unix benzeri gibi sistemlerin Linux bu modüler düzeni kullandık.

Bir kullanılan bu planın varyasyon vardır , MS-DOS CD-ROM ve ağ dosya sistemlerini destekleyen (ileriye DOS 4.0) ve uyumlu. Bunun yerine çekirdek tabanlı düzeni olarak çekirdek tesisleri eski düzeni olduğu gibi çekirdeğe kod ekleme veya kullanmak yerine, bir dosyaya tüm aramaları hapseden ve çekirdeğin eşdeğer işleve kanalize edilmesi gerektiği takdirde tanımlar yoksa zorunda kalırsa belirli dosya sistemi sürücüsü tarafından ele alınır ve dosya sistemi sürücüsü "doğrudan" alt düzey kullanarak diski içeriğine erişmek olmak BIOS işlevlerini.

Sürücü tabanlı API

API'sıdır "sürücü tabanlı" çekirdek olanaklar sağlar ancak dosya sistemi kodu çekirdeğe tamamen dış bulunduğu zaman (hatta bir modüler çekirdek modül olarak).

O dosya sistemleri sistemden kapalı kaynak çekirdek ve çevrimiçi dosya sistemi ekleme veya kaldırma için oluşturulmasına izin verir, dosya sistemi kodu olarak daha temiz bir düzeni tamamen bağımsız olmasıdır.

Bu şema örnekleri Windows NT ve OS / 2 İlgili IFSs .

Karışık çekirdek sürücü tabanlı API

Bu API tüm dosya sistemleri çekirdek tabanlı API'ler gibi, çekirdekteki, ancak bunlar otomatik olarak işletim sistemi tarafından, sürücü tabanlı başka API tarafından yakalanırlar.

Bu düzen kullanıldı , Windows 3.1 32 bit korumalı modda bir FAT dosya sistemi sürücüsü sağlamak için, ve önbelleğe tamamen ve daha sonra Windows 9x serisindeki kernel (MSDOS.SYS) DOS FAT sürücüsü bypass (VFAT) ( 95 , 98 ve Me ) Joliet birlikte VFAT, ISO9660 dosya sistemi sürücüsü (), ağ paylaşımları ve üçüncü taraf dosya sistemi sürücüleri, hem de orijinal DOS ekleme gibi API'ler LFN API (yani IFS sürücüleri can sadece zaten yolunu kesmek için varolmayan DOS dosya API'ler de) 32 bit korumalı mod yürütülebilir içinden yenilerini eklemek ama.

Ancak bu API tamamen belgelenmiş ve üçüncü kişilerin çekirdek tabanlı API'leri ile daha çekilmez bir "make-it-by-Kendine" senaryosunda kendilerini bulunmadı.

Kullanıcı uzay API

API içindedir kullanıcı alanı dosya sistemi doğrudan çekirdek imkanları kullanmak ancak bir de işlevlerini üst düzey işletim sistemi işlevleri kullanarak diskleri erişir ve sağlar değildir kütüphaneye araçlardan bir dizi dosya sistemine erişim için kullanın.

Bu disk görüntülerini işlemek için yararlıdır.

avantajı, bir dosya sistemi ANSI C kadar yaygın kullanıcının kullandığı üst düzey işletim sistemi işlevleri gibi işletim sistemleri arasında taşınabilir yapılabilir olduğunu, ancak dezavantajı API bir uygulayan her uygulama için benzersiz olmasıdır.

Bu şema örnekleri hfsutils ve adflib .

Dosya sistemi API'leri arasındaki Interoperatibility

Tüm dosya sistemleri (en azından diski olanları) çekirdek tarafından sağlanan eşdeğer işlevleri ihtiyaç gibi, farklı türde olsalar bile, başka bir API kolayca bağlantı noktası dosya sistemi kodunu mümkündür.

Örneğin, OS / 2 için ext2 sürücü OS Linux VFS'den bir sargı basitçe / 2'nin IFS ve Linux ext2 çekirdek dayalı ve OS / 2 için HFS sürücü OS hfsutils bir liman / 2'nin IFS. Ayrıca NTFS, Linux altında çalışmasını sağlamak için bir Windows NT IFS sürücüsü kullanan bir proje söz konusudur.

Ayrıca bakınız

Referanslar

Kaynaklar

  • O'Reilly - Windows NT Dosya Sistemi iç, bir Geliştirici Kılavuzu - Rajeev Nagar haberi - ISBN  1-56592-249-2
  • Microsoft Press - İç Windows NT Dosya Sistemi - Helen Custer haberi - ISBN  1-55615-660-X
  • Wiley - UNIX dosya sistemleri: Evrim, Tasarım ve Uygulama - Steve D. Pate haberi - ISBN  0-471-16483-6
  • Microsoft Press - İç Windows NT - Helen Custer haberi - ISBN  1-55615-481-X

Dış bağlantılar