Süleyman Demirel Üniversitesi / Mühendislik Fak. / Bilgisayar Mühendisliği Carnegie Mellon Bölümü Bilgisayar Sistemlerine Genel Bakış BIL-304: Bilgisayar Mimarisi Dersi veren öğretim üyesi: Yrd. Doç. Dr. Fatih Gökçe Ders kitabına ait sunum dosyalarından adapte edilmiştir: http://csapp.cs.cmu.edu/ Adapted from slides of the textbook: http://csapp.cs.cmu.edu/ Adapted from the slides of Bryant and O Hallaron, Computer Systems: A Programmer s Perspective book by Asst. Prof. Dr. Fatih Gökçe 1
Merhaba! #include <stdio.h> int main() { printf("merhaba,dunya\n"); return 0; }
ASCII Tablosu
printf.o merhaba.c Kaynak program (text) Önişleyici (cpp) merhaba.i Modifiye edilmiş kaynak program (text) Derleyici (cc1) merhaba.s Assembly program (text) Çevirici (as) merhaba.o Yeniden yerleştirilebilir programlar (binary) Bağlayıcı (ld) merhaba Çalıştırılabilir program (binary)
CPU Kaydedici dosyası PC ALU Sistem veriyolu Hafıza veriyolu Veri yolu arabirimi I/O köprüsü Ana Hafıza USB Grafik bağdaştırıcı I/O veriyolu Ağ bağdaştırıcı gibi diğer cihazlar için genişleme slotları Fare Klavye Ekran merhaba çalıştırılabilir programı diskte kayıtlı
CPU Kaydedici dosyası PC ALU Sistem veriyolu Hafıza veriyolu Veri yolu arabirimi I/O köprüsü Ana Hafıza "merhaba" USB Grafik bağdaştırıcı I/O veriyolu Ağ bağdaştırıcı gibi diğer cihazlar için genişleme slotları Fare Klavye Ekran Kullanıcı "merhaba" yazar
CPU Kaydedici dosyası PC ALU Sistem veriyolu Hafıza veriyolu Veri yolu arabirimi I/O köprüsü Ana Hafıza "Merhaba,Dunya\n" merhaba kodu USB Grafik bağdaştırıcı I/O veriyolu Ağ bağdaştırıcı gibi diğer cihazlar için genişleme slotları Fare Klavye Ekran merhaba çalıştırılabilir programı diskte kayıtlı
CPU Kaydedici dosyası PC ALU Sistem veriyolu Hafıza veriyolu Veri yolu arabirimi I/O köprüsü Ana Hafıza "Merhaba,Dunya\n" merhaba kodu USB Grafik bağdaştırıcı I/O veriyolu Ağ bağdaştırıcı gibi diğer cihazlar için genişleme slotları Fare Klavye Ekran "Merhaba,Dunya\n" merhaba çalıştırılabilir programı diskte kayıtlı
Önbellek CPU entegre çipi Kaydedici dosyası Önbellekler ALU Sistem veriyolu Hafıza veriyolu Veri yolu arabirimi I/O köprüsü Ana Hafıza
Hafıza Hiyerarşisi Daha küçük, daha hızlı ve daha pahalı (byte başına maliyet açısından) depolama cihazları Daha büyük, daha yavaş ve daha ucuz (byte başına maliyet açısından) depolama cihazları L6: L5: L4: L3: L2: L1: L0: Kaydediciler L1 önbellek (SRAM) L2 önbellek (SRAM) L3 önbellek (SRAM) Ana Hafıza (DRAM) Yerel ikincil depolama (yerel diskler) Uzak ikincil depolama (dağıtık dosya sistemleri, Web sunucular) CPU kaydedicileri, önbellekten alınan verileri tutar. L1 önbelleği, L2 önbelleğinden alınan verileri tutar. L2 önbelleği, L3 önbelleğinden alınan verileri tutar. L3 önbelleği, ana hafızadan alınan verileri tutar. Ana hafıza, yerel diskten alınan disk bloklarını tutar. Yerel diskler, uzak ağ sunucularında bulunan disklerden alınan dosyaları tutar.
Donanım İşletim Sistemi Tarafından Yönetilir Uygulama programları İşletim sistemi İşlemci Ana hafıza I/O cihazları Yazılım Donanım
Abstraction-Soyutlama İşlemler Sanal hafıza Dosyalar İşlemci Ana hafıza I/O cihazları
İşletim sisteminin bir işlemden başka işleme geçişi (Context Switch) A işlemi B işlemi Zaman read Kullanıcı kodu Çekirdek kodu Başka işleme geçiş kesmesi read den geri dönüş Kullanıcı kodu Çekirdek kodu Kullanıcı kodu Başka işleme geçiş İş parçacığı, yani Thread?
İşlem Sanal adres alanı Çekirdek sanal hafızası Kullanıcı yığını (çalışma zamanında oluşturulur) Kullanıcı kodu tarafından erişilemeyen hafıza bölgesi Paylaşımlı kütüphaneler için bellek haritalı alan printf fonksiyonu Çalışma zamanı bellek alanı (malloc tarafından oluşturulur) Program başlangıcı 0 Oku/yaz veri Salt okunur kod ve veri merhaba çalıştırılabilir dosyasından yüklenir.
CPU Kaydedici dosyası PC ALU Sistem veriyolu Hafıza veriyolu Veri yolu arabirimi I/O köprüsü Ana Hafıza Genişleme slotları I/O veriyolu USB Graphics bağdaştırıcı Ağ bağdaştırıcı Fare Klavye Ekran Ağ
1. Kullanıcı klavyeye "merhaba" yazar. 5. İstemci ekrana "Merhaba,Dunya\n" karakter dizisini yazar. Yerel telnet istemcisi 2. İstemci "merhaba" karakter dizisini telnet sunucusuna gönderir. 4. Telnet sunucusu Merhaba,Dunya\n" karakter dizisini istemciye gönderir. Uzak telnet sunucusu 3. Sunucu "merhaba" karakter dizisini, merhaba programını çalıştıracak ve çıktıyı telnet sunucusuna yönlendirecek olan konsola gönderir.
Tek çekirdek-çok çekirdek Tüm işlemciler Çok işlemcili Tek işlemcili Çokçekirdekli Hyperthread li
CPU entegre paketi Çekirdek 0 Kaydediciler Çekirdek 3 Kaydediciler L1 d-önbellek L1 i-önbellek L1 d-önbellek L1 i-önbellek L2 birleştirilmiş önbellek L2 birleştirilmiş önbellek L3 birleştirilmiş önbellek (tüm çekirdekler tarafından paylaşılır) Ana hafıza
Sanal Makina İşlemler Komut seti mimarisi Sanal hafıza Dosyalar İşletim sistemi İşlemci Ana hafıza I/O cihazları