Dosya Kontrol Bloğu - File Control Block

Bir Dosya Kontrol Bloğu (FCB) açık durumunun olduğu bir dosya sistemi yapısıdır. dosya korunur. Bir FCB, işletim sistemi tarafından yönetilir, ancak işletim sistemi belleğinde değil, dosyayı kullanan programın belleğinde bulunur. Bu, dosya başına bir FCB için yeterli bellek ayırabilmesi koşuluyla, bir işlemin bir seferde istediği kadar dosya açmasına izin verir.

FCB'nin kaynağı CP / M ve çoğu varyantında da mevcuttur DOS ancak yalnızca geriye dönük uyumluluk ölçüsü olarak MS-DOS 2.0 ve sonraki sürümler. Tam bir FCB 36 bayt uzunluğundadır; CP / M'nin ilk sürümlerinde 33 bayttı. Uygulama uyumluluğunu bozmadan artırılamayan bu sabit boyut, FCB'nin dosyalara erişmenin standart yöntemi olarak nihai ölümüne yol açar.

FCB'deki birçok alanın anlamı CP / M ve DOS arasında ve ayrıca hangi işlemin yapıldığına bağlı olarak farklılık gösterir. Aşağıdaki alanların tutarlı anlamları vardır:[1]

OfsetBayt
boyut
İçindekiler
0x001Sürücü numarası - varsayılan için 0, A: için 1, B: için 2, ...
0x018Dosya adı ve uzantı - bunlar birlikte bir 8.3 dosya adı.
0x093
0x0C20Uygulamaya bağlıdır - FCB açılmadan önce sıfıra başlatılmalıdır.
0x201Dosyanın geçerli bölümündeki kayıt numarası - gerçekleştirilirken kullanılır sıralı erişim.
0x213Gerçekleştirirken kullanılacak kayıt numarası rasgele erişim.

0x0C göreli konumdan başlayan 20 bayt uzunluğundaki alan, (diğerlerinin yanı sıra) dosya hakkında daha fazla bilgi sağlayan alanlar içeriyordu:[2]

OfsetBayt
boyut
İçindekiler
0x0E2Dosyanın bayt cinsinden kayıt uzunluğu.
0x104Bayt cinsinden toplam dosya boyutu.
0x142Dosya içeriğindeki son değişiklik tarihi.
0x162Son değişikliğin zamanı.

Yeni bilgiler artık bu 20 bayta sığmayana kadar DOS'un daha yeni sürümleri tarafından daha fazla değerler kullanıldı. CP / M Zero Page ve DOS'ta, önceki bazı "negatif ofset" baytları ayrılmış alanlardan sıkıştırıldı Program Segment Öneki dosya özniteliklerini depolamak için.[1]

Kullanım

CP / M cinsinden, 86-DOS ve PC DOS 1.x / MS-DOS 1.xx, FCB, dosyalara erişmenin tek yöntemiydi. DOS altında birkaç INT 21h alt işlevi, FCB'yi kullanan dosyalar üzerinde çalışmak için arabirim sağladı.[1][3][4] MS-DOS 2 ile birden çok işlemi veya kullanıcıyı desteklemek için hazırlıklar yapıldığında,[3][4] diğer dosya sistemlerini kullan[3][4] FAT'den veya dosya paylaşmaktan[4] gelecekte ağlar üzerinden, FCB'lerin bu tür özellikler için gereken ekstra verileri işleyemeyecek kadar küçük olduğu düşünülüyordu.[4] ve bu nedenle FCB'ler gelecekteki çeşitli genişleme yolları için yetersiz görüldü.[3] Ayrıca, alt dizinleri belirtmek için bir alan sağlamadılar.[3] Dosya sistemiyle ilgili verilerin kullanıcı alanına maruz bırakılması da bir güvenlik riski olarak görülüyordu.[4] FCB'lerin yerini bu nedenle aldı dosya tutamaçları, kullanıldığı gibi UNIX ve türevleri.[3] Dosya tanıtıcıları, yalnızca belirli açık dosyalarla ilişkili ardışık tam sayılardır.

Bir program bir dosyayı açmak için daha yeni dosya tanıtıcısı API'sini kullanırsa, işletim sistemi bu dosyayla ilişkili dahili veri yapısını kendi bellek alanında yönetecektir. Bunun büyük avantajı, bu yapıların daha sonraki işletim sistemi sürümlerinde uygulama programlarıyla uyumluluğu bozmadan büyüyebilmesi; dezavantajı, oldukça basit olduğu düşünüldüğünde hafıza yönetimi DOS'ta, bu yapıların çoğu "dosyaya aç" programın kullanması muhtemel olduğu kadar alan, önyükleme sırasında ayrılmalıdır ve bilgisayar çalışırken başka herhangi bir amaç için kullanılamaz. Bu tür bellek rezervasyonu, DOSYALAR = içindeki yönerge CONFIG.SYS dosya. Bu sorun, DOS 1'deki veya CP / M'deki FCB'lerde ortaya çıkmaz, çünkü işletim sistemi açık bir dosya hakkında bilmesi gereken her şeyi FCB içinde sakladığından ve bu nedenle işletim sistemi belleğinde dosya başına bellek kullanmasına gerek yoktur. Uzay. FCB'leri MS-DOS 3 veya sonraki sürümlerinde kullanırken, FCB biçimi SHARE.EXE'nin yüklü olup olmadığına ve FCB'nin yerel veya uzak bir dosyaya ve genellikle bir SFT girdisine başvurup başvurmadığına bağlıdır. Bu nedenle, DOS 3 veya daha yüksek sürümlerde aynı anda açık tutulabilen FCB'lerin sayısı da genellikle 4 ile sınırlıdır; kullanmak FCBS = CONFIG.SYS dosyasındaki yönerge, gerekirse bu sayının ötesine artırılabilir. Altında DR-DOS, hem FILES hem de FCBS, kullanılabilir tutamaç yapılarının aynı dahili havuzundan gelir ve gerektiğinde dinamik olarak atanır.[5]

FCB'ler, MS-DOS'un tüm sürümlerinde desteklendi ve pencereler girişine kadar FAT32 dosya sistemi. Windows 95, Windows 98 ve Windows Me 32 bitlik küme numaraları nedeniyle FAT32 sürücülerinde FCB kullanımını desteklemez,[4] cilt etiketini okumak dışında. Bu, bazı eski DOS uygulamalarına neden oldu. WordStar, Windows'un bu sürümlerinde başarısız olmak için.

FCB arayüzü şu cihazlarda düzgün çalışmıyor Windows NT, 2000 vb. - WordStar bu işletim sistemlerinde düzgün çalışmıyor. DOS emülatörleri DOSEMU ve DOSBox FCB arayüzünü doğru bir şekilde uyguladığından, modern işletim sistemlerinde FCB'lere ihtiyaç duyan eski DOS programlarını çalıştırmanın bir yoludur.

Disk Transfer Alanı

FCB ile birlikte kullanılan bir tamamlayıcı veri yapısı, Disk Transfer Alanı (DTA).[2] Bu, dosya içeriklerinin (kayıtların) okunacağı / yazılacağı arabelleğe verilen addır. DOS'ta FCB'yi kullanan dosya erişim işlevleri, başlangıçta PSP'nin bir bölümünü işaret ederek, DTA için sabit bir konum varsaydı (sonraki bölüme bakın); bu konum, bir DOS işlevi çağırılarak değiştirilebilir ve sonraki dosya erişimleri örtük olarak yeni konum kullanılarak yapılabilir.

FCB yönteminin kullanımdan kaldırılmasıyla birlikte, dosya tanıtıcılarını kullanan yeni dosya erişim işlevleri, her işlev çağrısıyla dosya içerikleri için bir bellek arabelleği belirtmek için bir araç da sağlamıştır, örneğin eşzamanlı, bağımsız arabellekleri (farklı dosyalar için veya aynı dosya) çok daha pratik hale geldi.

Program Segmenti Öneki ve Program Başlatma

Her DOS yürütülebilir dosyası kabuktan (COMMAND.COM ), adı verilen önceden doldurulmuş 256 bayt uzunluğunda bir veri yapısı ile sağlandı Program Segment Öneki (PSP). Bu yapı içindeki ilgili alanlar şunları içerir:[2]

OfsetBayt
boyut
İçindekiler
0x022Program için 16 baytlık yığınlar halinde kullanılabilir bellek.
0x2C2Programın ortam değişkenlerini içeren segment adresi.
0x5C16FCB ilk komut satırı argümanı için hazırlandı (açılmamış).
0x6C20FCB, ikinci komut satırı argümanı için hazırlandı (açılmamış).
0x801Komut satırının uzunluğu.
0x81127Komut satırı içeriği.

Bu veri yapısı, DS ve ES segment kayıtlarında program başlangıcında adresi DOS tarafından sağlanan veri segmentinin başlangıcında bulunabilir. Programın 0x81 adresindeki komut satırını aynen sağlamanın yanı sıra, DOS ayrıca komut satırındaki ilk iki kelimeye karşılık gelen iki FCB oluşturmaya çalıştı; amaç, bu kelimelerin üzerinde çalışılacak dosya adları olduğu yaygın durumda programcı için iş kaydetmekti. . Bu FCB'ler açılmadan kaldığından, bu komut satırı sözcükleri dosyalara atıfta bulunmasa bile hiçbir sorun çıkmaz.

DTA'nın ilk adresi, komut satırı argümanlarının depolandığı PSP'deki alanı (0x80 adresinde) kaplayacak şekilde ayarlandı, öyle ki bir programın, komut satırı argümanları için bu alanı ayrıştırmak için gerekli olan DOS işlevlerinden yararlanan DOS işlevlerini çağırması gerekiyordu. DTA (bir dosya kaydında okumak gibi), program DTA'nın adresini başka bir bellek bölgesi ile değiştirmeye özen göstermedikçe (veya DTA / FCB işlevlerini tamamen kullanmadıysa, bu yakında dosya tanıtıcıları lehine kullanımdan kaldırılmıştır).

Ayrıca bakınız

Referanslar

  1. ^ a b c "FCB - Standart DOS Dosya Kontrol Bloğu".
  2. ^ a b c Rodriguez-Rosello, Miguel (1992). 8088-8086 / 8087 Programacion Ensamblador En Entorno MSDOS (ispanyolca'da). Ediciones Anaya Multimedya. ISBN  84-7614-128-9.
  3. ^ a b c d e f Zbikowski, Mark; Allen, Paul; Ballmer, Steve; Borman, Reuben; Borman, Rob; Butler, John; Carroll, Chuck; Chamberlain, Mark; Chell, David; Colee, Mike; Courtney, Mike; Dryfoos, Mike; Duncan, Rachel; Eckhardt, Kurt; Evans, Eric; Çiftçi, Rick; Gates, Bill; Geary, Michael; Griffin, Bob; Hogarth, Doug; Johnson, James W .; Kermaani, Kaamel; Kral Adrian; Koch, Reed; Landowski, James; Larson, Chris; Lennon, Thomas; Lipkie, Dan; McDonald, Marc; McKinney, Bruce; Martin, Pascal; Mathers, Estelle; Matthews, Bob; Melin, David; Mergentime, Charles; Nevin, Randy; Newell, Dan; Newell, Tani; Norris, David; O'Leary, Mike; O'Rear, Bob; Olsson, Mike; Osterman, Larry; Ostling, Sırt; Pai, Sunil; Paterson, Tim; Perez, Gary; Peters, Chris; Petzold, Charles; Pollock, John; Reynolds, Aaron; Rubin, Darryl; Ryan, Ralph; Schulmeisters, Karl; Shah, Rajen; Shaw, Barry; Kısa, Anthony; Slivka, Ben; Smirl, Jon; Stillmaker, Betty; Stoddard, John; Tillman, Dennis; Whitten, Greg; Yount, Natalie; Zeck Steve (1988). "Teknik danışmanlar". MS-DOS Ansiklopedisi: 1.0 - 3.2 arası sürümler. Duncan, Ray tarafından; Bostwick, Steve; Burgoyne, Keith; Byers, Robert A .; Hogan, Thom; Kyle, Jim; Letwin, Gordon; Petzold, Charles; Rabinowitz, Chip; Tomlin, Jim; Wilton, Richard; Wolverton, Van; Wong, William; Woodcock, JoAnne (Tamamen elden geçirilmiş ed.). Redmond, Washington, ABD: Microsoft Press. ISBN  1-55615-049-0. LCCN  87-21452. OCLC  16581341. (xix + 1570 sayfa; 26 cm) (Not. Bu baskı, 1988'de geri çekilen 1986 ilk baskısının farklı bir yazar ekibi tarafından kapsamlı bir şekilde yeniden çalışılmasından sonra yayınlandı. [1] )
  4. ^ a b c d e f g Chappell, Geoff (Ocak 1994). Schulman, Andrew; Pedersen, Amorette (editörler). DOS Dahili Parçaları. Andrew Schulman Programlama Serisi (1. baskı, 1. baskı). Addison Wesley Yayıncılık Şirketi. ISBN  978-0-201-60835-9. ISBN  0-201-60835-9. (xxvi + 738 + iv sayfaları, 3.5 "-floppy [2][3] ) Hatalar: [4][5][6]
  5. ^ Paul, Matthias R. (1997-07-30). NWDOS-TIPs - İpuçları ve Püf Noktaları rund um Novell DOS 7, mit Blick auf undokumentierte Ayrıntılar, Hatalar ve Geçici Çözümler. MPDOSTIP. Sürüm 157 (Almanca) (3 ed.). Arşivlendi 2017-08-23 tarihinde orjinalinden. Alındı 2012-01-11. (NB. NWDOSTIP.TXT, Novell DOS 7 ve OpenDOS 7.01 birçok belgelenmemiş özelliğin ve dahili öğenin açıklaması dahil. Yazarın daha büyük MPDOSTIP.ZIP koleksiyonunun bir parçasıdır ve 2001 yılına kadar korunmuştur ve o sırada birçok sitede dağıtılmıştır. Sağlanan bağlantı, NWDOSTIP.TXT dosyasının HTML ile dönüştürülmüş eski bir sürümüne işaret ediyor.)

daha fazla okuma