BLM 103 Bilgisayar Mhendisliine Giri 1 MIKROILEMCILER Mikroilemci
BLM 103 Bilgisayar Mühendisliğine Giriş 1 MIKROIŞLEMCILER
Mikroişlemci Nedir? 2 � Bir bilgisayarın en önemli parçası Mikroişlemcisidir. Hiçbir bilgisayar mikroişlemci olmadan çalışamaz. Bu nedenle Mikroişlemci için bilgisayarın beyni ifadesi kullanılmıştır. � Çok küçük hacme sığdırılmış tek çip’ten oluşan elektronik işlem elemanlarıdır. � Mikroişlemci bilgisayarlarda aritmetik ve mantık işlemlerinin yapıldığı ve bunların denetlendiği merkezdir. Bilgisayar sistemindeki tüm donanımı denetler. Doğrudan veya dolaylı olarak ana devre kartı üzerindeki tüm parçalarla bağlantı halindedir. Bütün birimler buradan yönetilir.
Mikroişlemci Nedir? 3 İşlemcinin performansını belirleyen en önemli etken onun saat frekansıdır. � Saat frekansı 1 Mhz olan bir işlemci 1 saniyede 1. 000 adet darbe üretir. Bu da o işlemcinin bir işi saniyede bir milyon defa yapabildiği anlamına gelir. � Örneğin Pentium II 350 işlemcisi bir işi saniyede 350. 000 defa yapabildiği anlamına gelir.
Mikroişlemci Esasları 4 �Bir bilgisayar sistemi fiziksel açıdan büyük ebatlı olduklarından sabit disk, CD‐ROM vb. hariç tutulursa; işlemci, bellek ve G/Ç birimlerine ait yonga gruplarından meydana gelmektedir. Bu elemanların kapasite ve büyüklükleri kullanıldıkları sistemlere göre artış göstermektedir.
Mikroişlemci Esasları 5 � Bilgi bitleri mikroişlemcinin tipine göre �Sekizlik, �onaltılık �otuzikilik veya �günümüzde altmışdörtlük gruplar halinde işlenir. � Kelime uzunluğu büyük olan işlemcide yapılan aritmetik işlemlerde doğruluk oranları kısa uzunluklu kelimelere nazaran çok yüksektir (4‐bit %6, 8 bit %0. 4 ve 16 bit %0. 001).
Mikroişlemcinin doğrudan adresleyebileceği bellek büyüklüğü 6 �Bilgisayar sistemlerindeki ana bellek mikroişlemci tarafından adres yolu vasıtasıyla adreslenir. �Adres yolu hattı ne kadar çoksa adresleme kapasitesi de ona göre büyük olur.
Programcının bellek adreslerken gerek duyacağı farklı adresleme modları 7 �Doğrudan adresleme, dolaylı adresleme ve indeksli adresleme gibi adresleme türleri programcıya ekstra kolaylıklar sağlar. �Adresleme modları; üzerinde çalışılan bir verinin belleğe nasıl ve ne şekilde yerleştirileceği veya üzerinde çalışılacak bir verinin bellekten nasıl ve hangi yöntemle çağrılacağıdır.
İleri Mikroişlemci Özellikleri 8 �Mikroişlemcilerin sistemdeki en büyük yardımcı birimlerinden birisi bellektir. �Bellek, komut ve verileri üzerinde geçici veya kalıcı olarak tutan bir elektronik elemandır. �Tasarıma göre komutlar ve veriler istenirse bellekte ayrı bölümlerde tutulabilmektedir. Bu da neyin nerede bulunacağının bilinmesini sağladığından daha fazla hız demektir. �Ön‐bellekler mikroişlemci dolayısıyla bilgisayar performansını artıran önemli elemanlardan birisidir. �Sisteme sadece belli bir yük bindiren ön‐bellekleri işletmek ön‐bellek altsistemleridir. Bu sistemler, verinin hangi bellekte olduğunu, bu veriye nasıl ve kaç koldan ulaşılacağını ve verinin hangi bellekte yenilenip (update) hangisinde yenilenmediğinin bilgisini tutmaktadır.
İş‐Hattı ve Süperölçekli İşlem 9 �Orta hızlı bir işlemcide komut aşağıdaki aşamalardan geçer: İşlenecek komutun bellekten alınarak komut kaydedicisine getirilmesi (Algetir safhası). Getirilen komutun, mikrokod veya donanımsal yönteme göre kodunun çözülmesi (Kod‐çözme safhası). Üzerinde işlem yapılacak birimin adresinin belirlenmesi (adres üretim safhası). Komutun kodunun çözülmesiyle ne yapılmak istendiği anlaşılarak gerçekleştirilmesi (icra/işlem safhası). Elde edilen sonucun belleğe yazılması (geriye yazım safhası).
İş‐Hattı ve Süperölçekli İşlem 10 � Bir komutun sıraladığımız beş adımda gerçekleşmesi sırasında diğer birimlerin işini bitirdikten sonra yeni bir işe başlaması sistem performansını önemli ölçüde artıracaktır. � Algetir biriminin bir komut getirildikten sonra kod‐çözme bölümüne göndermesi ve hemen ardından başka bir komutu işlemek üzere getirmesi ve diğer birimlerinde işlerini bitirdikten sonra sıradaki işleme dalmasına iş‐hattı sistemi denir.
İş‐Hattı ve Süperölçekli İşlem 11 �Şimdi beş kademeli bir mikroişlemci mimarisine diğer bir veya iki ya da üç beş kademe daha eklenirse ne olur? �Bu sistem iki yollu veya üç yollu beş kademeli bir sistem olur ki buna süperölçekli mimariye sahip mikroişlemci denir. �Bu üç yollu beş kademeli işlemcide aynı anda tüm birimlerde işlem yapıldığında çok kısa bir sürede büyük işlemler yapılabileceği ortaya çıkmaktadır.
Mikroişlemcinin İç Yapısı � Hangi mikroişlemci olursa olsun temel yapısı şu bölümlerden oluşmaktadır. 1. İletişim Yolları 2. Kaydediciler ve Sayıcılar 3. Aritmetik mantık Birimi (ALU) 4. Kontrol Birimi 5. Giriş Çıkış tampon Devreleri � Yukarıda sıralanan bölümlere ait devre yapıları mikroişlemciden mikroişlemciye bazı değişiklikler göstermektedir
Komut Türlerine Göre Mikroişlemci Çeşitleri 1. CISC (Complex Instruction Set Computer): Mikroişlemci programları ve komutları çalıştırmak için program kodlarını makine diline (ikilik sistem) çevirir. Programlama yapmayı kolaylaştırmak için birçok komut mikroişlemcinin içinde yer alır. Bu da işlemleri yavaşlatır. 2. RISC (Reduced Instruction Set Computer): komut setinin azaltılmasına dayanan bu sistemde üretilen mikroişlemciler daha hızlı çalışırlar.
İletim Yolları � İletim yolları mikroişlemciden başlayarak bilgisayar devre bağlantılarını sağlayan iletkenlerdir. � İletim yolları bellekteki bir konumdan bir değer okumak veya bu konuma değer yazmak için amacıyla bellek birimi ve giriş çıkış birimi arasındaki iletişimde kullanılır. � Bu çoklu iletkenlere görüntüsünden dolayı yol adı verilmiştir.
İletim Yolları 1. Adres Yolları ( Address Bus ): Verilerin ve komutların adreslerinin taşındığı yollardır. 2. Bilgi Yolları ( Data Bus ): Verilerin taşındığı hatlardır. 3. Kontrol Yolları ( Control Bus ): Verilerin, komutların ve diğer donanım birimlerinin kontrol bilgilerinin taşındığı hatlardır.
MİKROİŞLEMCİ PROGRAMLAMASI 16 �Sayısal bilgisayarların kullandığı doğal dile makine dili denir. �Programcı tarafından yüksek düzeyde yazılan programlar ancak yine insanlar tarafından anlaşılabilir. �Bu programların makine tarafından anlaşılabilmesi için derleyici, yorumlayıcı ve assembler gibi aracı programların kullanılması gerekir. Üst düzey dillere; BASIC, PASCAL, C gibi diller girerken, Assembly dili (makine dili hariç) en alt düzeyde kabul edilir.
MİKROİŞLEMCİ PROGRAMLAMASI 17 Derleyici: C, C++, Pascal, Visual Basic, C# Yorumlayıcı: PHP, Javascript, Perl, Python, Ruby Hem derleyici hem yorumlayıcı: JAVA (javac (derleyici), JVM (yorumlayıcı)
Assembly Dili 18 � Makine dili en düşük programlama düzeyindedir. � Programcı bu dille makinayla en basit şekilde iletişim kurar. � Bu dilde makinayla iletişim sırasında ortaya çıkan zorlukların üstesinden gelmek için alt düzey dil grubuna giren assembly dili kullanılır. � Komut kodlarının ikili veya hex gösteriminin yerine assembly dili hatırlatıcı denilen komut kısaltmalarını kullanır. � Hatırlatıcı, bir kaç istisna dışında bellek tanımlamalarında ve hangi işlemin neyi temsil ettiğini belirtmek için kolaylıklar sağlar. Her üretici ürettiği mikroişlemciyle ilgili komut deyiminin kısaltılmışı olan hatırlatıcıları da piyasaya sunar.
Assembly Dili 19 �Assembly dili ile Assembler Assembly dili, konuşma dilinde emir seklindeki cümleden özenle seçilerek alınmış ve sayısı genelde üç en fazla dört olabilen harflerden meydana gelen ve anlam ifade eden hatırlatıcıları içerir. Assembler, assembly dilinde yazılmış ve komutları makine diline çeviren bir aracı programdır.
Assembly Dili 20 �Assembly Dilinin Zorlukları Assembly dilinde bir program yazmak için üzerinde çalışılan bilgisayarın özellikleri hakkında detaylı bilgi sahibi olunmalıdır. � Meselâ bunlar, bilgisayar mikroişlemcisinde bulunan kaydediciler ve sayısı, komut kümesı ve adresleme türleri gibi değişik özelliklerdir. Assembly dilinin diğer bir zorluğu elastik olmamasıdır. � Değişik firmalarca üretilen her mikroişlemcinin kendisine has bir programlama dili olmasıdır. Bundan dolayı bir mikroişlemci için yazılan bir assembly dilindeki program diğer bir mikroişlemcide çalışmayabilir.
Assembly Dili 21 �Assembly Dilinin Avantajları Assembly dilinde program yazanlar, donanımın çalışmasını çok iyi anlamak ve ona göre iyi programlar geliştirmek zorunda olduklarından kendilerine bir çok kazanımlar sağlarlar. Yüksek düzeyli dillerde program yazarken bilgisayar donanımının görünmeyen bazı yanlarına assembly dilinde sahip olunur. Assembly dilinde yazılan programlar yüksek düzeyli dillerle yazılan programlara nazaran daha hızlı ve küçük boyutludur. Assembly dili, program büyüklüğünde ve çalışma hızında ideal optimizasyon sağlar.
22 BLM 103 BILGISAYAR MÜHENDISLIĞINE GIRIŞ İŞLETİM SİSTEMLERİ
23 • Modern bilgisayar çalışma prensipleri, Von Neumann’ın 1945’de geliştirdiği mimariyi temel almaktadır.
24 İşletim Sistemi • Bilgisayarın tüm çalışmasını kontrol eden yazılım • Kullanıcının dosya depolamasını • Kullanıcıların programları uygulatmak için arayüz ve • İstenen programların çalıştırılması için ortam sağlar • Örnekler • Windows • UNIX • Mac. OS • Linux
25 • Bir işletim sistemini orkestrayı yöneten bir maestro gibi düşünebilirsiniz. • bilgisayarın donanım elemanlarının birbiri ile haberleşmesini, • birbirini tanımasını, • kısacası birbiri ile uyumlu bir şekilde çalışmasını sağlar. • İşletim sistemi aynı zamanda, • kullanıcı ve donanım, • yazılım ve donanım ve • yazılım ve yazılım arasındaki ara yazılımdır.
26 • Bir bilgisayar sisteminin genel görünümü
27 • İşletim sistemi; • bilgisayar sistemini oluşturan donanım ve yazılımın nitelikli kaynakları kullanıcılar arasında kolay, hızlı ve güvenli bir işletim hizmetine olanak verecek biçimde paylaştırırken bu kaynakların kullanım verimliliğini en üst düzeyde tutmayı amaçlayan bir yazılım sistemidir. • Bir bilgisayar sistemindeki MİB (CPU), bellek, soyut bellek, G/Ç aygıtları ve dosyalar gibi kaynakları kontrol eden program modülleri topluluğudur. • Bu modüller sistemin daha etkili ve performanslı kullanılmasını sağlar. Bunlar kullanıcı ve donanım arasında bir arabirim gibi çalışırlar.
28 Bilinen İşletim Sistemleri - Windows 1. 0
29 Bilinen İşletim Sistemleri – Windows 2. 0
30 Bilinen İşletim Sistemleri – Windows 3. 0
31 Bilinen İşletim Sistemleri – Windows 3. 1
32 Bilinen İşletim Sistemleri – Windows 95
33 Bilinen İşletim Sistemleri – Windows 98
34 Bilinen İşletim Sistemleri – Windows ME
35 Bilinen İşletim Sistemleri –LINUX • Helsinki Üniversitesi'nde bilgisayar mühendisliği öğrencisi olan Linus Torvalds'ın 1991 yılında Intel'in yeni işlemcisi 80386'nın korumalı kip mimarisini denemek üzere geliştirmeye başladığı Unix tabanlı bir işletim sistemi çekirdeğidir. • İnternette yaptığı duyuru sonucunda tüm dünyadan birçok yazılımcının da desteği ile hızla gelişmiş ve halen aynı destek ile gelişmekte olan açık kaynak kodlu, özgür bir yazılımdır.
36 Özgür Yazılım Nedir? • Özgür yazılım, 4 farklı özgürlüğü temel alır: – Hangi amaç için olursa olsun, programı çalıştırma özgürlüğü – Kendi ihtiyaçlarınıza uyarlamak için programın nasıl çalıştığını öğrenme özgürlüğü (Kaynak koduna erişim bunun için bir önkoşuldur) – İhtiyacı olanlara yardım edebilmeniz için programın kopyalarını dağıtma özgürlüğü – Bütün toplumun faydalanabilmesi için programı iyileştirme ve yaptıklarınızı halka açma özgürlüğü (Kaynak koduna erişim bunun için bir önkoşuldur)
37 Bilinen İşletim Sistemleri - Linux Dağıtımları • Farklı çalışma grupları tarafından Linux çekirdeği üzerinde geliştirilmiş olan işletim sistemlerine Linux Dağıtımları denir. • Bilgisayara kurulmadan CD, DVD veya USB Bellek üzerinden doğrudan çalıştırılabilen dağıtımlar da vardır. • Linux dağıtımları daha çok sunucularda kullanılmasına rağmen masaüstü ve dizüstü bilgisayarlarda da kullanım oranı artmaktadır. • Gömülü sistemlerden, süper bilgisayarlara kadar birçok donanım türünde kullanılan Linux dağıtımları da vardır.
38 Bilinen İşletim Sistemleri - Linux Dağıtımları
39 Bilinen İşletim Sistemleri - Linux Dağıtımları • Türkiye'de TUBİTAK bünyesinde Pardus isimli bir dağıtım geliştirilmektedir. • Pardus her seviyede bilgisayar kullanıcısının kolayca kurup kullanabilmesi amaçlanarak geliştirilmektedir. Bu nedenle kurulumundan yönetimine kadar pek çok araç ve teknoloji Pardus geliştiricileri tarafından özel bir proje olarak geliştirilmektedir.
40 Bilinen İşletim Sistemleri - Linux Dağıtımları • Pardus
41 Diğer İşletim Sistemleri • Anabilgisayarlar ve gömülü sistemlerin çoğu Windows ve UNIX'le doğrudan bağlantısı olmayan pek çok değişik işletim sistemi kullanmaktadır. • Örneğin bazı cep telefonları kendine has işletim sistemlerine sahipken, bazıları ise Symbian veya Windows Mobile gibi genel amaçlı işletim sistemlerini kullanır.
42 Yazılım Türleri • Application sw / Uygulama yazılımı: Makinanın kullanımına özel görevleri gerçekleştirmek için gerekli programlar • Örn. Veritabanı sistemleri, çizelge programları, kelime işlemci, hesaplama sistemleri, program geliştirme yazılımları, oyunlar • System sw /Sistem yazılımları: Genel olarak bilgisayar sistemi için ortak olan görevleri gerçekleştiren yazılımlar. • İşletim sistemleri • Faydalı yazılımlar (utility sw) : işletim sisteminin yeteneklerini geliştiren yazılım bileşenleri. Örn. Yazılım sıkıştırma ya da açma programları gibi
43 Makinenin Aktivitelerinin Koordinasyonu • Proses kavramı • Bir işletim sistemi üzerinde kodlanmış ve derlenmiş kodu hafızaya yüklenerek işlemcide çalıştırılan programlara verilen isimdir.
44 Kesmeler (Interrupts) • Zaman dilimlerini sonlandırmada kulllanılan kesme kullanımı, bilgisayarlardaki kesme sisteminin pek çok uygulamasından sadece biridir. • Kesmeler bilgisayarın ortamıyla beraber eylemlerininin koordinasyonunda önemli bir araçtır. • Örnek. Mouse ile tıklamak ya da klavyeden bir tuşa basmak kesme sinyali oluşturur ve bu da MIB – merkezi işlem birimi (CPU) nin o andaki aktivitesini kenara koyup kesmenin nedenini ele almasını sağlar • Gelen kesmelere karşılık vermek için her kesme sinyaline öncelikler verilmiş ve böylece önemli görevlerin daha önce ele alınması sağlanmaktadır.
45 Semaforlar • İki ayrı işlem aynı anda bellekte yürütülürken kaynaklara aynı anda erişmeye çalışabilirler. Bu durumda kullanılan semafor, sistem kilitlenmelerine engel olur. • Semaforlar işlemler arası iletişimi sağlayarak sonsuz döngülere ve sistem kilitlenmelerine engel olurlar. • Semafor bir çeşit değişken türüdür. • Bu değişken üzerinde işlem yapacak iki temel işlem tanımlanmıştır. • Signal (P) semaforun içeriğini 1 arttırır signal (s) • Wait (V) semaforun içeriğini 1 azaltır wait (s) • Kaynakların kritik bölgelerde kilitlenme olmaması için kullanılır: Wait (s) Kritik kaynak Signal (s)
46 Deadlock (Ölümcül Kilitlenme) • Proseslerin hiçbir zaman ele geçiremeyecekleri birime ya da kaynağa ihtiyaç duymaları durumunda sürekli askıda kalmalarıdır. • Ayrıca bir proses bir diğerinin işini bitirmesi, o da onun bitirmesini bekleyen bir durum oluşursa yine ölümcül kilitlenme (deadlock ) oluşur. • Bu durumda yönetici (admin) kendi yetksisi ile bazı prosesleri sonlandırır (kill)
47 İşletim Sisteminin Yerine Getirmesi Gereken Fonksiyonlar • 1. İşleri sıraya koymalıdır • 2. İşi kontrol eden dili yorumlayabilmelidir • 3. Hata durumlarında ilgili işlemleri sonuçlandırmalıdır • 4. Giriş/Çıkış işlemlerini sonuçlandırmalıdır • 5. Kesmelerin gereğini yerine getirmelidir • 6. İşlerde öncelik tanıyabilmelidir • 7. Kaynakları kontrol etmelidir • 8. Bilgisayar kaynaklarının hesabını tutmalıdır. • 9. Bilgileri uzun vadede saklamalıdır.
48 Bir İşletim Sisteminde İstenilen Özellikler • 1. Etkinlik: İşletim sistemi, bir işi etkin ve verimli bir şekilde yapmalıdır. • 2. İşler arasındaki zaman: Bir işi bitirip diğer işi başlama süresi kısa • • olmalıdır. 3. Kullanılmayan MİB zamanı: Merkezi işlem birimin kullanmadığı süre kısa olmalıdır. 4. Toplu işlemler arasındaki zaman: Toplu işlem dosyalarının işlenmesi arasındaki süre kısa olmalıdır. 5. Cevap verme süresi: Sistemin cevap verme süresi kısa olmalıdır. 6. Az zamanda çok iş yapılmalıdır. 7. Güvenirlik: Sistem tamamen hatalardan arındırılmış olmalıdır. 8. Süreklilik: Sistem bakım yapılabilir ve dokümanı bol olmalıdır. 9. Düşük boyut: Sistem kendinden taviz vermeden küçük boyutta olmalıdır.
BLM 103 Bilgisayar Mühendisliğine Giriş 49 VERİ YAPILARI VE VERİ MODELERİ
Veri Yapıları 50 �Veri, algoritmalar tarafından işlenen en temel elemanlardır (sayısal bilgiler, metinsel bilgiler, resimler, sesler ve girdi, çıktı olarak veya ara hesaplamalarda kullanılan diğer bilgiler…). �Veri yapısı (Data Structure) verinin veya bilginin bellekte tutulma şeklini veya düzenini gösterir. �Veri modeli (Data Model), verilerin birbirleriyle ilişkisel veya sırasal durumunu gösterir; problemin çözümü için kavramsal bir yaklaşım yöntemidir denilebilir.
Veri Yapıları • Veri yapıları bilgisayar ortamında verilerin etkin olarak saklanması ve işlenmesi için kullanılan yapılardır. • Karakter, Tamsayı ve Gerçel Sayı gibi değişkenler temel veri yapısı olarak kabul edilir. • Karakterler bir araya gelerek sözceleri (string), sayılar bir araya gelerek dizileri (array) oluşturur. • Seçilen veri yapısı algoritmanın doğru ve etkin çalışabilmesi için önemlidir.
Veri Yapısı ve Bilgi �Veri ham olarak 1 ve 0 lardan oluşan bit dizisidir. � 0100 0010 0100 0001 4 2 4 1 �Yukarıdaki bit dizisinin anlamı veri yapısı ile değişir; Karakter dizisi (string) ise (ASCII): BABA BCD (Binary Coded Decimal) ise: 4241 16 -bit tam sayı ise: 16961 32 -bit tam sayı ise: 1111573057 32 -bit gerçel sayı ise: 0. 4276801 x 1066 �Veriyi değerlendirebilmek için onun formatını bilmek gerekir
Veri yapıları sınıflandırması 53 �Temel veri yapıları – daha çok programlama dilleri tarafından doğrudan değişken veya sabit bildirimi yapılrken kullanılır �Tanımlamalı veri yapıları – kendisinden önceki tanımlamalı veya temel veri yapıları üzerine kurulurlar, yani önceden geçerli olan veri yapıları kullanılarak sonradan tanımlanırlar
Temel veri yapıları 54 �Programlama dillerinde desteklenen yapılar Karakter - A, B, @, ? . . . Tamsayı – 1923, 4 Kesirli sayı – 3, 14; 1, 53*103 Sözce – “üniversite”, “Pınar”, “A” Dizi/matris – [23 4 1923] ,
Temel Veri Yapıları • Karakterler • • • Tek tek karakterlerin veya art arda gelerek sözcüklerin, cümlelerin tutulduğu yapıdır. Kodlama tabloya göre yapılır En yaygun kullanılan karakter tabloları; – – ASCII Her karakter 7 bit (27 = 128 farklı karakter) – Genişletilmiş ASCII Her karakter 8 bit (28 = 256 karakter) Unicode Her karakter 16 bit (216 = 65536 farklı karakter) – Herbir karakter için aynı kodlama sistemini sağlar ve dil sorununu çözer
Temel Veri Yapıları 56 �Karakterler – ASCII Tablosu Kontrol karakterleri
Temel Veri Yapıları 57 �Tamsayı Kesirli olmayan , 2, 5, 23 gib sayılardır Bellekte ikili tabadaki karşılığı ile saklanır Bellekte ne kadar yer tutatacağı da değeri ile ilişkildir.
Temel Veri Yapıları 58 �Kesirli sayılar Kayan noktalı (floating point) – sayı içerisinde bulunan ve kesrin yerini gösteren nokta bilgisinin kaymasıdır � 0, 39 3, 9*10 -1 0, 039*101 Sabit noktalı – (fixed point) - kesrin yeri sabittir
Temel Veri Yapıları 59 �Sözce/Sözcük Bir yazının, metnin tamamını, herhangi bir cümlesini, sözcüğünü veya hecesini bellek üzerinde tutmak için sözce yapısı kullanılır Karakterlerin art arda geldiği karakter dizisidir � Ad “Papatya Yayıncılık Eğitim” � İl “İstanbul” � Ülke “Türkiye”
Temel Veri Yapıları 60 �Sözce/Sözcük Bilgisayar belleğinde karakterleri tumak için � Karakter sayısını tutma : dizinin ilk elemanı karakter sayısı değerini tutar, ilk elemanı diznin ikinci elemanı ile başlar. Pascal’da olduğu gibi İsim [7, P, a, p, a, t, y, a] � Sonlandırma karakteri kullanma : İlk karakterden başlar, sonlandırma karakteri ile karşılan elemana kadar uzar. C dilinde olduğu gibi. C de sonlandırma karakteri ( ) İsim [P, a, p, a, t, y, a, ]
Temel Veri Yapıları 61 �Dizi/Matris Aynı kümeye ait olan veriler bellekte art arda tutulur. Dizinin başlangıç adresi veya adı bilindiğinde herhangi bir elemanına kolayca erişilebilir Dizi veri yapısı, birçok veri modelini diziler üzerinde kurmak için kullanılmaktadır. Örn. Graf, ikili ağaç gibi A[10] --- dizi A[5][10]={…. . } ‘un son elemanı A[4][9]’dur. -----matris
Temel Veri Yapıları �Dizi/Matris String: Karakter dizileri (Sözce) � Karakter sayısının tutulması (PASCAL) [ 6, t, r, a, k, y, a ] � Sonlandırma karakterinin ( ) kullanılması (C) [ t, r, a, k, y, a, ] Array: Sayı dizileri � Tek boyutlu, İki boyutlu (matris), Çok boyutlu C A[1][3] PASCAL A[1, 3] BASIC A(1, 3) A[0][2] A[0, 2] A(0, 2)
Tanımlamalı Veri Yapıları 63 �Temel veri yapılarının birleştirilmesi ile oluşturulmuş veri yapılarıdır. �Bir tanımlamalı veri yapısının içinde başka bir tanımlamalı veri yapısı da yer alabilir. �Yeni veri yapısı tanımlamak ihtiyaca göre üç şekilde yapılabilir Topluluk oluşturma Ortaklık oluşturma Bit düzeyinde erişim
Tanımlamalı Veri Yapıları • Topluluk oluşturma • Birden çok veri yapısının bir araya getirilip yeni bir veri yapısı, bir aile ortaya çıkarmadır • • Bağıl liste Ağaç Özel amaçlı veri modelleri buna ihtiyaç duyar C dilinde tanımlamalı veri yapısı oluşturmak için struct deyimi kullanılır. struct kayit { char ad[15]; char soyad[25]; char adres[150]; unsigned short int yas; } 15 25 150 1 191 bayt işgal eder
Tanımlamalı Veri Yapıları • Ortaklık oluşturma • Birden çok değişkenin aynı bellek alanını kullanmasına izin veren union veri yapısının boyutu ise; içinde yer alan temel veri yapılarından en büyüğünün boyutuna eşittir. union kisiler { char ad[15]; char soyad[25]; unsigned long int tel; } 15 25 4 25
Soyut Veri Yapıları • Bir grup veriyi ve bu veriler üzerinde yapılabilecek tüm işlemleri bir araya getiren yapıya soyut veri yapısı (abstract data type: ADT) denir. • Kullanıcı için yapının içinin tamamen soyut olması (bilinmesinin gerekmemesi) nedeniyle soyut veri yapısı adını almıştır. • En çok kullanılan soyut veri tipleri: kuyruk, yığın, bağlı liste ve ağaç’tır.
Soyut Veri Yapıları Kuyruk (Queue) • Kuyruklar, eleman eklemelerin sondan (back) ve • • eleman çıkarmaların baştan (front) yapıldığı veri yapılarıdır. Bir eleman ekleneceği zaman kuyruğun sonuna eklenir. Bir eleman çıkarılacağı zaman kuyrukta bulunan ilk eleman çıkarılır. Bu nedenle kuyruklara FIFO (First-In First-Out = ilk giren ilk çıkar) listeleri de denilmektedir. işlemci, yazıcı, disk
Kuyruk İşlemleri ve Tanımları �insert(q, x) : q kuyruğunun sonuna x elemanını ekler. (enqueue) �x=remove(q) : q kuyruğunun başındaki elemanı silerek x'e atar. (dequeue)
Soyut Veri Yapıları Yığın (Stack) �Eleman ekleme çıkarmaların en üstten (top) yapıldığı veri yapısına yığın (stack) adı verilir. �Bir eleman ekleneceğinde yığının en üstüne konulur. �Bir eleman çıkarılacağı zaman yığının en üstündeki eleman çıkarılır. �Bu eleman da yığındaki elemanlar içindeki en son eklenen elemandır. �Bu nedenle yığınlara LIFO (Last-In First-Out : son giren ilk çıkar) listeleri de denilir.
Yığın İşlemleri ve Tanımları �push(s, i) : s yığınının en üstüne i değerini eleman olarak ekler. �i = pop(s) : s yığınının en üstündeki elemanı çıkartır ve değerini i değişkenine atar.
Soyut Veri Yapıları Liste (List) �Eleman ekleme ve çıkarma işlemlerinin herhangi bir sınırlama olmaksızın istenilen yerden yapılabildiği veri yapısıdır. �Örneğin daha önce oluşturduğumuz bir bugün yapılacak işler listesine bir eleman eklerken, her zaman en sona veya en başa değil araya eleman eklememiz de gerekebilir. 10: 30 Bilgisayar Müh. Giriş 1 Dersi 13: 30 Veri Tabanı Yönetimi Dersi 16: 30 Bilgisayar Müh. Giriş 1 Dersi (İ. Ö. ) 12: 30 Bölüm Genel Kurulu Toplantısı
Soyut Veri YapılarıListe (List) �Kuyruk ve Yığın veri yapılarını diziler ile gerçekleştirmek mümkün olsa da, liste yapısını gerçekleştirmek için dizi çok uygun değildir. Araya eleman eklenmesi/çıkartılması gerektiğinde, o elemandan sonra gelen tüm elemanların birer kademe ileri/geri kaydırılması gereklidir. �Bağlı liste yapısı, listedeki sıralamayı bir bağ ile göstererek bu gerekliliği ortadan kaldırmıştır.
Soyut Veri Yapıları Bağlı Liste (Linked List) • Listenin her bir elemanına düğüm (node) adı verilir. • Bağ alanında bir sonraki düğümün adresi genellikle bir işaretçi (pointer) ile saklanır. • Eğer bilgi alanında kimlik no, ad, soyad gibi birden çok veri bulunuyorsa (bir struct yapısı gibi) ve bu alanlardan birkaç tanesine göre sıralama bilgisi tutulması gerekliyse, birden çok bağ alanı kullanılabilir.
Bağlı Liste Kullanmanın Avantajları • Yığın ve kuyrukların gerçekleştirilmesinde dizi kullanmanın dezavantajları: – – hiç kullanılmasa veya az kullanılsa bile sabit miktardaki belleğin bu yapılara ayrılması gerekir sabit bellek dolduğunda eleman eklenemez • Bağlı listeler kullanılırsa bu problemler ortadan kalkmaktadır: – Bellekten sabit miktarda bir yer ayrılmaz, ana bellek dolana kadar bu yapılara ekleme işlemi yapılabilir
Soyut Veri Yapıları Ağaç (Tree) • Ağaç yapıları sıradüzensel (hiyerarşik) bir yapıyı gerçekleştirmek için kullanılır. • Ağacın her bir elemanına da listede olduğu gibi düğüm (node) denir. • En üstteki elemana kök düğüm (root node), en uçtaki elemanlara ise yaprak düğüm (leaf node) denir. • Bir düğümü işaret eden (üst seviyedeki) düğüme ebeveyn düğüm (parent node), bir düğümün işaret ettiği (alt seviyedeki) düğümlere çocuk düğüm (child node) denir.
Soyut Veri Yapıları İkili Ağaç (Binary Tree) �Eğer bir ağaç yapısında her düğümün sadece iki çocuk düğümü olabiliyorsa ikili ağaç, ikiden çok çocuk düğümü olabiliyorsa çoklu ağaç denir. Ülke (kök) Türkiye Şehir (ülkenin çocuğu, ilçenin ebeveyni) İlçe (yaprak) İzmir Karşıyaka İstanbul Bornova Bakırköy Şişli
Soyut Veri Yapıları Ağaç (Tree) �Arama ve sıralama işlemleri için kullanılan İkili Arama Ağacı (BST: Binary Search Tree) gibi özel ağaç türleri de vardır. �Ağaç yapıları ikili veya çoklu bağlı listeler ile gerçekleştirilebilir. bağ 1 veri bağ 2 veri
Yığın Örneği: Palindrome • Verilen bir cümlenin palindrome olup olmadığını • • • belirleyen algoritmayı oluşturunuz. Palindrome: Düzden ve tersten aynı okunan sözcükler. (Örn. kabak, a man a plan a canal panama, … gibi) Algoritma: İlk olarak cümledeki boşlukları silin. Daha sonra tüm cümleyi bir yığına yerleştirin. Daha sonra yığından tek çekme (pop) yapın boşlukları kaldırılmış cümlenin karakterleri ile çektiğiniz karakterleri birer karşılaştırın.
Yığın Örneği: Hanoi Kuleleri �Şekilde gördüğünüz diskleri ilk çubuktan üçüncü çubuğa yine aynı sıra ile (aşağıdan yukarı büyükten küçüğe) taşıyın. Bir defada sadece 1 disk alıp başka bir çubuğa yerleştirebilirsiniz. Küçük diskin üzerine büyük disk yerleştiremezsiniz.
Diğer Veri Modelleri ve Türleri 80 �Graf Veri Modeli Aynı kümeye ait olan verilerin düğümler, ayrıtlar ve bunların birleştirilmesinden oluşur � Düğümler birleşme noktasını ayrıtlar da düğümlerin bağlantı ilişkisini gösterir Verilerin kendileri veya bir kısmı hem düğümlerde hem de ayrıtların bilgi kısmında tutulabilir
Diğer Veri Modelleri ve Türleri 81 Ağaçta olduğu gibi hiyerarşik bir durum yoktur � Yönlendirilmiş, hamilton maliyetli gibi özel graf tanımları vardır � Örn. Bir şehrin trafik veya su taşıma altyapısından en yüksek akışını sağlanması , taşıma şirketinin en verimli taşıma şekli veya ağ bağlantılarında yüksek başarımın elde edilmesi gibi problemler için kullanılır
Diğer Veri Modelleri ve Türleri 82 �Durum Makinası Veri Modeli Bir sistemindavranışını tanımlamak ve ortaya çıkarmak için kullanılan bir yaklaşım şeklidir; işletim sistemlerinde, derleyici/yorumlayıcılarda, kontrol amaçlı yazılımlarda sistemin davranışını durumlara indirger ve durumlar arası geçiş koşullarıyla sistemi ortaya koyar Şekli grafa benzer ancak birleşme noktaları graflarda olduğu gibi düğüm değil de durum, ayrıtlar da geçiş eğrileri olarak adlandırılır. Bir başlangıç durumu vardır, bir de son durumu varsa, sonlu durum makinası (finite state machine) oluşmuş olur.
Diğer Veri Modelleri ve Türleri 83 �Veritabanında İlişkisel Veri Modeli Veritabanı uygulamalarında kullanılan dört beş sınıftan birisidir. Tablolar üzerinde kurulan ilişkilere dayalıdır
84 �Her veri modelinin, altında duran veri yapısına bağlı olarak, işlem zaman maliyetleri ve bellek gereksinimleri farklıdır. �Program geliştirilirken, zaman ve bellek alanı maliyetlerini dengeleyecek çözümler üretilmeye çalışılır.
- Slides: 84