HEAP SİSTEMİ. Oğuz Karan
|
|
- Ilker Başaran
- 6 yıl önce
- İzleme sayısı:
Transkript
1 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 heap sisteminde kullanılan yapılar ve sistem fonksiyonlarının aşağı seviyeli çalışma biçimleri üzerinde durulmuştur. [V: 1] 1. GİRİŞ Bir programın çalışma zamanı sırasında bellekte ardışıl(sürekli) olarak belli büyüklükte yer tahsis etmesine ve istediğinde geri bırakmasına imkan sağlayan işlemlere dinamik bellek işlemleri, tahsis etme işlemine ise dinamik bellek tahsisatı denir. Dinamik bellek tahsisatı hemen hemen tüm büyük programların çalışma zamanı sırasında ihtiyaca göre kullanılmaktadır. Standart C kütüphanesinde dinamik tahsisat için kullanılan fonksiyonlar mevcuttur. Bunun yanında derleyicilerin de dinamik tahsisat işlemlerini gerçekleştiren kendi oluşturdukları çeşitli fonksiyonlar olabilir. Her ne şekilde olursa olsun bu fonksiyonlar dinamik tahsisatlar için işletim sistemine başvururlar. Yani bu fonksiyonlar kendi içlerinde işletim sisteminin kendi sistem fonksiyonlarını kullanarak dinamik tahsisat işlemini gerçekleştirirler. Dinamik bellek fonksiyonlarının tahsisat işlemini gerçekleştirdileri bellek bölgelerine heap denir. İşletim sistemleri bir processi belleğe yüklediğinde, bu process için heap alanını çeşitli biçimlerde oluştururlar. Heap oluşturulma işlemi sistemler arasında farklılık gösterebilir. 2. PROCESS LERİN HEAP ALANLARI HAKKINDA GENEL BİLGİLER 2.1 Dos İşletim Sisteminde Processlerin Heap Alanları DOS.com ve.exe dosyalarını belleğe yüklemek için o andaki tüm boş belleği tahsis eder. Program yüklenirken ya da derleyicinin oluşturduğu başlangıç kodu tarafından yapılan bu tahsisatlarda DOS un INT 21h, Function:48h,ve INT 21h, Funtion:49h kesmeleri kullanılır. Standart C kütüphanesinin dinamik tahsisat işlemini gerçekleştiren malloc ve diğer fonksiyonlar tahsis edilmiş bellek bölgelerini kendi içlerinde bir tabloda tutarlar. DOS zaten tüm boş alanı tahsis ettiğinden tutulan bu tablo yaterlidir. DOS tek işlemli(singleprocessing) bir işletim sistemi olduğundan bir program bellekteyken diğer program bellekte olamaz. 2.2 Win32 Sistemlerinde Processlerin Heap Alanları Win32 sistemlerinin heap yapısı bir processin birden çok heap i olabilecek biçiminde tasarlanmıştır. Yani tahsis edilebilecek olan tüm boş bölgeler tek bir heap biçiminde değil birden çok heap oluşturulabilecek biçimde organize edilmiştir. Ayrıca Win32 sistemlerinde bir process CreateProcess API fonksiyonu ile yaratıldığında processin varsayılan (default) bir heap alanı vardır. Yaratılan heap bölgeleri işletim sistemi tarafından bir bağlı listede tutulmaktadır. Her bir heap içerisinde boş bölgeler dört farklı bağlı listede tutulur. Bu bağlı listelerin herbiri farklı 1
2 uzunlukta boş bölgeleri tutar. Böylece yapılacak tahsisat uzunluğuna göre uygun bağlı liste bulunarak tahsisat gerçekleştirilebilir. Bu teknik ile bellek bölünmesi en aza indirilmiştir. Win32 sistemlerinin heap sistemi için bir diğer özelliği heap bölgesinin otomatik olarak büyüyebilmesidir. Bu işlem heap bölgesi yaratılırken belirlenebilmektedir. Heap bölgesinin büyütülebilmesi için oluşturulan yeni alanlara altheap (subheap) denmektedir. Buna göre bir processin heap durumu aşağıdaki gibidir. Heap alanı Heap alanı Processin varsayılan heap i Alt heap Alt heap Processin default heap i eğer derleyicinin seçeneklerinden ayarlanmamışsa 1MB ile sınırlıdır. Win32 sistemlerinde bir heap bölgesi başlık kısmı ile başlamaktadır. Bu başlık kısmında heap alanını uzunluğu, boş alanların tutulacağı veri yapısı türünden dizi, kritik kod nesnesi ve diğer değişkenler gibi heap alanına ilişkin çeşitli kritik bilgiler bulunmaktadır. Tabii buradaki elamanların bir kısmı kontrol amaçlı olup yalnızca debug versiyonunda kullanılacak biçimde organize edilmiştir. Başlık kısmından hemen sonra heap blokları gelmektedir. Bu heap blokları da debug versiyonunda farklılık göstermektedir. Bu durumda heap alanının görünümü aşağıdaki gibi olur. Heap Alanının Başlık Kısmı Heap Bölgesi 2
3 Win32 Sistemlerinde Heap Alanının Başlık Kısmı Win32 sistemlerinde yeni bir heap alanı HeapCreate API fonksiyonu ile yaratılmaktadır. Ayrıca process in varsayılan heap i de bulunmaktadır. Process in ihtiyacı olan dinamik tahsisatlar HeapCreate veya GetProcessHeap fonksiyonlarından elde edilen handle değerleri kullanılarak işletim sisteminin tahsisat fonksiyonları ile yapılmaktadır. Heap handle değeri heap alanının başlık kısmını gösteren adrestir. Heap alanının başlık kısmına ilişkin yapının elemanları debug versiyonunda farklılık gösterebilir. Ancak genel olarak biçimi aynıdır. DWORD dwsize: Heap üzerindeki tahsisat yapılacak bölgenin uzunluğudur. Process in default heap i için bu uzunluk 1MB dir. Bu eleman tüm versiyonlarda bulunmaktadır. DWORD nextblock: İşletim sistemi heap bölgesi otomatik büyüyebilecek biçimde yaratılmışsa (yani HeapCreate fonksiyonunun son parametresi 0 (sıfır) olarak girilmişse) yaratılan alt heapleri bir bağlı listede tutar. Bu bağlı listenin bir sonraki elemanı bu değişkende saklanmaktadır. Bu eleman tüm versiyonlarda bulunmaktadır. FREE_LIST_HEADER_RETAIL/FREE_LIST_HEADER_DEBUG freelistarray[4]: Bu dizi boş bağlı listeleri belirtir. Bu dizi elemanları boyutu 20h den küçük, 80h den küçük, 200h den küçük ve FFFFFFFFh den küçük blokların listesini ifade etmektedir. Buna göre tahsis edilmek istenen boyuta göre uygun bağlı liste bulunarak arama yapılır. FREE_LIST_HEADER_DEBUG yapısı debug versiyonu için kullanılmaktadır. PVOID nextheap: Bu eleman processin yaratılan diğer heap alanını göstermektedir. Tüm versiyonlarda kullanılmaktadır. HCRITICAL_SECTION hcriticalsection: Heap e erişimde kernel tarafından oluşturulan ve heap fonksiyonlarının senkronizasyon amaçlı kullandıkları kritik bölgenin hendle değeridir. Tüm versiyonlarda kullanılmaktadır. CRITICAL_SECTION criticalsection: Heap alanı için senkronizasyon amaçlı kullanılmaktadır. Kritik koda girildiğinde kernel EnterCriticalSection fonksiyonu ile bu elemanı kullanarak senkronizasyonu sağlamaktadır. Senkronizasyon istenip istenmeyeceği heap yaratılırken ya da heap üzerinde tahsisat durumunda belirlenebilmektedir. Bu eleman tüm versiyonlarda kullanılmaktadır. DWORD unknown1[14]: Bu elemanın ne olduğu bilinmemektedir. Tüm versiyonlarda kullanılmaktadır. DWORD creatingeip: Heap yaratılıken heap i oluşturan HPInit kernel fonksiyonun EIP yazmacının değerini tutmaktadır. Sadece debug versiyonunda kullanılmaktadır. DWORD checksum: Heap in durumunu kontrol için kullanılır. dwsize elamanını XOR lanmış değeri bulunur. Sadece debug versiyonunda kullanılmaktadır. WORD creatingthreadnumber: Heap i yaratan threadin numarasını tutmaktadır. Sadece debug versiyonunda kullanılmaktadır. WORD unknown2: Bu elemanın da ne olduğu bilinmemektedir. Sadece debug versiyonunda kullanılmaktadır. BYTE flags: Heap alanı HeapCreate fonksiyonu ile yaratılırken heap in durumunu belirleyen bit bit anlamlı değerleri tutar. Tüm versiyonlarda kullanılmaktadır. BYTE unknown3: Bu elemanın da ne olduğu tam olarak bilinmemektedir. Tüm versiyonlarda kullanılmaktadır. WORD signature: Bu eleman heap in hangi heap olduğunu belirlemekte kullanılmaktadır. Tüm versiyonlarda bulunur. 3
4 Win32 Sistemlerinde Heap Bölgesi Heap yaratıldığında başlık kısmından hemen sonraki bölüm olan heap bölgesi dinamik tahsisatların yapıldığı bölgedir. Bu bölgede tahsis edilmiş bloklar ve boş bloklar bulunmaktadır. Bilindiği gibi boş bloklar 4 farklı bağlı liste ile tutulmaktadır Tahsis edilmiş(in-use) Bloklara İlişkin Yapının Elemanları Tahsis edilmiş bloklara ilişkin yapının elemanları debug versiyonunda farklı olabilmektedir. DWORD size: Tahsis edilen bloğun uzunluğunu gösteren elemandır. Tüm versiyonlarda bulunur. DWORD allocating EIP: Bloğun tahsis edildiği yani HeapAlloc veya HeapRealloc fonksiyonlarının çağrıldığı kodun offset değerini (program adresini) tutar. Sadece debug versiyonunda bulunur. WORD threadnumber: Alanı tahsis eden threadin numarasını tutmaktadır. Sadece Debug versiyonunda kullanılır. WORD signature: Bloğun tahsis edilmiş olup olmadığını gösterir. Tahsis edilmiş bloklar için 0x4842 özel değeri kullanılır. Sadece debug versiyonunda bulunur. DWORD checksum: Diğer elemanların checksum değerini tutar. Yapıda bir bozulma olup olmadığının kontrolü için yalnızca debug versiyonunda bulunur Boş (free) Bloklara İlişkin Yapının Elemanları Boş bloklara ilişkin yapının elemanları da debug versiyonunda farklı elemanlar içermektedir. DWORD size: Boş bloğun uzunluğunu gösteren elemandır. Tüm versiyonlarda kullanılmaktadır. DWORD prev: Bir önceki boş bloğu göstermektedir. Tüm versiyonlarda kullanılmaktadır. WORD threadnumber: Bu elaman boş bloklar için 0xFEFE özel değerini alır. Sadece debug versiyonunda bulunmaktadır. WORD signature: Bloğun boş olup olmadığını göstermektedir. Boş bloklar için 0x4846 özel değeri kullanılmaktadır. Sadece debug versiyonunda kullanılmaktadır. DWORD next: Bir sonraki boş bloğu göstermektedir. Tüm versiyonlarda kullanılmaktadır. DWORD checksum: Yapıdaki diğer elemanların checksum değerini tutar. Yapıda bir bozulma olup olmadığının kontrolü için yalnızca debug versiyonunda bulunur. 2.3 UNIX/LINUX SİSTEMLERİNDE PROCESSLERİN HEAP ALANLARI UNIX/LINUX sistemlerinin genelinde bir process belleğe yüklendiğinde ilgili processin bellek alanı aşağıdaki gibidir..text.data.bss HEAP STACK.stack 4
5 Görüldüğü gibi heap için.stack ile.bss arasında belirli bir bölge ayrılmaktadır. Tahsisat işlemleri tahsisat yapan fonksiyonlar tarafından bu bölgede gerçekleştirilir. Tahsisat yapan fonksiyonlar kendi içlerinde sistem fonksiyonu olan sbrk fonksiyonunu çağırırlar. UNIX/LINUX sistemlerinde de boş olan bloklar bir bağlı listede tutulur. Boş blokların herbirinde bloğun uzunluğu ve bir sonraki bloğun adresi tutulur. Bağlı listenin son elemanı olan blok en baştaki bloğu gösterir. Böylece boş bloklar döngüsel bir bağlı liste ile tutulmuş olur. Buna göre UNIX/LINUX sistemlerinde heap aşağıdaki gibi bir görünümdedir. HEAP Boş Kullanımda Boş Kullanımda Henüz tahsisat yapılmamış Kullanımda Boş Henüz tahsisat yapılmamış Boş Yapılacak tahsisatlar için çeşitli algoritmalar kullanılmaktadır. Bunlardan biri first fit algoritmasıdır. Bu algoritmaya göre tahsisat durumunda yeterince büyük ilk blok bulunduğunda tahsisat yapılır. Diğer bir algoritma ise best fit algoritmasıdır. Bu algoritmaya göre tahsisat için gereken alanın en uygunu aranır. Bulunan blok istenen uzunluktaysa bu blok bağlı listeden çıkartılır. Bulunan blok istenen uzunluktan büyükse istenen uzunluk kadarı alınır. Geri kalan kısım bağlı listeye eklenir. Eğer herhangi bir alan bulunamıyorsa henüz tahsisat yapılmamış alanlardan tahsisat işlemi gerçekleştirilir. 5
6 3. CSD İŞLETİM SİSTEMİNİN HEAP YAPISI CSD işletim sisteminin heap yapısı birden çok heap oluşturulabilecek biçimde tasarlanmıştır. Bu sisteme göre bir process bir heap yarattığında bir sistem fonksiyonu yardımıyla bir handle alanı ve bu handle alanına ilişkin bir heap alanı tahsis edilecektir ve fonksiyon heap alanının adresi ile geri dönecektir. Bu durumda bir heap içerisinde tahsisat işlemi tahsisat yapan sistem fonksiyonuna heap alanının adresi geçirilerek yapılacaktır. CSD işletim sisteminde bir process için yaratılan heap alanları sistem tarafından bir bağlı listede tutulacaktır. Her bir heap alanı içerisinde boş bölgeler boyutlarına göre 4 farklı bağlı listede tutulacaktır. Bu durum bellek bölünmesini azaltması ve istenen alanın daha hızlı bir biçimde tahsis edilebilmesi için tasarlanmıştır. Ayrıca her bir processin yaratıldığında varsayılan heap denilen bir heap i de bulunacaktır. Bu heap alanı, process i yaratan sistem fonksiyonu tarafından yaratılacaktır. Bunun yanı sıra bir process için derleyicinin başlangıç kodu tarafından yaratılan ve standart C fonksiyonlarının tahsisatları için gereken heap de bulunacaktır. Bu sistemde heap otomatik olarak büyüyebilecek şekilde yaratılabilecektir. Bu şekilde yaratılıp yaratılmayacağı heap yaratan sistem fonksiyonunda belirlenecektir. Bu şekilde yaratılmış olan heaplerde başlangıçta belirlenmiş olan bölgenin büyütülmesi için yaratılan ek alanlara altheap (subheap) denilmektedir. Altheap uzunluğu istenen bellek boyutundan daha büyük tahsis edilecektir. Tahsis edilen altheap lerde kendi içlerinde bağlı listede tutulacaktır. Bu durumda sistem fonksiyonu tarafından yaratılan heap alanı aşağıdaki gibi olacaktır. Heap Header Heap bölgesi Görüldüğü gibi CSD işletim sisteminde heap alanı iki bölümden oluşmaktadır. Birinci bölüm heap alanına ilişkin çeşitli kritik bilgileri tutan başlık kısmı, ikinci bölüm ise tahsisat işlemlerinin yapılacağı bölgedir. Heap alanının başlık kısmı tipik olarak bir yapı ile temsil edilmektedir. Boş bloklar da kendi içerisinde iki bölgeye ayrılmaktadır. 3.1 CSD İŞLETİM SİSTEMİNDE BİR PROCESS İN HEAP ORGANİZASYONUNDA KULLANILAN YAPILAR CSD işletim sisteminde bir processin heap organizasyonunda kullanılan bloklar çeşitli yapılarla ilişkilendirilmiştir. Bu yapılar işletim sistemi geliştirilirken heap.h dosyası içerisinde 6
7 bildirilmişlerdir. Bu dosya heap fonksiyonları yazılırken heap.c dosyasında include edilerek kullanılacaktır tagfree_node YAPISI Bu yapı boş blokları temsil eden yapıdır. Aşağıdaki gibi bildirilmiştir. typedef tagfree_node { DWORD dwsize; #ifdef _DEBUG DWORD dwsignature; DWORD dwchecksum; #endif DLIST_NODE dlink; } FREE_NODE, *PFREE_NODE; DWORD dwsize: Bu eleman boş bloğun uzunluğunu tutar. DWORD dwsignature: Bloğun boş blok olup olmadığını gösterir. Sadece debug versiyonu için kullanılan bu eleman 0x4142 özel değeri için bloğun boş blok olduğunu gösterir. Bu özel değer HEAP_FREE_NODE_SIGNATURE sembolik sabiti olarak debug versiyonu için tanımlanmıştır. DWORD dwchecksum: Bu eleman yapının önceki elemanlarının negatif checksum değerini tutar. Kontrol amaçlı olarak debug versiyonunda kullanılmaktadır. DLIST_NODE dlink: Boş alanların tutulduğu bağlı listede bir önceki ve sonraki elemanı gösterir. Bu eleman ile boş blok bağlı listenin elemanı olur tagallocated_block YAPISI Bu yapı tahsis edilmiş blokları temsil eden yapıdır. Aşağıdaki gibi bildirilmiştir. typedef struct tagallocated_block { DWORD dwsize; #ifdef _DEBUG WORD dwsignature; DWORD dwchecksum; #endif } ALLOCATED_BLOCK, *PALLOCATED_BLOCK; DWORD dwsize: Tahsis edilmiş bloğun uzunluğunu tutar. WORD dwsignature: Bloğun tahsis edilmiş blok olup olmadığını gösterir. 0x4143 özel değeri için blok boş bloktur. Bu değer debug versiyonu için HEAP_ALLOCATED_BLOCK_SIGNATURE sembolik sabiti olarak tanımlanmıştır. dwsignature elemanı sadece debug versiyonunda kullanılmaktadır. DWORD dwchecksum: Yapının önceki elemanlarının negatif checksum değerini tutar. Sadece debug versiyonunda kullanılmaktadır. 7
8 3.1.3 FREE_NODE_HEADER YAPISI Boş blokların tutulduğu bağlı listelerin herbiri için başlangıç kısmını temsil eden yapıdır. Aşağıdaki gibi bildirilmiştir. typedef struct tagfree_node_header { DWORD dwmaxsize; DLIST_HEADER dlistfreenode; } FREE_NODE_HEADER, *PFREE_NODE_HEADER; DWORD dwmaxsize: Bağlı listenin hangi bağlı liste olduğunu belirtir. Bu elaman 0x20, 0x80, 0x200 ve 0xFFFFFFFF değerlerinden birisi olabilir. Aranan boş bloğun uzunluğuna göre bu elemana bakılarak hangi bağlı listede aranacağı belirlenir. DLIST_HEADER dlistfreenode: İlgili bağlı listenin ilk ve son elemanını gösteren yapıdır SUBHEAP YAPISI Bu yapı alt heap i temsil eden yapıdır. Aşağıdaki gibi bildirilmiştir. typedef struct tagsubheap { DWORD dwsize; FREE_NODE_HEADER freelist[4]; DLIST_NODE dlink; } SUBHEAP, *PSUBHEAP; DWORD dwsize: Tahsis edilen altheap in uzunluğunu tutar. Subheap in uzunluğu istenen uzunluktan 2MB fazla tahsis edilir. FREE_NODE_HEADER freelist[4]: Altheap e ilişkin boş blokları tutan elemandır. Burada tutulan bağlı listeler sırasıyla 0x20, 0x80, 0x200 ve 0xFFFFFFFF uzunluktan küçük boş bölgeleri tutmaktadır. Yani tahsis edilmek istenen uzunluğa uygun bağlı liste bulunarak tahsisat işlemi gerçekleştirilecektir. DLIST_NODE dlink: Altheaplerin tutulduğu bağlı listede bir sonraki ve bir önceki elemanı gösterir HEAP YAPISI Bu yapı heap alanının başlık kısmını temsil eden yapıdır. Aşağıdaki gibi bildirilmiştir. typedef struct tagheap { DWORD size; FREE_NODE_HEADER freelist[4]; DLIST_HEADER dlistsubheap; WORD wsignature; DWORD dwheapflags; #ifdef _DEBUG DWORD dwchecksum; #endif DLIST_NODE dlink; } HEAP, *PHEAP, *HHEAP 8
9 DWORD dwsize: Bu eleman heap bölgesinin uzunluğunu tutar. FREE_NODE_HEADER freelist[4]: Boş bölgelerin tutulduğu bağlı listeleri temsil eden elemandır. Burada tutulan bağlı listeler sırasıyla 0x20, 0x80, 0x200 ve 0xFFFFFFFF uzunluktan küçük boş bölgeleri tutmaktadır. Yani tahsis edilmek istenen uzunluğa uygun bağlı liste bulunarak tahsisat işlemi gerçekleştirilecektir. DLIST_HEADER dlistsubheap: Heap e ait alt heaplerin tutulduğu bağlı listenin ilk ve son elemanını gösteren başlangıç elemanıdır. WORD wsignature: Bloğun heap e ilişkin olup olmadığını gösterir. 0x41441 özel değeri için bloğun heap e ilişkin olduğunu gösterir. Bu özel değer HEAP_HEADER_SIGNATURE sembolik sabiti olarak tanımlanmıştır. DWORD dwheapflags: Heap e ilişkin ek özelliklerin tutulduğu elemandır. Heap i yaratan CreateHeap sistem fonksiyonunun ikinci parametresinde belirtilen değerle doldurulur. DWORD dwchecksum: Yapının önceki elemanlarının negatif checksum değerini tutar. Sadece debug versiyonunda kullanılmaktadır. DLIST_NODE dlink: Heaplerin tutulduğu bağlı listede bir sonraki ve bir önceki elemanı gösterir. 3.2 CSD İŞLETİM SİSTEMİNİN HEAP SİSTEMİNDE KULLANILAN API(SİSTEM) FONKSİYONLARI CSD işletim sisteminde program geliştirme düzeyinde bir process için heap oluşturulup işlemlerin yapılabilmesi için bir grup API (Sistem) fonksiyonu kullanılacaktır. Programcı heap oluşturmak için ilk önce heap tahsis eden CreatHeap API fonksiyonunu çağıracak ve bu fonksiyondan elde edilen handle değeri ile tahsisat işlemlerini gerçekleştiren diğer sistem fonksiyonlarını kullanacaktır. Tahsis edilen heap i yine handle değerinden hareketle HeapDestroy sistem fonksiyonu ile geri bırakacaktır CreateHeap FONKSİYONU Bu fonksiyon belirlenen uzunlukta heap yaratır. Fonksiyonun prototipi aşağıdaki gibidir. HHEAP CreateHeap(DWORD dwsize, DWORD dwflags); Fonksiyonun birinci parametresi yaratılacak heap in uzunluğudur. Bu parametre 0 (sıfır) olarak girilirse heap otomatik olarak büyüyebilecek biçimde yaratılır. Otomatik olarak büyüyecek heap için ilk yaratıldığındaki varsayılan uzunluk 2MB olarak belirlenmiştir. Bu değer HEAP_DEFAULT_SIZE sembolik sabiti olarak tanımlanmıştır. Fonksiyonun ikinci parametresi heap e ilişkin ek özelliklerin belirlenmesinde kullanılır. Bir takım sembolik sabitler OR lanarak fonksiyona geçirilir. Fonksiyonun geri dönüş değeri yaratılan heap in handle değeridir. Bu değer heap içerisinde tahsisat yapan ve heap i geri bırakan fonksiyonlarda kullanılır. Fonksiyon kendi içerisinde HEAP yapısı ve bu yapının dwsize elemanının toplamı kadar alan tahsis ederek bu alanın başlangıç adresiyle döner. Ayrıca bu heap yapısını processin tüm heap lerinin tutulduğu bağlı listeye ekler. Şüphesiz bu tahsisatlar CreateHeap fonksiyonu içerisinde çekirdek düzeyinde sayfalama işlemini gerçekleştiren sistem fonksiyonları çağrılarak yapılır. 9
10 3.2.2 AllocMem FONKSİYONU Bu fonksiyon handle değeri ile belirlenen heap içerisinde istenilen uzunlukta tahsisat yapmak için kullanılır. Fonksiyonun prototipi aşağıdaki gibidir. PVOID AllocMem(HHEAP hheap, DWORD dwsize, DWORD dwflags); Fonksiyonun birinci parametresi içerisinde tahsisat yapılacak heap in handle değeridir. Bu değer CreateHeap fonksiyonuyla elde edilen handle değeridir. Fonksiyonun ikinci parametresi yapılacak tahsisatın byte uzunluğudur. Fonksiyonun üçüncü parametresi tahsisat yapılan bölgeye ilişkin ek özelliklerin belirlenmesinde kullanılır. Fonksiyon eğer tahsisat yapılabilmişse tahsis edilen bölgenin başlangıç adresine, başarısızsa NULL değerine geri döner. Fonksiyon boş alanları tutan bağlı listelerden ikinci parametresiyle belirtilen uzunluğa uygun olanını bularak tahsisat işlemini bu bağlı listeden gerçekleştirir. Bulduğu elemanı bu bağlı listeden çıkartarak ALLOCATED_BLOCK yapısı ile ilişkilendirir. Bu yapının ilk elemanına bloğun uzunluğunu yerleştirir ve bu elemandan sonraki adresi fonksiyonun geri dönüş değeri olarak verir. Bunun sebebi tahsis edilen alanı geri bırakmakta kullanılan fonksiyonun bu adresten bir geriye giderek uzunluğu belirleyebilmesini sağlamaktır. Şüphesiz yukarıdaki işlemlerde herhangi bir başarısızlık durumunda fonksiyon NULL değeri ile döner ReallocMem FONKSİYONU Bu fonksiyon daha önce AllocMem veya ReallocMem fonksiyonuyla tahsis edilmiş olan alanın büyütülmesi ya da küçültülmesi için kullanılır. Fonksiyonun prototipi aşağıdaki gibidir. PVOID ReallocMem(HHEAP hheap, PVOID pblock, DWORD dwsize, DWORD dwflags); Fonksiyonun birinci parametresi içerisinde tahsisat yapılacak heap in handle değeridir. İkinci parametresi daha önce tahsis edilmiş alanın başlangıç adresidir. Bu adres daha önce AllocMem veya ReallocMem fonksiyonundan elde edilen adrestir. Üçüncü parametre yeni uzunluk değeridir. Fonksiyonun son parametresi tahsisat yapılan bölgeye ilişkin ek özellikleri belirlemekte kullanılır. Fonksiyon eğer büyütme işlemi yapacaksa pblock parametresiyle belirtilen adresi büyütmeye çalışır. Büyütülebilecek ardışıl alan bulamazsa yeni uzunluk kadar bölgeyi boş bloklar arasından AllocMem fonksiyonunda kullanılan algoritma ile bularak yeni alanı tahsis eder ve geri dönüş değeri olarak verir. Tabi bu durumda eski alanı geri bırakarak uygun bağlı listeye ekler. Fonksiyon eğer ardışıl alanı bulursa aynı adresle geri döner. Küçültme işlemi yapılacaksa aynı alandan istenen kısım kadar alınır. Geri kalan bölge boş alan olarak uygun bağlı listeye eklenir FreeMem FONKSİYONU Bu fonksiyon AllocMem yada ReallocMem ile tahsis edilmiş alanları geri bırakır. Fonksiyonun prototipi aşağıdaki gibidir. BOOL FreeMem(HHEAP hheap, PVOID pblock); 10
11 Fonksiyonun birinci parametresi heap in handle değeridir. İkinci parametresi AllocMem veya ReallacMem fonksiyonları tarafından tahsis edilmiş alanın başlangıç adresidir. Fonksiyonun geri dönüş değeri geri bırakma işleminin başarıyla gerçekleştirilip gerçekleştirilmediğini belirtir. Geri bırakma işlemi başarılıysa TRUE, başarısızsa FALSE değerine geri döner. Fonksiyon ikinci parametresiyle belirtilen alanı boş bölgeleri tutan bağlı listelerden uygun olana ekler HeapDestroy FONKSİYONU Bu fonksiyon CreateHeap fonksiyonuyla oluşturulmuş heap i geri bırakmak için kullanılır. Fonksiyonun prototipi aşağıdaki gibidir. BOOL HeapDestroy(HHEAP hheap); Fonksiyonun birinci parametresi CreateHeap fonksiyonu ile oluşturulan heap alanının handle değeridir. Geri dönüş değeri geri bırakma işlemi başarılıysa TRUE, başarısızsa FALSE değeridir. Fonksiyon birinci parametresinde verilen handle değerine ilişkin heap i process in tüm heaplerinin tutulduğu bağlı listeden çıkartır. Böylece heap geri bırakılmış olur. Kaynaklar 1. Windows 95 System Programming Secrets, Matt Pietrek, IDG Books, The C Programming Language(Second Edition), Brian W.Kernighan, Dennis M.Ritchie, Prentice-Hall Inc, Mmurtl V1.0 (Writing Your Own 32 bit Operating System), Burgess Richard A., Sensory Publishing Inc Programming Applications For Microsoft Windows(Fourth Edition), Jeffrey Richter, Mirosoft Press, Win32 Sistem Programlama Ders Notları, Kaan Aslan, C ve Sistem Programcıları Derneği, Windows 2000 System Programming Black Book, Al Williams, CORIOLIS, Advanced Programming In The Unix Environment, W. Richard Stevens, Addison- Wesley, UNIX/LINUX Sistem Programlama Ders Notları, Kaan Aslan, C ve Sistem Programcıları Derneği, A dan Z ye C Klavuzu(5.Baskı), Kaan Aslan, Pusula Yayınevi,
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ı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ı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ı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ıCSD İŞLETİM SİSTEMİNİN SANAL DOSYA SİSTEMİNE İLİŞKİN TEMEL VERİ YAPILARI
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
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ı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ı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ı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ıİşletim Sistemlerine Giriş
İşletim Sistemlerine Giriş Bellek Yönetimi (Memory Management) İşletim Sistemlerine Giriş - Ders08 1 Bellek Yönetimi Bellek önemli bir kaynaktır ve dikkatli yönetilmelidir. İşletim sistemlerinde bellek
DetaylıPROGRAMLAMAYA GİRİŞ FONKSİYONLAR
PROGRAMLAMAYA GİRİŞ FONKSİYONLAR Fonksiyonlar C programlama dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya
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ı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ıBLM 112- Programlama Dilleri II. Hafta 2 C Programlarının Bellek Düzeni ve Rekürsif (Özyinelemeli) Fonksiyonlar
1 BLM 112- Programlama Dilleri II Hafta 2 C Programlarının Bellek Düzeni ve Rekürsif (Özyinelemeli) Fonksiyonlar Dr. Öğr. Üyesi Caner Özcan Kendi yolculuğumuzu yapmak için buradayız; bu yolculukta kendimiz
DetaylıYZM 2105 Nesneye Yönelik Programlama
YZM 2105 Nesneye Yönelik Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 5 Nesneye Yönelik Programlamaya Giriş Bu
Detaylıhttp://alikoker.name.tr Sanal Bellek Kullanımına İlişkin Bilgiler
"Programming Applications for Microsoft Windows (4th Edition)" Jeffrey Richter "Advanced Windows" Jeffrey Richter "Win32 Systems Programming" "www.tdsoftware.tr.cx" Sanal Bellek Kullanımına İlişkin Bilgiler
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ı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ı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ıİŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar) Öğr.Gör. Dr. Dr. Şirin KARADENİZ
İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar) Öğr.Gör. Dr. Dr. Şirin KARADENİZ Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu bulunmaktadır; Performans:
Detaylıenum bolumler{elektronik, insaat, bilgisayar, makine, gida};
BÖLÜM 12: Giriş C programlama dilinde programcı kendi veri tipini tanımlayabilir. enum Deyimi (Enumeration Constants) Bu tip, değişkenin alabileceği değerlerin belli (sabit) olduğu durumlarda programı
DetaylıYrd. Doç. Dr. Caner ÖZCAN
Yrd. Doç. Dr. Caner ÖZCAN Derse Giriş Ders Web Sitesi: www.canerozcan.net Ofis Saatleri: Salı 11:00-13:00 Perşembe 15:30-17:30 ya da email ile randevu alınız: canerozcan@karabuk.edu.tr Kaynak Kitaplar:
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ı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ıBLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)
1 BLM 112- Programlama Dilleri II Hafta 4 İşaretçiler (Pointers) Dr. Öğr. Üyesi Caner Özcan İyilik insanları birbirine bağlayan altın zincirdir. ~Goethe Hafıza Yapısı 2 Bir değişken tanımlandığında arka
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ıTeknikleri. Önsöz. iskender atasoy
Linux Altı nda Grafik Programlama Teknikleri Önsöz Linux atında yazılım geliştirmeyi düşünüyorsunuz veya geliştiriyorsunuz.artık programlarınızı görsel bileşenler ile süslemek istiyorsanız bu doküman sizlere
DetaylıDiziler (Arrays) Çok Boyutlu Diziler
Diziler (Arrays) Çok Boyutlu Diziler ÇOK BOYUTLU DİZİLER Birden fazla indis numarası ile elemanlarına ulaşılan dizilere çok boyutlu diziler denir. Bunlardan en sık kullanılanı çift boyutlu dizilerdir.
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ı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ıYrd. Doç. Dr. Caner ÖZCAN
Yrd. Doç. Dr. Caner ÖZCAN Hafıza Yapısı Bir değişken tanımlandığında arka planda bilgisayarın hafızasında bir konuma yerleştirilir. Hafıza küçük hücrelerden oluşmuş bir blok olarak düşünülebilir. Bir değişken
DetaylıİŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu
İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu bulunmaktadır; 1. Performans: İşletim sistemi, makine
DetaylıAlgoritmalar. Heap Sort. Bahar 2017 Doç. Dr. Suat Özdemir 1
Algoritmalar Heap Sort Bahar 2017 Doç. Dr. Suat Özdemir 1 Heap Sort Heap Sort algoritması Merge Sort ve Insertion Sort algoritmalarının iyi özelliklerini bir arada toplar. Algoritma Insertion Sort gibi
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ıProgramlama Dilleri 1. Ders 12: Belirleyiciler ve Niteleyiciler
Programlama Dilleri 1 Ders 12: Belirleyiciler ve Niteleyiciler Genel Bakış Giriş Yer Belirleyicilerle Bildirim İşlemi auto Belirleyicisi register Belirleyicisi static Belirleyicisi Statik ve Global Değişkenlerin
DetaylıWidows un çalışmasında birinci sırada önem taşıyan dosyalardan biriside Registry olarak bilinen kayıt veri tabanıdır.
Registry: Windows un bütün ayarlarının tutulduğu bir veri tabanıdır. Widows un çalışmasında birinci sırada önem taşıyan dosyalardan biriside Registry olarak bilinen kayıt veri tabanıdır. Win.3x sistemlerinde
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ı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 İşaretçiler ve Diziler Fonksiyon
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ı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ı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ı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ı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ıDr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net
Bilgisayar Programlama Ders 6 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Fonksiyon Prototipleri Fonksiyon Prototipleri Derleyici, fonksiyonların ilk hallerini (prototiplerini)
DetaylıHafta 7 C Programlama Diline Giriş ve C Derleyicisi
BLM111 Programlama Dilleri I Hafta 7 C Programlama Diline Giriş ve C Derleyicisi Yrd. Doç. Dr. Caner ÖZCAN C Programlama Dili Tarihçesi C programlama dili 1972 yılında Bell Laboratuarlarında Dennis Ritchie
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ı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ı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ı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ıBİT in Temel Bileşenleri (Yazılım-1)
Ders 4 BİT in Temel Bileşenleri (Yazılım-1) BİLGİ & İLETİŞİM TEKNOLOJİLERİ 1 Yazılım, değişik ve çeşitli görevler yapma amaçlı tasarlanmış elektronik araçların, birbirleriyle haberleşebilmesini ve uyumunu
DetaylıAHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ
AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ TBIL-303-01 Veri Yapıları ve Algoritmalar İki Yönlü Bağlantılı Liste Uygulaması HAZIRLAYAN
DetaylıProgram Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.
PROGRAMLAMAYA GİRİŞ Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir. C de yazılan bir programın çalışması için çoğunlukla aşağıdaki
DetaylıBTP 207 İNTERNET PROGRAMCILIĞI I. Ders 9
BTP 207 İNTERNET PROGRAMCILIĞI I Ders 9 Dizi Değişkenler (Array) 2 Tek değişkende birden fazla bilgi tutulmak istendiğinde kullanılır. Kullanım şekli: var dizi_adı= new Array(eleman1, eleman2,, elemann)
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ıC++ Dersi: Nesne Tabanlı Programlama
C++ Dersi: Nesne Tabanlı Programlama Bölüm 11: Bileşim, Arkadaş ve Diğer Araçlar İçerik Bileşim Arkadaş Fonksiyonlar ve Sınıflar Arkadaş Fonksiyonlar Arkadaş Sınıflar Sabit Nesneler Sabit Üye Fonksiyonlar
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ı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ı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ı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ı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ı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ıDİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II
DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II DİZİLER Dizi, aynı tipteki verilere tek bir isimle erişmek için kullanılan bir kümedir. Bir dizi bildirildikten sonra, dizinin bütün elemanları bellekte peşpeşe
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ı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ıNESNEYE YÖNELİK PROGRAMLAMA
NESNEYE YÖNELİK PROGRAMLAMA Rastgele sayı üretme C#'ta program yazarken (özellikle oyun programlarında) rastgele değerlere ihtiyaç duyabiliriz. Rastgele sayı üretebilmemiz için öncelikle Random sınıfı
DetaylıVERİ YAPILARI VE PROGRAMLAMA (BTP104)
VERİ YAPILARI VE PROGRAMLAMA (BTP104) Yazar: Doç.Dr. İ. Hakkı CEDİMOĞLU S1 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ı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ıSanal Bellek Kullanımına İlişkin Bilgiler
"Programming Applications for Microsoft Windows (4th Edition)" Jeffrey Richter "Advanced Windows" Jeffrey Richter "Win32 Systems Programming" "www.tdsoftware.tr.cx" Sanal Bellek Kullanımına İlişkin Bilgiler
DetaylıALGORİTMA VE PROGRAMLAMA I DERS NOTU#8
ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8 YZM 1105 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi 6. BÖLÜM 2 Çok Boyutlu Diziler Çok Boyutlu Dizi 3 Bir dizi aşağıdaki gibi bildirildiğinde
DetaylıMantıksal Kontrol ve Döngü Komutları
Mantıksal Kontrol ve Döngü Komutları Prof.Dr. Bahadır AKTUĞ JFM212 Python ile Mühendislik Uygulamaları *Kaynakça bölümünde verilen kaynaklardan derlenmiştir. Mantıksal Karşılaştırmalar Python, koşullu
DetaylıInternet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı
Internet Programming II Elbistan Meslek Yüksek Okulu 2015 2016 Bahar Yarıyılı Öğr. Gör. Murat KEÇECĠOĞLU 21 Mar. 2016 PHP de dizi Değişkenler Buraya kadar yaptığımız uygulamalarda değişkenlerin tek değer
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ıDeğişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir
DİZİLER (ARRAYS) Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir değişken tanımlamak gereklidir. string gun1,
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ıPROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.
PROGRAMLAMAYA GİRİŞ Öğr. Gör. Ayhan KOÇ Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay., 2007 Algoritma ve Programlamaya Giriş, Ebubekir YAŞAR, Murathan Yay., 2011
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ı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ı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ıC++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié
Kullanılacak kaynak: http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié C++ Nedir? Arttırılmış C demektir ve C dilinin geliştirilmiş halini yansıtır. C++ öğrenmeden önce herhangi bir programlama
DetaylıBLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri
BLM-111 PROGRAMLAMA DİLLERİ I Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Temel Veri Tipleri C dilinde
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ıİNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ
İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ AD SOYAD : TESLİM TARİHİ : OKUL NO : TESLİM SÜRESİ : 2 hafta Ödev No : 7 ****(ilk 3 soru çıktı üzerinde el
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ıYrd. Doç. Dr. Caner ÖZCAN
Yrd. Doç. Dr. Caner ÖZCAN Derse Giriş Ders Web Sitesi: www.canerozcan.net Ofis Saatleri: Salı 11:00-13:00 Perşembe 15:30-17:30 ya da email ile randevu alınız: canerozcan@karabuk.edu.tr Kaynak Kitaplar:
DetaylıProgramlama Dilleri III 1
Temel Veri Türleri Programlama Dilleri III 1 İlk C# Programı class ilk_program1 static void Main() System.Console.WriteLine("Merhaba C#"); C# dilinde yazılmış kaynak kod dosyalarının uzantıları.cs dır.
Detaylıİşletim Sistemlerinde Çok Prosesli Çalışma
İşletim Sistemlerinde Çok Prosesli Çalışma Kaan Aslan 4 Mart 2008 İşletim sistemlerini proses yönetimine göre kabaca tek prosesli (single processing) ve çok prosesli (multiprocessing) olmak üzere iki gruba
DetaylıBTEP243 Ders 3. class Yazım Kuralı:
BTEP243 Ders 3 Sınıflar ve Nesneler Nesne tabanlı programlamada, programlamanın temeli sınıflardır (class). Nesnelerin yaratılmasında taslak (blueprint) görevi görür. Sınıflar; o Nesnelerin özelliklerinin
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ıİş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ı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ıUNIX/Linux ve Windows Sistemlerinde stdin, stdout ve stderr Dosyaları
UNIX/Linux ve Windows Sistemlerinde stdin, stdout ve stderr Dosyaları Kaan Aslan 31 Mart 2010 Yalnızca UNIX/Linux sistemlerinde değil modern işletim sistemlerinin çoğunda aygıtlar birer dosyaymış gibi
Detaylıİşletim sistemlerinde, gerçekleştirilen işlemlerin geçici olarak saklandığı merkeze ana bellek (RAM) denir.
Bellek Yönetimi 2 İşletim sistemlerinde, gerçekleştirilen işlemlerin geçici olarak saklandığı merkeze ana bellek (RAM) denir. Ana bellek, giriş-çıkış aygıtlarının kolaylıkla ulaşabildiği bir bilgi deposudur.
DetaylıC PROGRAMLAMA DİLİ. Hedefler
C PROGRAMLAMA DİLİ Hedefler Bu üniteyi çalıştıktan sonra; C programlama dili genel özelliklerini ve yapısını bilir, Kütüphane fonksiyonlarının çağrılmasını gerçekleştirebilir, Değişken, sabit tanımlamaları
DetaylıNESNEYE YÖNELİK PROGRAMLAMA
NESNEYE YÖNELİK PROGRAMLAMA Metotlar Şu ana kadar yaptığımız örneklerde hep önceden hazırlanmış ReadLine(), WriteLine() vb. gibi metotları kullandık. Artık kendi metotlarımızı yapmanın zamanı geldi. Bilmem
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ı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ıHafta 13 Fonksiyonlar
BLM111 Programlama Dilleri I Hafta 13 Fonksiyonlar Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı fonksiyonları ve kütüphane fonksiyonlarını birlikte kullanırlar.
Detaylı1 PROGRAMLAMAYA GİRİŞ
İÇİNDEKİLER IX İÇİNDEKİLER 1 PROGRAMLAMAYA GİRİŞ 1 Problem Çözme 1 Algoritma 1 Algoritmada Olması Gereken Özellikler 2 Programlama Dilleri 6 Programlama Dillerinin Tarihçesi 6 Fortran (Formula Translator)
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ı