Bu sayfadaki yazılar
Sayfanın metni
Sayfa 32
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 33
Bu ayki konumuz, sıralı dosyalama olarak tercüme edebileceğimiz sequential filing tekniği. Haydi başlayalım... Disketimizi sadece programlarımızı SAVE etmek için kullanmamız gerekmiyor. Daha önceki bölümlerimizde de gördüğünüz gibi, PRG dışında REL, SEQ, DEL veya USR türü dosyalar da var. Bunlardan DEL önemsiz, çünkü sadece programın disketten silindiğini ama gene de directory'de durduğunu gösteriyor. USR ise, özellikle iş programları başta olmak üzere, profesyonel programların kendi veri dosyalarına verdikleri bir tip. Bizim için önemli olanlar SEQ türündeki sequential dosyalar ile REL türündeki relative dosyalar. Relative (göreceli) dosyalama tekniği gelecek konumuz. Şimdi sequential tekniğin üstüne üstüne gideceğiz... Dosyalama teknikleri arasında en hızlısı olmamakla birlikte en basiti sequential olanıdır. Çünkü bilgiler arka arkaya yığılmıştır. Her şey bilgilerin kaydedildiği sıraya göre yapılır. Daha önceleri kaset ünitesinde adreslerini saklamak isteyen arkadaşlar ne dediğimizi iyi anlıyor olmalılar. Genelde sequential dosyanın kullanıldığı adımlarda olur:
1) Dosyanın tamamı hafızaya yüklenir. 2) Gerekli değişiklikler yapılır. 3) Eski dosya silinir. 4) Yerine hafızadaki yeni bilgiler yazılır.
Gerçi 1541 bize bazı kolaylıklar sağlamıştır ama gene de genel yaklaşım budur. Tabii bu algoritma, eğer varolan bilgilerin ortasında bir yerde değişiklik yapılacaksa geçerli. Bu durumda ya dosya bilgisayarın belleğine sığacak kadar küçük olmalı (veya bilgisayarın belleği dosyayı alacak kadar büyük olmalı!), ya da yardımcı dosyalar kullanarak bu işlemleri halletmeliyiz. Eğer sadece sequential bir dosyadaki belli bir kaydı arayacaksak veya varolan bir dosyanın arkasına yeni bilgiler ekleyeceksek (arkasına, arasına değil!) tüm dosyayı bilgisayarın hafızasına geçirmemiz gerekmez. Bir dosya, ister sequential olsun isterse relative, kayıtlardan oluşur. Her bir kayıt da daha küçük alanlardan oluşur. Örneğin bir adres dosyasını ele alalım. Tüm adresler bir dosya oluşturur. Dolayısıyla, her adres bir kayıttır. Adresin isim, soyadı, adres, telefon gibi birimleri de alanları oluşturur. Dosyalamanın temelinde tüm kayıtların, dolayısıyla da alanların arka arkaya kaydedilmesi yatar. Ancak her kaydın hangi adreste başladığı (yani track/sector/byte) belli değildir. Onikinci kayda ulaşabilmek için baştan başlayıp ilk oniki kaydın okunması zorunludur. Zaten bu tür dosyaların sıkıntısı da budur. Eğer dosyamızda 1000 adres varsa ve biz en sonuncuyu istemişsek, o kayda ulaşıncaya kadar dakikalar geçecektir. Önce nasıl sequential dosya yaratıldığını görelim. Daha önce OPEN komutunu incelerken parametrelerini açıklamıştık. Bir özetleyelim:
OPEN dn,8,ia,“dosya,tür,mod” (dn:dosya numarası, (a:ikincil adres)
Dosya numarası 1-127 arasında olacaktır. Yeter de artar bile. İkincil adres ise 2-14 arasında olabilir. 0 ve 1 okuma işlemleri tarafından, 15 ise komut ve hata kanalı tarafından kullanılır. Eğer birden fazla dosya aynı anda açık olacaksa, hem dosya numaraları hem de ikincil adresleri farklı olmalıdır. Bildiğiniz gibi 1541, her ikincil adres için bir buffer ayırıyor. Hatırlamıyorsanız son konumuzu bir kez daha gözden geçirin. Genellikle gözardı edilen bir gerçek var. Bu da aynı anda 1541'in en fazla üç dosyayı açık tutabileceği. Hatta relative dosya da kullanılıyorsa, bu dosyaların iki kanala birden ihtiyaç duyduklarını gözönüne alarak, sadece iki dosyanın aynı anda açık olabileceğini söyleyebiliriz. Yani aynı anda ya 3 sequential ya da 1 sequential