CSD İŞLETİM SİSTEMİNİN SANAL DOSYA SİSTEMİNE İLİŞKİN TEMEL VERİ YAPILARI
|
|
- Si̇mge Topuz
- 6 yıl önce
- İzleme sayısı:
Transkript
1 CSD İŞLETİM SİSTEMİNİN SANAL DOSYA SİSTEMİNE İLİŞKİN TEMEL VERİ YAPILARI Kaan Aslan 06/01/2004 Özet: Bu makale CSD İşletim Sisteminin sanal dosya sistemi üzerinde çalışacak yeni grup üyelerini desteklemek amacıyla yazılmıştır. Makalede CSD İşletim Sisteminin sanal dosya sistemini oluşturan temel veri yapıları ve fonksiyonlar ele alınmaktadır. Makale içerisinde süper blok işlemleri, aşağı seviyeli disk cache işlemleri, dizin girişi işlemleri ve inode işlemleri gözden geçirilmiştir. Burada ele alınan özet bilgiler makalenin yazıldığı tarihe ilişkindir. Geliştirme aşamasında kaynak kodlar üzerinde sürekli olarak büyük ya da küçük değişikliklerin yapıldığı unutulmamalıdır. 1. GİRİŞ CSD sanal dosya sistemi büyük ölçüde Linux sistemlerinin sanal dosya sistemine benzemektedir. Dosya sistemi grubu çeşitli UNIX türevlerinin sanal dosya mimarilerini incelemiş ve Linux sistemlerine yakın durmayı tercih etmiştir. Gelinen nokta gözönüne alındığında sanal dosya sisteminin tasarım bakımından Linux sistemlerine benzemesi yadırganmamalı ve tedirginlikle karşılanmamalıdır. Bilindiği gibi Linux sistemleri de ilk biçiminden bu yana diğer UNIX sistemlerinden oldukça büyük alıntılar yapmış, belli bir aşamadan sonra bazı özgün yaklaşımlar geliştirebilmiştir. CSD Dosya Sistemi Grubu da geliştirmenin sonraki evrelerinde özgün yenilikler yapma isteğindedir. [V: 1] 2. DOSYA SİSTEMİNE İLİŞKİN TEMEL VERİ YAPILARI CSD dosya sisteminin desteklediği tüm dosya sistemleri FILE_SYSTEM_TYPE yapılarından oluşan bir bağlı listede tutulmaktadır. Bağlı listeye elemanlar sistemin başlatılması sırasında eklenmektedir. CSD dosya sisteminde en temel işlem diğer sistemlerde olduğu gibi mount işlemidir. Mount işlemi sırasında mount edilen dosya sistemine ilişkin bilgiler çeşitli veri yapılarında biraraya getirilmektedir. Mount işlemi SYS_LINUX_mount sistem fonksiyonu tarafından yapılmaktadır: int SYS_LINUX_mount(PSTR pszdevname, PSTR pszmountdir, PSTR pszfsname, DWORD dwflags, PVOID pdata); Fonksiyonun çağırma şeması şöyledir: 1
2 SYS_LINUX_mount domount readsuperblock addsuperblock addmountedfs Mount işlemi sırasında mount edilen dosya sistemi addmountedfs fonksiyonu tarafından MOUNTED_FILE_SYSTEM türünden bir bağlı listeye, süper blok bilgileri de addsuperblock fonksiyonu tarafından SUPER_BLOCK türünden bağlı listeye yazılmaktadır. gs_mountedfs MFS MFS MFS MFS slink slink slink slink slinksbmounts slinksbmounts slinksbmounts slinksbmounts gs_superblocks SB SB SB dlink dlink dlink dlinkfssb dlinkfssb dlinkfssb dlistmounts dlistmounts dlistmounts gs_fstype FST FST slink slink MFS = MOUNTED_FILE_SYSTEM dlistfssb dlistfssb SB = SUPER_BLOCK FST = FILE_SYSTEM_TYPE Bir dosya sistemi birden fazla yere mount edilebilir. Yukarıdaki şekilden de görüldüğü gibi SUPER_BLOCK yapısının dlistmounts elemanı ilgili süper bloğun nerelere mount edildiğini belirlemek için kullanılan bir bağlı listedir. Benzer biçimde bir dosya sistemine ilişkin birden fazla volume söz konusu olabilir. FILE_SYSTEM_TYPE yapısının dlistfssb elemanı o dosya sistemine ilişkin SUPER_BLOCK nesnelerini tutan bağlı listedir. MOUNTED_FILE_SYSTEM listesinin ilk elemanı gs_mountedfs tarafından, SUPER_BLOCK listesinin ilk elemanı gs_superblocks tarafından, FILE_SYSTEM_TYPE yapısının ilk elemanı da gs_fstype tarafından tutulmaktadır. 2
3 SYS_LINUX_mount fonksiyonunun parametresi aygıt dosyasının yol ifadesidir. Fonksiyon önce yol ifadesinden hareketle aygıt dosyasının i-node bilgilerini elde eder. Erişim için gereken aygıt numarası i-node bilgilerinin içerisindedir. Bu işlemden sonra eğer aygıtın süper bloğu SUPER_BLOCK listesinde yoksa yeni bir SUPER_BLOCK nesnesi oluşturulmakta, eğer varsa eski SUPER_BLOCK nesnesi kullanılmaktadır. Aygıt dosyasından elde edilen aygıt numaraları pek çok veri yapısına da aktarılmaktadır. SUPER_BLOCK mount edilen fiziksel birime ilişkin parametrik bilgilerin tutulduğu bir veri yapısıdır. Örneğin aygıtın fiziksel adresi, aygıtın blok sayısı, blokların sektör uzunluğu gibi temel tüm parametrik bilgiler SUPER_BLOCK yapısında tutulmaktadır. Disk üzerinde gerçek okuma, yazma işlemlerinin hareket noktası SUPER_BLOCK yapısıdır. SUPER_BLOCK nesnesi FAT ve VFAT dosya sistemlerinde boot sektör BPB blgilerinden, UNIX/LINUX dosya sistemlerinde ise diskteki süper block bilgilerinden oluşturulmaktadır. 2. DİLİMLİ TAHSİSAT SİSTEMİ Dilimli tahsisat sistemi (slab allocator) ilk kez 1994 yılında Solaris 2.4 ile birlikte uygulamaya geçirilmiştir. Linux sistemleri de 2.2 uyarlamasıyla birlikte dilimli tahsisat sistemini kullanmaya başlamıştır. CSD İşletim Sisteminin çekidek yapısı içerisinde dilimli tahsisat sistemi yoğun olarak kullanılmaktadır. Dilimli tahsisat sistemi küçük nesnelerin tahsis edilmesi işlemlerinde yavaş tahisat fonksiyonlarını az çağırmak için oluşturulmuş bir cache sistemidir. Bu sisteme göre bir nesne dilimli tahsisat fonksiyonu ile tahsis edilmeye çalışıldığında dilimli tahsisat fonksiyonu bir grup nesne kadar alanı (yani bir dilimlik alanı) tahsis eder. Sonraki tahsisatlar için hızlı bir biçimde daha önce tahsis edilmiş olan dilimlerden yer verilir. Dilimli tahsisat fonksiyonları şunlardır: HCACHE CreateCache(PCSTR pszname, DWORD dwobjects, DWORD dwobjectsize); PVOID AllocObject(HCACHE hcache); void FreeObject(HCACHE hcache, PVOID pblock); CreateCache fonksiyonu kullanılacak dilim sisteminin ismini, başlangıçta tahsis edilecek nesne sayısını ve bir nesnenin byte uzunluğunu parametre olarak alır ve tahsisat işleminde kullanılacak handle değeri ile geri döner. Fonksiyon ikinci parametresinden hareketle başlangıçta kaç dilimin gerektiğini hesaplar ve bu dilimleri tahsis eder. AllocObject dilimden nesne veren fonksiyondur. Tahsis edilen alan FreeObject fonksiyonu ile serbest bırakılır. FreeObject fonksiyonu tüm dilim boşaltılmışsa dilimi işletim sistemine geri verir. CSD dilimli tahsisat sisteminde nesne uzunluğu ne olursa olsun bir dilim SLAB_SIZE (512) kadar nesne içermektedir. Örneğin: HACAHE hdirentrycache; PDIR_ENTR pentry; hdirentrycache = CreateCache("DirEntryCache", 5000, sizeof(dir_entry)); 3
4 ASSERT(hDirEntryCache!= NULL); pentry = (PDIR_ENTRY) AllocObject(hDirEntryCache); ASSERT(pEntry!= NULL); Bu durumda CreateCache başlangıçta 10 dilim tahsis edecektir (5000 / 512 yukarı doğru yuvarlanmıştır.) Dilimli tahsisat sisteminde dilimler işletim sisteminin çekirdek heap alanından tahsisat yapan AllocMem sistem fonksiyonu ile tahsis edilmektedir. Nesne Tahsisat İşlemleri Dilimli Tahsisat Sistemi Çekirdek Heap Sistemi Sayfa Tablosu Düzeyinde Tahsisat İşlemleri 3. AŞAĞI SEVİYELİ DİSK CACHE SİSTEMİ Disk cache sistemi diskten son okunan blokların RAM de tutulmasıyla disk erişimini azaltmayı hedefleyen bir cache sistemdir. Bu sisteme UNIX/LINUX sistemlerinde İnglizce buffer cache denilmektedir. Disk cache sisteminin büyüklüğüne sistemdeki RAM miktarına bakılarak dinamik bir biçimde karar verilir. Disk cache sisteminin -iyi uygulandığı taktirde- disk erişimini %70 lerin üzerinde azalttığı (cache hit ratio) bilinmektedir. Bu nedenle disk cache sistemi dosya sisteminin performansını belirlemede kritik öneme sahiptir. Linux disk cache sistemi Maurice J. Bach ın ünlü Design of the UNIX Operating System kitabında açıklanan modelden alınmıştır. CSD İşletim Sisteminde de bu model kullanılmaktadır. Disk cache sistemi bağlı listeli bir hash tablosu olarak düzenlenmiştir. Hash tablosu BUFFER_HEAD bağlı listelerininin başlangıç adreslerinin tutulduğu bir dizi biçimindedir. DLIST_HEADER gs_hashtable[hash_table_size]; Cache teki her blok için bir BUFFER_HEAD nesnesi vardır. Bloğun tüm bilgileri bu nesnede tutulur: 4
5 typedef struct tagbuffer_head { KDEV kdev; DWORD dwblock; DWORD dwblocksize; DWORD dwstatus; DWORD dwlruindex; DWORD dwsector; BYTE *pblock; DLIST_NODE dlink; DLIST_NODE dlinkfree; } BUFFER_HEAD, *PBUFFER_HEAD; Görüldüğü gibi yapının içerisinde söz konusu bloğun uzuluğu, hangi aygıtın hangi bloğu olduğu gibi önemli bilgiler bulunmaktadır. Yapının pblock gösterici elemanı bloğun yerini, dwblocksize elemanı ise uzunluğunu tutar. BUFFER_HEAD nesnelerinin tuttukları bloklar farklı büyüklükte olabilmektedir. Fakat blok uzunluğu işlemcinin desteklediği sayfa uzunluğundan (örneğin Intel işlemcilerinde 4K) büyük olamaz. Cache sisteminin şekilsel gösterimi aşağıda verilmiştir: DLIST_HEADER gs_hashtable[hash_table_size]; BUFFER_HEAD... dwblock pblock Diskteki Blok Numarası dwblocksize... BUFFER_HEAD... dwblock pblock dwblocksize... Diskteki Blok Numarası RAM de tutulan disk bloğu RAM de tutulan disk bloğu 5
6 BUFFER_HEAD nesnelerinden oluşan hash tablosu bir bağlı liste dizisi biçimindedir. Bloğun cache içerisinde aranması için aygıt numarası ve blok numarası kullanılarak bir dizi indeksi elde edilir. Dizinin bu indeksli elemanı üzerinde doğrusal arama yapılır. Bloklar getblock fonksiyonu tarafından cache te aranır: PRIVATE PBUFFER_HEAD getblock(kdev kdev, DWORD dwblock, DWORD dwblocksize) Fonksiyon: 1) Önce istenen blok cache te var mı diye bakar. İstenen blok cache te varsa onun BUFFER_HEAD adresiyle geri döner. 2) Eğer istenen blok cache te yoksa yeni bir BUFFER_HEAD oluşturur. Onu cache e yerleştirir ve cache e yerleştirmiş olduğu BUFFER_HEAD nesnesinin adresiyle geri döner. getblock okuma işleminin kendisini yapmaz. getblock fonksiyonunun çağırma şeması şöyledir: getblock getbuffercachehash updatelru additemlists deleteitemfreelist putbuffercache getbuffercachehash additemlru setbufferclean fillfreelist additemfreelist initbufferhead getblock fonksiyonunun anlaşılmasında iki önemli nokta vardır: 1) Cache e yerleştirilecek BUFFER_HEAD nesnesinin tahsis edilmesi 2) BUFFER_HEAD nesnesinin kullandığı bloğun tahsis edilmesi Tahsisat işlemlerinin hızlı yapılabilmesi için bloğu tahsis edilmiş olan fakat diğer bilgileri geçersiz olan BUFFER_HEAD nesneleri özel bağlı listelerde saklanır. Bu bağlı listelere boş blok listeleri (free block lists) denilmektedir. Her blok büyüklüğü için toplam NR_FREE_LIST (4) kadar boş blok listesi vardır. 6
7 DLIST_HEADER gs_freelist[nr_free_list]; gs_freelist[0] BH BH BH gs_freelist[1] BH BH BH BH BH BH gs_freelist[2] gs_freelist[3] BH BH BH Boş blok listelerindeki BUFFER_HEAD nesneleri ve onların blokları tahsis edilmiştir. Fakat BUFFER_HEAD nesnesinin ve onun tuttuğu bloğun içeriği boştur. Bir boş blok listesi elemanını oluşturabilmek için hem bir BUFFER_HEAD nesnesine hem de tampon (buffer) olarak kullanılacak bloğa gereksinim vardır. Boş bağlı listede eleman kalmadığında ona eleman doldurmak için fillfreelist fonksiyonu çağrılmaktadır. fillfreelist fonksiyonu o bağlı listeye Sayfa uzunluğu / Block uzunluğu kadar eleman ekler. Bu fonksiyon getblock içerisinden çağrılmaktadır. fillfreelist fonksiyonunun çağırma şeması şöyledir: fillfreelist AllocPage createbuffers getunusedbufferhead AllocObject additemfreelist fillfreelist fonksiyonu boş bağlı listeye eleman ekleyebilmek için BUFFER_HEAD nesnesi elde etmeye çalışır. BUFFER_HEAD nesneleri normal olarak dilimli tahsisat sisteminden alınmaktadır. Ancak dilimli tahsisat sistemine daha az başvurmak için kullanılmayan BUFFER_HEAD nesneleri kullanılmayan nesne listesi (unused list) denilen bir bağlı listede tıutulur. fillfreelist fonksiyonu BUFFER_HEAD nesnesini önce getunusedbufferhead fonksiyonu ile buradan almaya çalışır. Kullanılmayan nesne listesinde hiç BUFFER_HEAD nesnesi kalmamışsa nesne gerçekten AllocObject dilimli tahsisat fonksiyonuyla tahsis edilir. Her blok büyüklüğü için ayrı bir boş bağlı listenin kullanıldığını görüyorsunuz. Böylece bir blok gerektiğinde onun aranması daha hızlı yapılabilmetedir. 7
8 fillfreelist fonksiyonu bloklar için gerekli olan tampon RAM alanlarını doğrudan AllocPage fonksiyonunu çağırarak sayfa düzeyinde tahsis eder. getblock(...) Blok cache te var mı? Hayır fillfreelist(...) AllocPage(...) Boş bağlı listeden elemanı al ve cache e yerleştir Evet Bloğu cache ten al Kullanılmayan nesne listesinde BUFFER_HEAD var mı? Evet Hayır AllocObject(...) Sistemin blok okuması yapan ana fonksiyonu ReadBlock fonksiyonudur. ReadBlock önce getblock fonksiyonunu çağırarak cache e bakar. Eğer cache te blok bulunamazsa gerçek disk okuması için ReadWriteBlock fonksiyonunu kullanır. ReadWriteBlock fonksiyonu blok aygıt sürücüsünün teemel bir fonksiyonudur. Burada ele alınmayacaktır. ReadBlock fonksiyonunun çağırma şeması şöyledir: ReadBlock getblock ReadWriteBlock Disk cache sistemi hem okuma hem de yazma amaçlı kullanılmaktadır. Yani yazma işlemi sırasında da eğer blok cache te ise yazma cache e yapılmaktadır. Cache teki blokların tazelenmesi arka planda çalışan çekirdeğe ilişkin bir thread tarafından yapılacaktır. Disk cache sisteminde kullanılan son veri yapısı LRU listesidir. Bu liste cache teki blokların en az işlem görenlerini tespit etmek amacıyla kullanılır. Cache teki bir blok üzerinde işlem yapıldığında bu bloğa ilişkin BUFFER_HEAD nesnesi LRU listesinin en önüne alınır. Böylece listenin sonunda her zaman az kullanılanlar kalır. Disk cache sisteminden eleman çıkartılacağı zaman en az kullanılan bloklar cache ten atılmaktadır. Aşağı seviyeli disk cache sisteminde kullanılan veri yapıları isimleriyle şunlardır: 1. BUFFER_HEAD bağlı listelerinin başlangıç adreslerlerini tutan hash tablosu: PRIVATE DLIST_HEADER gs_hashtable[bufcache_hash_table_size]; 8
9 2. BUFFER_HEAD nesnelerinin tahsis edilmesinde kullanılan dilimli tahsisat sistemi: PRIVATE HCACHE gs_hbufheadcache; 3. Bloğu tahsis edilmiş BUFFER_HEAD nesnelerinden oluşan boş bağlı listeler: PRIVATEDLIST_HEADER gs_dlistfree[bufcache_nr_free_list]; 4. Kullanılmayan BUFFER_HEAD nesnelerinin saklı olduğu kullanılmayan nesne listesi: PRIVATE DEFINE_DLIST(gs_dlistUnused); 5. Cache teki ve kullanılmayan nesne listesindeki eleman sayılarını tutan değişkenler: PRIVATE int gs_ninusebufheads; PRIVATE int gs_nunusedbufheads; Aşağı seviyeli disk cache sistemindeki alt sistemlerin amaçları da aşağıda özetlenmiştir: Genel Disk Cache Sistemi: Diskte erişilen son blokları RAM de bir cache içerisinde saklayarak disk erişimini azaltır. Böylece sistemin hızlı çalışmasını sağlar. İşletim sisteminin hızı bakımından kritik öneme sahip bir sistemdir. Dilimli Tahsisat Sistemi: İşletim sisteminin tahsisat fonksiyonları yavaştır. Bu nedenle küçük nesneler için sistemin tahsisat fonksiyonlarını ikide bir çağırmak etkin bir yöntem değildir. Bunun yerine işletim sisteminin tahsisat fonksiyonları ile büyük dilimler tahsis edip sonra o dilimlerin içerisinden hızlı bir biçimde nesneleri verme yöntemi tercih edilir. Amaç işletim sisteminin yavaş çalışan tahsisat fonksiyonlarını daha az çağırmaktır. Hash Tablosu: Erişilmeye çalışılan bir bloğun disk cache sistemi içerisinde olup olmadığının hızlı bir biçimde tespit edilmesi için kullanılır. Eğer blok cache te varsa doğrudan alınır. Blok cache te yoksa aygıt okumasyla blok aygıttan alınarak hash tablosuna yerleştirilir. Boş Blok Listeleri: Cache ten çıkartılan bloklar hemen serbest bırakılmaz. Boş blok listelerine alınarak orada bekletilir. Böylece yeni bir disk bloğu için yeniden RAM alanı tahsis edilmemiş olur. Boş blok listelerinde bulunan bir RAM bloğu yeni disk bloğu için kullanılır. (Tabii cache ten çıkartılan her blok boş blok listesinde biriktirilmez bunun bir sayısı vardır. Yani boş blok listesinde maksimum sayı kadar blok zaten varsa yeni bloklar listeye yazılmadan doğrudan sisteme iade edilir) Kullanılmayan Nesne Listesi: Bu liste BUFFER_HEAD nesneleri için cache olarak kullanılır. Yani kullanılmayan BUFFER_HEAD nesneleri bu listeye alınır. Böylece dilimli tahsisat sisteminden yapılan tahsisatlar azaltılmış olur. Bu listedeki nesnelerin blokları tahsis edilmemiştir. 9
10 4. YOL İFADESİNİN ÇÖZÜMLENMESİ VE DİZİN GİRİŞLERİNE İLİŞKİN CACHE SİSTEMİ Dosya işlemlerinin programcı bakımından başlangıç noktası dosyanın hangi dizinde ve hangi isimde olduğunu gösteren yol ifadesi (path name) dir. Dosya üzerinde işlem yapan pek çok sistem fonksiyonu (open, stat, mkdir, chdir, ) dosyayı tespit edebilmek için dosyanın yol ifadesini parametre olarak almaktadır. Yol ifadesini parametre olarak alan sistem fonksiyonları ilk iş olarak bu yol ifadesinden hareketle dosyanın temel bilgilerine ulaşmaya çalışırlar. Dosyanın temel bilgileri POSIX sistemlerinde i-node yapısıyla temsil edilmektedir. Verilen bir yol ifadesinden hareketle yol ifadesinin sonunda belirtilen dosyanın i-node bilgilerine erişilmesi sürecine yol ifadesinin çözümlenmesi (pathname resolution) denilmektedir. (Yol ifadesi terimi hem dosyalar için hem de dizinler için kullanılan bir kavramdır. Dizinler ve dosyalar arasında bunların ele alınma biçimleri bakımından bir fark bulunmamaktadır.) Yol ifadelerinin çözümlenmesi özyinelemeli (recursive) bir işlemdir. Çözümleme sırasında yol ifadesini oluşturan her bir yol bileşeni üzerinden teker teker geçilmek zorundadır. Çünkü her yol bileşenine ilişkin i- node bilgisi önceki bileşen ile belirtilen dizin içerisindedir. Örneğin, /home/osdev/test.c gibi bir yol ifadesinin çözümlenmesi sırasında önce kök dizinin i-node bilgilerinden home dizininin i- node bilgileri, home dizininin i-node bilgilerinden osdev dizininin i-node bilgileri, osdev dizininin i-node bilgilerinden de nihayet test.c dosyasının i-node bilgileri elde edilir. CSD dosya sisteminde yol bileşenlerine dizin girişi (directory entry) de denilmektedir. Dizin girişi bilgileri DIR_ENTRY yapısıyla temsil edilmektedir. typedef struct tagdir_entry *PDIR_ENTRY; typedef struct tagdir_entry { DWORD dwcount; DWORD dwflags; PINODE pinode; PDIR_ENTRY pparententry; DLIST_NODE dlinkhash; DLIST_NODE dlinklru; DLIST_NODE dlinkalias; DLIST_NODE dlinksibling; DLIST_HEADER dlistsubentry; PSUPER_BLOCK psb; PDIR_ENTRY_OPERATIONS pops; ENTRY_NAME entryname; char shortentryname[dentry_short_name_size]; } DIR_ENTRY; Bir dosyaya ilişkin dizin girişi bilgileri ve i-node bilgileri aslında disk üzerinde tutulan bilgilerdir. Yol ifadelerinin çözümlenmesi sırasında yol ifadelerini oluşturan dizin girişi ve i-node bilgileri diskten belleğe alınmak zorundadır. Yani yol ifadesinin çözümlenmesi işlemi aslında yol ifadesinin sonunda bulunan dosyaya ilişkin i-node bilgilerinin diskten belleğe çekilmesi işlemidir. Yol ifadelerinin çözümlenmesi daha etkin bir hale nasıl getirilebilir? Şüphesiz ilk düşünülecek yöntem bir cache sistemi kurmaktır. Böylece, bir dosyanın bilgilerine erişilirken geçilen yollara ilişkin tüm bileşenlerin dizin girişi bilgileri ve i-node bilgileri bir cache sisteminde tutulursa, ayn ı dosyalara erişildiği durumda işlemin hızlanacağı açıktır. Bu nedenle modern işletim sistemlerinde hem dizin girişleri hem de i-node elemaları için ayrı cache sistemleri kullanılmaktadır. CSD 10
11 işletim sisteminde de (tıpkı Linux sistemlerinde olduğu gibi) dizin girişleri ve i-node bilgileri bu nesnelere özgü cache sistemlerinde saklanır. CSD dosya sisteminin dizin girişlerinin cache sisteminde şu veri yapıları kullanılmaktadır: 1. DIR_ENTRY türünden bağlı listelerin başlangıç adreslerinin tutulduğu bir hash tablosu: PRIVATE DLIST_HEADER gs_direntryhashtable[dentry_hash_table_size]; 2. En az kullanılan ve kullanılmayan DIR_ENTRY nesnelerinin tespit edilmesini sağlayan bir LRU bağlı listesi: PRIVATE DEFINE_DLIST(gs_dlistLRU); 3. Bir i-node a ilişkin link bilgilerini tutan bir eş giriş bağlı listesi. Bu listenin ilk elemanı i-node nesnesi içerisindedir: DLIST_HEADER dlistdirentry; /* INODE yap ısının elemanıdır */ 4. Cache teki ve kullanılmayan nesne listesindeki eleman sayınısı tutan değişkenler: PRIVATE int gs_ninuseentries; PRIVATE int gs_nunusedentries; DIR_ENTRY nesnesinin kaç kişi tarafından kullanıldığını gösteren bir dwcount elemanı vardır. Sayacı sıfıra düşen DIR_ENTRY nesnesi hash tablosundan çıkarılmaz; yalnızca LRU listesinin sonuna alınır. LRU listesinde sayacı sıfıra düşmüş olan yani kullanılmayan kaç tane DIR_ENTRY nesnesi olduğu gs_nunusedentries değişkeninde tutulmaktadır. Kullanılan DIR_ENTRY nesneleri bağlı listede öne alınır. Böylece en çok kullanılanlar önde en az kullanılanlar ve hiç kullanılmayanlar arkada kalır. Bir i-node elemanına ilişkin birden fazla DIR_ENTRY nesnesi bulunabilir. Bunlar da başlangıcı i-node nesnesinde fakat linkleri DIR_ENTRY içerisinde olan eş giriş listelerinde saklanırlar. Dizin girişlerine ilişkin cache sistemi i-node cache sisteminin kontrol merkezidir. I-node cache sistemine elemanlar DIR_ENTRY işlemleriyle alınırlar. Yani ne zaman bir yol ifadesi kullanılsa bu yol ifadesindeki dizin girişleri dizin girişi cache sistemine, i-node elemanları ise i-node cache sistemine alınmaktadır Her dizin girişi için i-node cache sistemi içerisinde bir i-node nesnesi vardır. CSD dosya sisteminde yol ifadelerinin çözümlenmesi LookupDirEntry fonksiyonu tarafından yapılmaktadır: PDIR_ENTRY LookupDirEntry(PCSTR ppathname, PDIR_ENTRY pbaseentry, DWORD dwlookupflags) 11
12 Fonksiyon çözümlenecek yol ifadesini (ppathname), arama işleminin başlatılacağı dizini (pbaseentry) ve arama planını belirten bayrakları parametre olarak alır. Başarılıysa ilgili girişin DIR_ENTRY adresiyle, başarısızsa NULL adresiyle geri döner. Fonksiyon dizin girişini önce cache te arar. Eğer cache te bulamazsa aygıttan okuyarak onu cache e yerleştirir. Birkaç durum söz konusudur: 1. Eğer ppathname mutlak yol ifadesi ve pbaseentry de NULL ise pbaseentry process in kök dizinine çekilir. Böylece arama işlemi kök dizininden itibaren yapılır. 2. Eğer ppathname mutlak yol ifadesi ve pbaseentry de NULL ise pbaseentry ile belirtilen girişin sayacı bir artırılır ve pbaseentry process in root dizinine çekilir. Yani yukarıdaki durumda olduğu gibi arama yine kök dizininden itibaren yapılacaktır. 3. ppathname göreli yol ifadesi ve pbaseentry de NULL ise pbaseentry process in çalışma dizinine çekilir. Böylece arama işlemi çalışma dizininden itibaren yapılır. 4. ppathname göreli yol ifadesi ve pbaseentry de NULL değilse pbaseentry olduğu gibi bırakılır. Yani arama işlemi pbaseentry ile belirtilen dizinden itibaren yapılır. Fonksiyonun çağırma şeması şöyledir: LookupDirEntry checkpermission (permission) lookupreservedentries (lookup_dentry) GetDirEntryCache (cached_lookup) GetDevDirEntry (real_lookup) allocdirentry (d_alloc) checkpermission her yol bileşeninin erişim iznini denetler. lookupreservedentries yol bileşeninin. ve.. gibi ayrılmış (reserved) isimler olup olmadığına bakar. GetDirEntryCache bileşeni cahe te aramaktadır. Bu fonksiyon ya bileşeni cache te bulur ya da bulamaz. Bileşen cache te bulunamadıysa aygıttan çekilecektir. Bunun için GetDevDirEntry fonksiyonu kullanılır. GetDevDirEntry bir DIR_ENTRY nesnesi tahsis eder ve aygıttan okunan bilgileri DIR_ENTRY cache içerisinde saklar. GetDevDirEntry fonksiyonu aygıttan yol bileşeni için DIR_ENTRY bilgilerini alarak dizin girişi cache sistemine yerleştirir. Bu işlem sırasında aynı zamanda DIR_ENTRY nesnesine ilişkin i-node bilgileri de i-node cache sistemine çekilir. PDIR_ENTRY GetDevDirEntry(PDIR_ENTRY pparententry, PCENTRY_NAME pentryname) Fonksiyon üst dizinin DIR_ENTRY adresini ve elde edilecek dizin girişinin ismini alır. GetDevDirEntry fonksiyonunun çağırma şeması şöyledir: GetCacheDirEntry allocdirentry pparentinode->pops->pflookup putdirentrycache PutInodeCache 12
13 allocdirentry yeni bir DIR_ENTRY nesnesini dilimli tahsisat sistemini kullanarak yaratır ve nesnenin bazı elemanlarını doldurur. Aygıttan DIR_ENTRY ve INODE nesnelerinin okunması tamamen INODE yapısına ilişkin pflookup sanal fonksiyonu tarafından yapılmaktadır. pflookup fonksiyonunun parametrik yapısı şöyledir: PDIR_ENTRY (*pflookup)(pcinode, PCDIR_ENTRY); Fonksiyon üst dizinin INODE nesne adresini ve bu dizinde aranacak olan bileşenin DIR_DENTRY nesne adresini parametre olarak alır. pflookup sanal fonksiyonu elde ettiği DIR_ENTRY nesnesini PutDirEntryCache ile dizin girişlerine ilişkin cache sistemi içerisine, PutInodeCache ile de i-node cache içerisine yerleştirir. 5. I-NODE CACHE SİSTEMİ Dosyalar üzerinde işlem yapılmadan önce onlara ilişkin bilgiler INODE yapısı ile temsil edilerek belleğe çekilmektedir. Belleğe çekilen i-node bilgileri etkinliği artırmak amacıyla bir cache sistemi içerisinde saklanır. Bu cache sistemine i-node cache denilmektedir. I-node cache sistemi aşağıdaki veri yapılarından oluşur: 1. INODE elemanlarını içeren bağlı listelerin başlangıç adreslerini tutan bir hash tablosu: PRIVATE DLIST_HEADER gs_inodehashtable[inode_hash_table_size]; 2. INODE nesnelerinin tahsis edildiği bir dilimli tahsisat sistemi: PRIVATE HCACHE gs_hinodecache; 3. En az kullanılan ve kullanılmayan i-node elemanlarının tutulduğu bir LRU listesi: PRIVATE DEFINE_DLIST(gs_dlistLRU); 4. Cache teki ve kullanılmayan nesne listesindeki eleman sayısını tutan değişkenler: PRIVATE int gs_ninuseinodes; PRIVATE int gs_nunusedinodes; I-node cache içerisinde getinodecache fonksiyonu ile arama yapılır. Bu fonksiyon hash fonksiyonuyla elde edilen indeksteki bağlı listeyi dolaşarak istenen i-node elemanının cache içerisinde olup olmadığına bakar. Yeni bir i-node nesnesine gereksinim duyulduğunda bu nesne allocinode fonksiyonu tarafından tahsis edilmektedir. allocinode nesneyi önce LRU listesinin sonundaki kullanılmayan elemanlardan elde etmeye çalışır. Eğer bunu başaramazsa tahsisat dilimli tahsisat sistemine ilişkin AllocObject fonksiyonu tarafından yapılmaktadır: 13
14 AlloInode GetUnuesInode AllocObject I-node cache sistemine eleman PutInodeCache fonksiyonuyla eklenmektedir. 14
SANAL DOSYA SİSTEMİ. Fatih YILDIRIM
SANAL DOSYA SİSTEMİ Fatih YILDIRIM [V : 1] Özet: Bu makalede Sanal Dosya Sistemi nin genel mimarisi incelenmektedir. Sanal Dosya Sistemi nin genel fikirleri verildikten sonra Linux taki mimarisi kullanılan
DetaylıBLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)
BLM-112 PROGRAMLAMA DİLLERİ II Ders-3 İşaretçiler (Pointer) (Kısım-2) Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Dinamik Bellek Yönetimi Bir program çalıştırıldığında
DetaylıHEAP SİSTEMİ. Oğuz Karan
HEAP SİSTEMİ Oğuz Karan Özet: Bu makalede heap sistemi hakkında bilgiler verilmiş ve çeşitli sistemlerde heap sisteminin aşağı seviyeli çalışması anlatılmıştır. Ayrıca son bölümde CSD işletim sisteminin
DetaylıBLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)
1 BLM 112- Programlama Dilleri II Hafta 5 İşaretçiler (Pointers) Dr. Öğr. Üyesi Caner Özcan Hiç hata yapmayan insan, hiçbir şey yapmayan insandır. Ve hayatta en büyük hata, kendini hatasız sanmaktır. ~Y.
DetaylıYrd. Doç. Dr. Caner ÖZCAN
Yrd. Doç. Dr. Caner ÖZCAN Diziler ile Pointer Arası İlişki Bir dizi adı sabit bir pointer gibi düşünülebilir. Diziler ile pointer lar yakından ilişkilidir. Pointer lar değişkenleri gösterdikleri gibi,
DetaylıLinux işletim sistemlerinde dosya hiyerarşisinde en üstte bulunan dizindir. Diğer bütün dizinler kök dizinin altında bulunur.
Dosya Sistemi ve Çalışma Mantığı Dosya Sistemi Disk üzerindeki dosyaların düzenlenmesini ve bir işletim sisteminde dosyaların izlerinin bulunmasını sağlayan yapıya Dosya Sistemi (File System) denir. Linux
DetaylıYrd. Doç. Dr. Caner ÖZCAN
Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonu Referans ile Çağırma (Call by Reference) Bir fonksiyona gönderilen parametrenin normalde değeri değişmez. Fonksiyon içinde yapılan işlemlerin hiçbiri argüman değişkeni
DetaylıÖzyineleme (Recursion)
C PROGRAMLAMA Özyineleme (Recursion) Bir fonksiyonun kendisini çağırarak çözüme gitmesine özyineleme (recursion), böyle çalışan fonksiyonlara da özyinelemeli (recursive) fonksiyonlar denilir. Özyineleme,
DetaylıDOSYA ORGANİZASYONU. Çarpışma çözümleme yöntemleri ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
DOSYA ORGANİZASYONU ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ Çarpışma çözümleme yöntemleri Sunum planı Bağlantıları kullanarak çarpışmaların çözümlenmesi. Coalesced Hashing (Birleştirilmiş
DetaylıTemel Bilgisayar Programlama Final Sınavı Çalışma Notları
Diziler Temel Bilgisayar Programlama Final Sınavı Çalışma Notları (Dr. Övünç ÖZTÜRK, Dr. Tahir Emre KALAYCI) (İnşaat Mühendisliği ve Gıda Mühendisliği Grupları İçin) Diziler aynı türden bilgileri saklamak
DetaylıALGORİTMA VE PROGRAMLAMA II
ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Dosya İşlemleri (Rastgele Erişim)
DetaylıTemel Linux Eğitimi 1., 2. ve 3. Bölümler
Süha TUNA Bilişim Enstitüsü UHeM Yaz Çalıştayı - 11.06.2012 İçerik 1. Linux, Kavramlar ve Dizin Yapısı 2. Temel Linux Komutları 3. Sunucuya Uzaktan Bağlanma 1. Linux, Kavramlar ve Dizin Yapısı Linux Linux,
DetaylıBilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı
Ders 7 LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ 1 LINUX Yapısı LINUX işletim sisteminin diğer işletim sistemleri gibi kendine özgü bir yapısı vardır. LINUX yapısı ve bileşenleri aşağıdaki
DetaylıVERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ
VERİ YAPILARI LİSTELER Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ Bağlı Listeler Aynı kümeye ait veri parçalarının birbirlerine bellek üzerinde, sanal olarak bağlanmasıyla
DetaylıUzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;
DetaylıELN1002 BİLGİSAYAR PROGRAMLAMA 2
ELN1002 BİLGİSAYAR PROGRAMLAMA 2 VERİ YAPILARI Sunu Planı Kendini-gösteren Yapılar Dinamik Bellek Tahsisi Bağlı Listeler Yığınlar Kuyruklar Ağaçlar 1 Veri Yapıları Şu ana kadar, diziler, matrisler ve yapılar
DetaylıMaster boot record (MBR)
DİSK ve FAT Cluster büyüklükleri fat yapısına ve disk büyüklüğüne bağlıdır. Aşağıdaki tabloda FAT16 dosya sistemi için disk size larına göre cluster büyüklükleri verilmiştir. Disk size (partition büyüklüğü)
DetaylıVeri Yapıları Laboratuvarı
2013 2014 Veri Yapıları Laboratuvarı Ders Sorumlusu: Yrd. Doç. Dr. Hakan KUTUCU Lab. Sorumlusu: Arş. Gör. Caner ÖZCAN İÇİNDEKİLER Uygulama 1: Diziler ve İşaretçiler, Dinamik Bellek Ayırma... 4 1.1. Amaç
DetaylıDosyaların Özellikleri (Attribute) Dosya İşlemleri. İki Seviyeli Katalog Sistemleri. Tek Seviyeli Katalog Sistemleri. Hiyerarşik Katalog Sistemleri
Bilgilerin Uzun Vadeli Saklanması 8 DOSYA SİSTEMS STEMİ saklanacak veriler çok fazla olabilir veriler proses sonlandıktan sonra da kaybolmamalı bilgiye prosesler ortak olarak ulaşabilmeli 424 Dosya Sistemi
DetaylıWindows Eski Sürümleri Bellek Yapısı
Windows Eski Sürümleri Bellek Yapısı -Intel 8086/8088 mimarili işlemciler//640k RAM -Segment Modeli(Segmented Model) -Her segment 64K uzunluğunda -Intel 80286,640K dan daha fazla RAM i destekledi -Windows
DetaylıLİNUX. Dosyalar ve dizinler
LİNUX Dosyalar ve dizinler Dosya sistemi Linux işletim sisteminde de dosya ve dizinler diğer Unix türevi işletim sistemlerinde olduğu gibi hiyerarşik yapıya sahiptir. En üst düzeyde olan kök dizini olarak
DetaylıDİSK DEPOLAMA ALANLARI
DİSK DEPOLAMA ALANLARI 1. Giriş İşlemci hızı ve hafıza kapasitesinin disk hızından çok daha hızlı bir gelişim içinde bulunduğu göz önüne alınırsa, disk kullanımında teorik ilgi ve uygulamanın önemliliği
DetaylıDosya, disk üzerinde depolanmış verilerin bütününe verilen isimdir. İşletim sistemi genel olarak iki çeşit dosya içerir.
2 Dosya Nedir? Dosya, disk üzerinde depolanmış verilerin bütününe verilen isimdir. İşletim sistemi genel olarak iki çeşit dosya içerir. Birincisi, bir sistem görevi yerine getirirken yada bir uygulama
DetaylıPointer Kavramı. Veri Yapıları
Pointer Kavramı Veri Yapıları Pointer Kavramı- Pointer Nedir? Göstericiler, işaretçiler ya da pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi tutan değişkenlerdir. Şu ana kadar
DetaylıAlgoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi
Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması Ağaç, verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyararşik yapıya sahip
DetaylıBİLGİ İŞLEM DERS 1. Yrd Doç Dr. Ferhat ÖZOK MSGSU FİZİK BÖLÜMÜ MSGSU FİZİK BÖLÜMÜ
BİLGİ İŞLEM MSGSU FİZİK BÖLÜMÜ DERS 1 Yrd Doç Dr. Ferhat ÖZOK MSGSU FİZİK BÖLÜMÜ İŞLETİM SİSTEMİ OS(Operating System) İşletim sistemi temel olarak, belli girdileri alıp derleyen ve sonuçları üreten program
DetaylıYeni G/Ç (new I/O) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 1
Yeni G/Ç (new I/O) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 1 YENİ G/Ç (NEW I/O) Yeni G/Ç (nio) paketi içerisindeki sınıfları kullanarak dosya işlemleri (okuma/yazma) ve ağ üzerinden
DetaylıYAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta
YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ 3. Hafta YAPILAR Farklı veri tipindeki bilgilerin bir araya gelerek oluşturdukları topluluklara yapı (structure) denir. Yani yapılar, birbiriyle ilişkili değişkenlerin
DetaylıGöstericiler (Pointers)
C PROGRAMLAMA Göstericiler (Pointers) C programlama dilinin en güçlü özelliklerinden biridir. Göstericiler, işaretçiler yada pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi
DetaylıBilgilerin Uzun Vadeli Saklanması
8 DOSYA SİSTEMS STEMİ Bilgilerin Uzun Vadeli Saklanması saklanacak veriler çok fazla olabilir veriler proses sonlandıktan sonra da kaybolmamalı bilgiye prosesler ortak olarak ulaşabilmeli 424 Dosya Sistemi
DetaylıC++ Dersi: Nesne Tabanlı Programlama 2. Baskı
C++ Dersi: Nesne Tabanlı Programlama 2. Baskı ³ Bölüm 19: Standart Şablon Kütüphanesi (vector) İçerik 19.1 Standart Şablon Kütüphanesi (STL) 19.2 vector SınıK 19.3 vectortanımı 19.4 vector Elemanlarına
DetaylıDosya Saklama Ortamları (Sabit Diskler) Kütük Organizasyonu 1
Dosya Saklama Ortamları (Sabit Diskler) Kütük Organizasyonu 1 Depolama Aygıtları 1- Birincil Depolama Aygıtları Hızlı Erişim Süresine Sahiptirler Fiyatı daha fazladır. Daha küçük kapasiye sahiptir 2. İkincil
DetaylıVeri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:
Veri Yapıları Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz İçindekiler: Giriş Temel Veri Yapıları Tanımlamalı Veri Yapıları Veri Modeli ve Türleri
DetaylıLinux Dosya ve Dizin Yapısı
Linux Dosya ve Dizin Yapısı Dosya ve Dizin Sistemi Linux te kök dizin (/) sembolü ile ifade edilir. Windowsta kök dizin C: ise Linux ta / sembolüdür. 1 Kök dizini (/) İşletim Sisteminin çalışabilmesi için
Detaylıİşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü
İşletim Sistemleri Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Bu dersin sunumları, Abraham Silberschatz, Greg Gagne, Peter B. Galvin, Operating System Concepts 9/e, Wiley,
Detaylıİşletim Sistemlerine Giriş
İşletim Sistemlerine Giriş İşletim Sistemleri ve Donanım İşletim Sistemlerine Giriş/ Ders01 1 İşletim Sistemi? Yazılım olmadan bir bilgisayar METAL yığınıdır. Yazılım bilgiyi saklayabilir, işleyebilir
DetaylıBLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA
BLM-112 PROGRAMLAMA DİLLERİ II Ders-8 Dosya İşlemleri-1 Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Giriş Değişken ve dizilerde tutulan değerler programın çalışması
DetaylıFiziksel Veritabanı Modelleme
Fiziksel Veritabanı Modelleme Fiziksel Veritabanı VTYS, verileri yan bellekte tutar. Bu yüzden VTYS lerde sıklıkla READ (yan bellekten okuma) ve WRITE (yan belleğe yazma) işlemi meydana gelir. READ ve
DetaylıUzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Kapsülleme (Erişim Denetleyiciler) Java da Sınıf Oluşturmak Java da Nesne Oluşturmak Java da Constructor Kavramı Java da This Kavramı Java da Constructor
DetaylıKonular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI
BLG339 PROGRAMLAMA DİLLERİ KAVRAMI Hafta 5 Veri Tipleri (Devam) Yrd. Doç. Dr. Melike Şah Direkoğlu Konular Dizi Tipleri Kayıt Tipleri Birleşik Tipler Küme Tipleri İşaretçi ve Referans Tipleri Alındığı
DetaylıBTP 205 İŞLETİM SİSTEMLERİ
BTP 205 İŞLETİM SİSTEMLERİ DOSYA SİSTEMİ Dr. Önder EYECİOĞLU 2012 DOSYA SİSTEMİ 1. Dosya Kavramı: 1. Dosya Özellikleri 2. Dosya Türleri 3. Dosya Operasyonları 4. Dosya Yapısı 5. Dahili Dosya Yapısı 2.
DetaylıProses. Prosesler 2. İşletim Sistemleri
2 PROSESLER Proses Bir işlevi gerçeklemek üzere ardışıl bir program parçasının yürütülmesiyle ortaya çıkan işlemler dizisi Programın koşmakta olan hali Aynı programa ilişkinbirdenfazlaprosesolabilir. Görev
DetaylıTemel Veri Yapıları. (Veri Yapıları 1. Bölüm)
Temel Veri Yapıları (Veri Yapıları 1. Bölüm) Kaan Aslan 10 Haziran 2013 1. Giriş Programlarımızda tanımladığımız nesneler ya tek parçadan ya da birden fazla parçadan oluşurlar. Tek parçadan oluşan nesnelerin
DetaylıWilliam Stallings Computer Organization and Architecture 9 th Edition
William Stallings Computer Organization and Architecture 9 th Edition Bölüm 4 Cache Bellek Bilgisayar Hafıza Sisteminin Ana Karakteristikleri Table 4.1 Key Characteristics of Computer Memory Systems Bilgisayar
DetaylıELN1001 BİLGİSAYAR PROGRAMLAMA I
ELN1001 BİLGİSAYAR PROGRAMLAMA I DEPOLAMA SINIFLARI DEĞİŞKEN MENZİLLERİ YİNELEMELİ FONKSİYONLAR Depolama Sınıfları Tanıtıcılar için şu ana kadar görülmüş olan özellikler: Ad Tip Boyut Değer Bunlara ilave
DetaylıAPI(Application Programming Interface) Fonksiyonları:
API(Application Programming Interface) Fonksiyonları: Bir işletim sisteminin çalışırken kendisinin kullandığı, programcının da dışarıdan çağırabileceği fonksiyonları vardır. Bunlara sistem fonksiyonları
DetaylıBölüm 10. Altprogramların gerçeklenmesi ISBN 0-0-321-49362-1
Bölüm 10 Altprogramların gerçeklenmesi ISBN 0-0-321-49362-1 10. Bölüm konuları Çağırma / geri dönme semantiği Yığıt-dinamik yerel değişkeni olan altprogramların gerçeklenmesi İçiçe altprogramlar Statik
DetaylıPROSESLER. Proses. Proses
Proses 2 PROSESLER Bir işlevi gerçeklemek üzere ardışıl bir program parçasının yürütülmesiyle ortaya çıkan işlemler dizisi Programın koşmakta olan hali Aynı programa ilişkin birden fazla proses olabilir.
DetaylıYrd. Doç. Dr. Caner ÖZCAN
Yrd. Doç. Dr. Caner ÖZCAN malloc Malloc fonksiyonu bir değişken için hafızadan bir blok yer ayrılması için kullanılır. Eğer hafızada yeterli alan yoksa fonksiyon NULL döndürür. int *ptr; ptr = (int *)
DetaylıALGORİTMA VE PROGRAMLAMA I
ALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Diziler Dizi Nedir? Dizilerin Bildirimi
DetaylıALGORİTMA VE PROGRAMLAMA II
ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Yapılar ve Birlikler enum Deyimi
DetaylıAlgoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi
Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları Veri yapısı, bilginin anlamlı sırada bellekte veya disk, çubuk bellek gibi saklama birimlerinde tutulması veya saklanması şeklini gösterir. Bilgisayar
DetaylıHSancak Nesne Tabanlı Programlama I Ders Notları
DİZİLER Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların isimleri ortaktır. Elemanlar
DetaylıAlgoritma Geliştirme ve Veri Yapıları 7 Liste ve Bağlantılı Liste. Mustafa Kemal Üniversitesi
Algoritma Geliştirme ve Veri Yapıları 7 Liste ve Bağlantılı Liste Liste birbiriyle ilişkili verileri içeren bir kümedir, programlama açısından liste en basitinden bir dizi üzerinde tutulur. Dizi elemanları
DetaylıVERİ YAPILARI VE PROGRAMLAMA
VERİ YAPILARI VE PROGRAMLAMA (BIP116) Yazar: Doç.Dr.İ.Hakkı.Cedimoğlu SAKARYA ÜNİVERSİTESİ Adapazarı Meslek Yüksekokulu Bu ders içeriğinin basım, yayım ve satış hakları Sakarya Üniversitesi ne aittir.
DetaylıLinux ta komutlar hakkında yardım almak için aşağıdaki komutlar kullanılır : - man - info - whatis - apropos
Yardım Komutları Linux ta komutlar hakkında yardım almak için aşağıdaki komutlar kullanılır : - man - info - whatis - apropos Yardım Komutları man komut Parametre olarak aldığı komut hakkında bilgiyi ekranda
DetaylıAynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)...
Array (Diziler) Array Aynı tipten çok sayıda değişken topluluğudur. Birden fazla aynı tipteki değerle işlem yapmayı kolaylaştırır. X Y Score1 Score2 40 56 Grade 40 56 80 (0) (1) (2)... (13) Array tanımlama:
DetaylıCSD İŞLETİM SİSTEMİNDE SİSTEM FONKSİYONLARININ ÇAĞIRILMASI
CSD İŞLETİM SİSTEMİNDE SİSTEM FONKSİYONLARININ ÇAĞIRILMASI 07.07.2003 Burak DEMİRKOL Atılım BOY [v 1.0] Özet : Bu makalede CSD İşletim sisteminin sistem fonksiyonlarının user mod dan (ring 3) kernel mod
DetaylıYrd. Doç. Dr. Caner ÖZCAN
Yrd. Doç. Dr. Caner ÖZCAN GİRİŞ Değişken ve dizilerde tutulan değerler programın çalışması esnasında değerlerini korurlarken programın çalışması sona erdiğinde veri kaybolur. Dosyalar verinin kalıcı olarak
Detaylısayi=3 harf=a reelsayi=8.72 Bellek durumu 5. İşaretç iler (pointers)
5. İşaretç iler (pointers) C dilinin öyle bir özelliği vardır ki, programlama dilleri arasında kendisini diğerlerinden ayıran bir fark olarak sunulur: işaretçiler. Aslında, bazı diğer dillerde de direkt
DetaylıBLG 312 Bilgisayar İşletim Sistemleri 2006 BLG 312. Bilgilerin Uzun Vadeli Saklanması. Dosya Sistemi Görevleri. Dosya Sistemi Özellikleri
Bilgilerin Uzun Vadeli Saklanması Bilgisayar İşletim Sistemleri BLG 312 Dosya Sistemi saklanacak veriler çok fazla olabilir veriler proses sonlandıktan sonra da kaybolmamalı bilgiye prosesler ortak olarak
DetaylıELN1002 BİLGİSAYAR PROGRAMLAMA 2
ELN1002 BİLGİSAYAR PROGRAMLAMA 2 DOSYALAMA Sunu Planı Veri Hiyerarşisi Dosyalar ve Akımlar(streams) Sıralı Erişim (Sequential Access) dosyalarının oluşturulması Sıralı Erişim Dosyalarından Veri Okuma Rasgele
DetaylıDosyalarda Farklı Yaklaşımlar. Kütük Organizasyonu 1
Dosyalarda Farklı Yaklaşımlar Kütük Organizasyonu 1 Giriş Şimdiye kadar öğrendiğimiz temel dosyalama komutlarıyla (fopen,flclose, fputs vb..) dosya oluşturabilmekte, kayıt ekleyebilmekte ve her bir kaydın
DetaylıHarddisk Disk Sabit diskler üstüste yerleştirilmiş plakalardan (platter) oluşmaktadır. Plakaların her iki yüzeyinde okuma/yazma için okuma yazma kafaları (read-write heads) monte edilmiştir. R/W kafaları
DetaylıLinux altında komut satırında...
-Kabuk (Shell) Unix ve benzeri işletim sistemlerinde kullanıcının komut yazmasını sağlayan, bu komutları yorumlayarak gerekli işlemleri yapan programlara kabuk (shell) adı verilir. Linux da bir kullanıcı
Detaylıİşletim Sistemleri (Operating Systems)
İşletim Sistemleri (Operating Systems) 1 İşletim Sistemleri (Operating Systems) Genel bilgiler Ders kitabı: Tanenbaum & Bo, Modern Operating Systems:4th ed., Prentice-Hall, Inc. 2013 Operating System Concepts,
DetaylıProgramlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1
Programlama Dilleri C Dili Programlama Dilleri-ders08/ 1 Yapısal Veri Tipleri C dili genişletilebilen bir dildir. Var olan veri tipleri kullanılarak yeni veri tipleri tanımlanıp kullanılabilir. Programlama
DetaylıCSD-OS İşletim Sistemi Projesi - Fonksiyon Açıklama Standardı
CSD-OS İşletim Sistemi Projesi - Fonksiyon Açıklama Standardı C ve Sistem Programcıları Derneği Kasım 2002 İçindekiler: 1 -GIRIŞ 3 1.1.NEDEN STANDARTLARA IHTIYACIMIZ VAR? 3 2 -İMLA VE YAZIM 3 2.1.TÜRKÇE
DetaylıALGORİTMA VE PROGRAMLAMA I
ALGORİTMA VE PROGRAMLAMA I YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Diziler Dizi Nedir? Dizilerin Bildirimi Dizilere Başlangıç Değeri Verme Dizilerde Arama
DetaylıMalloc () ve Free() fonksiyonları
Malloc () ve Free() fonksiyonları Malloc() sınıfı büyük bir buffer (yığın) bellek tutar. Kullanıcı ne kadar yer tahsisinde bulunursa malloc() o kadar yer açmaktadır sistemde.eger buffer bellekte kullanıcının
DetaylıPointers (İşaretçiler)
Pointers (İşaretçiler) Pointers (İşaretçiler) Verilerin bilgisayar hafızasında tutulduğu fiziki alan adres olarak tanımlanabilir. Adres, hem donanımla hem de yazılımla ile ilişkilidir. Donanımsal açıdan
DetaylıBLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA
BLM-111 PROGRAMLAMA DİLLERİ I Ders-12 Fonksiyonlar Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı
DetaylıSistem Programlama. Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir.
Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir. Kesmeler çağırılma kaynaklarına göre 3 kısma ayrılırlar: Yazılım kesmeleri Donanım
DetaylıStruct VE GÖSTERİCİLER FONKSİYONLARDA STRUCT KULLANIMI Programlama dilleri hafta -
BİLECİK ŞEYH EDEBALİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ Struct VE GÖSTERİCİLER FONKSİYONLARDA STRUCT KULLANIMI Programlama dilleri 1-14. hafta - Araş. Gör. Nesibe YALÇIN
DetaylıHESAP MAKİNASI YAPIMI
HESAP MAKİNASI YAPIMI 1..Aşağıdakine benzer görünüm ve butonları hazırlayın. 2. 24. Butonun içerisine aşağıdaki kodları yazın. 3. Yeni bir layer ekleyip Frame1 F9 na aşağıdaki kodları ekleyelim. 4. Butonlardan
DetaylıDr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net
Bilgisayar Programlama Ders 9 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Dizileri Fonksiyonlara Dizileri Fonksiyonlara Bir dizi argümanını fonksiyon içinde bir değer olarak kullanabilmek
DetaylıWindows'da çalışırken pek çok durumda bir işe başlamadan önce işletim sisteminin o işe ilişkin bilgileri depolayacağı bir alan yaratması gerekir.
Handel Kavramı: Windows'da çalışırken pek çok durumda bir işe başlamadan önce işletim sisteminin o işe ilişkin bilgileri depolayacağı bir alan yaratması gerekir. Alanın yaratıldığı bölge Windows'un kendi
DetaylıElbistan Meslek Yüksek Okulu GÜZ Yarıyılı Kas Salı, Çarşamba Öğr. Gör. Murat KEÇECİOĞLU
Elbistan Meslek Yüksek Okulu 2012 2013 GÜZ Yarıyılı 13-14 Kas. 2012 Salı, Çarşamba Öğr. Gör. Murat KEÇECİOĞLU Address Resulation Protokol Adres Çözümleme Protokolüdür. IP Adresi Donanım Adresi (MAC) Address
Detaylıİşletim Sistemi. BTEP205 - İşletim Sistemleri
İşletim Sistemi 2 İşletim sistemi (Operating System-OS), bilgisayar kullanıcısı ile bilgisayarı oluşturan donanım arasındaki iletişimi sağlayan ve uygulama programlarını çalıştırmaktan sorumlu olan sistem
DetaylıBölüm 8: Ana Bellek. Operating System Concepts with Java 8 th Edition
Bölüm 8: Ana Bellek 8.1 Silberschatz, Galvin and Gagne 2009 Bölüm 8: Ana Bellek Arka Plan Bilgisi Yer Değiştirme (Swapping) Bitişik Bellek Yerleşimi (Contiguous Memory Allocation) Sayfalama (Paging) Sayfa
DetaylıELN1002 BİLGİSAYAR PROGRAMLAMA 2
ELN1002 BİLGİSAYAR PROGRAMLAMA 2 DOSYALAMA Sunu Planı Rasgele Erişim (Random Access) Dosyaları Rasgele Erişim Dosyalarına Veri Yazma Rasgele Erişim Dosyalarından Veri Okuma 1 Sıralı Erişim Dosyası Bir
Detaylıİşletim Sistemlerine Giriş
İşletim Sistemlerine Giriş Girdi/Çıktı (I/O) İşletim Sistemlerine Giriş - Ders11 1 Girdi/Çıktı (I/O) İşletim sisteminin temel fonksiyonlarından biride bilgisayardaki tüm I/O aygıtlarını kontrol etmesidir.
DetaylıKütük Yönetimi. Kütük Yönetim Sisteminin İşlevleri. Hacettepe Üniversitesi Kavramsal Kütük Modeli.
Kütük Yönetim Sisteminin İşlevleri Kütük Yönetimi Ahmet Burak Can Hacettepe Üniversitesi abc@cs.hacettepe.edu.tr Mantıksal kütük yapılarından fiziksel yapılara geçişin sağlanması Kütük başına göreli mantıksal
Detaylıİşletim Sistemleri. Dr. Binnur Kurt binnur.kurt@gmail.com. Omega Eğitim ve Danışmanlık http://www.omegaegitim.com. İşletim Sistemleri
İşletim Sistemleri Dr. Binnur Kurt binnur.kurt@gmail.com Omega Eğitim ve Danışmanlık http://www.omegaegitim.com 1 S a y f a İÇİNDEKİLER 1. İşletim Sistemi 2. Kabuk 3. Prosesler 4. İplikler 5. İplikler
Detaylıİşletim Sistemlerine Giriş
İşletim Sistemlerine Giriş Bellek Yönetimi (Memory Management) İşletim Sistemlerine Giriş - Ders10_02 1 Yazılım ile LRU Benzetimi Donanım kullanmadan LRU algoritmasının yazılım ile gerçekleştirimidir.
DetaylıMulticore/Multithread Programlama
Multicore/Multithread Programlama Onur Tolga Şehitoğlu Bilgisayar Mühendisliği 7 Şubat 2008 Başlıklar 1 Gereksinimi Dal ile Süreç Çok İşlemci ve Dal Modelleri Neden Çoklu Dal Programlama? 2 Çok İşlemci/Çok
DetaylıGenel Programlama II
Genel Programlama II 22.03.2011 1 Yapılar ( Structures ) Yapılar ( structures ); tam sayı, karakter vb. veri tiplerini gruplayıp, tek bir çatı altında toplar. Bu gruplandırma içinde aynı ya da farklı veri
DetaylıDOSYA NEDİR? Verilerin HDD de saklanması. Verilerin HDD de saklanması DOSYA SİSTEMİ NEDİR?
DOSYA NEDİR? Dosya;disk üzerinde depolanmış verilerin bütününe verilen isimlendirmedir. İşletim sistemi tipik olarak iki çeşit dosya içerir. Birincisi; bir sistem görevi yerine getirirken yada bir uygulama
Detaylıİşletim Sistemlerine Giriş
İşletim Sistemlerine Giriş Süreçler ve İş Parçacıkları(Thread) İşletim Sistemlerine Giriş - Ders03 1 Süreç -Tüm modern bilgisayarlarda bir çok iş aynı anda yapılabilir. *kullanıcı programları çalışır *disk
DetaylıAlgoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri. Mustafa Kemal Üniversitesi
Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri Veri modelleri, veriler arasında ilişkisel ve sırasal düzeni gösteren kavramsal tanımlardır. Her program en azından bir veri modeline dayanır. Uygun
DetaylıALGORİTMA VE PROGRAMLAMA II
ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Bellek ve Adresleme Dinamik Bellek
DetaylıKütük Yönetimi. Kütük Yönetim Sisteminin İşlevleri. Hacettepe Üniversitesi abc@cs.hacettepe.edu.tr. Kavramsal Kütük Modeli.
Kütük Yönetim Sisteminin İşlevleri Kütük Yönetimi Ahmet Burak Can Hacettepe Üniversitesi abc@cs.hacettepe.edu.tr Mantıksal kütük yapılarından fiziksel yapılara geçişin sağlanması Kütük başına göreli mantıksal
DetaylıBilgisayar İşletim Sistemleri BLG 312
Prosesler Bilgisayar İşletim Sistemleri BLG 312 Prosesler ve Proses Yönetimi bilgisayar sisteminde birden fazla iş aynı anda etkin olabilir kullanıcı programı diskten okuma işlemi yazıcıdan çıkış alma
DetaylıYZM VERİ YAPILARI DERS#9: HASH FONKSİYONLARI
YZM 2116- VERİ YAPILARI DERS#9: HASH FONKSİYONLARI İÇERİK Bu bölümde, Giriş Hash Tabloları Hash Fonksiyonu Çakışma (Collision) Ayrık Zincirleme Çözümü Linear Probing Çözümü Quadratic Probing Çözümü konusuna
DetaylıÖnemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance
Önemli noktalar Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance public class Test { // çalışır İnsan insan = new Çiçekçi();
DetaylıMühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler
Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler C Programlama Dr. Serkan DİŞLİTAŞ 3.1. Sabitler Sabitler, tanımlanmasıyla birlikte program içerisinde
Detaylı8. İŞARETCİLER (POINTERS)
8. İŞARETCİLER (POINTERS) Verilerin bilgisayar hafızasında tutulduğu fiziki alan adres olarak tanımlanabilir. Adres, hem donanımla hem de yazılımla ilişkilidir. Donanımsal açıdan adres bellekte yer gösteren
DetaylıBİH 605 Bilgi Teknolojisi Bahar Dönemi 2015
BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015 Ders- 8 Dosya Sistemleri ve Dizinler Yrd. Doç. Dr. Burcu Can Buğlalılar Bilgisayar Mühendisliği Bölümü Bilgisayar Katmanları İçerik Dosya, dosya sistemi ve dizin
DetaylıALGORİTMA VE PROGRAMLAMA II
ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Bellek ve Adresleme İşaretçi Kavramı
DetaylıJval tipi. Genel veri yapılarını kullanacağımız zaman Jval den faydalanırız.önemli olanlar aşağıda mevcuttur:
Jval tipi /blugreen/homes/plank/cs360/include/jval.h içerisinde bir Jval tipi tanımlanmıştır.büyük bir union yapısı aşağıdadır: typedef union { int i; long l; double d; void *v; char *s; char c; unsigned
Detaylı