BIM404_Sistem_Programlama_Ch1_Giris.pdf
Document Details
Uploaded by RetractableParrot
Yıldız Technical University
Tags
Full Transcript
BIM404 Sistem Programlama SİSTEM PROGRAMLAMAYA GİRİŞ Dr. Öğr. Üys. Abdullah Sönmez Ders Hakkında… Temel Kaynaklar: ▪ Advanced Programming in the UNIX Environment, Richard Stevens. Addison Wesley Press ▪ Jonathan Corbet, Alessandro Rubini, Greg-Koah Hartman, "Linux Device Drivers", O'Reilly, 2005, IS...
BIM404 Sistem Programlama SİSTEM PROGRAMLAMAYA GİRİŞ Dr. Öğr. Üys. Abdullah Sönmez Ders Hakkında… Temel Kaynaklar: ▪ Advanced Programming in the UNIX Environment, Richard Stevens. Addison Wesley Press ▪ Jonathan Corbet, Alessandro Rubini, Greg-Koah Hartman, "Linux Device Drivers", O'Reilly, 2005, ISBN 0-596-00590-3. (http://lwn.net/Kernel/LDD3/) ▪ John R. Levine, "Linkers and Loaders", Morgan-Kaufmann, 1999, ISBN 1-55860-496-0. ▪ System Programming with C and UNIX, Adam Hoover, Pearson. ▪ Paul Carter, "PC Assembly Tutorial". (http://pacman128.github.io/static/pcasm-book.pdf) ▪ Renesas M16C/62P Group Hardware Manual ▪ Jean J. Labrosse, MicroC/OS-II The Real-Time Kernel User’s Manual, Second Edition ▪ Jean J. Labrosse, MicroC/OS-III The Real-Time Kernel User’s Manual Yardımcı Kaynak(lar): ▪ C ve Sistem Programcılar Derneği Ders Notları Sistem Programlama 2 Değerlendirme YARIYIL İÇİ ÇALIŞMALARI Sayı KATKI YÜZDESİ Ara Sınav 1 30 Ödev 2 20 (Her biri %10) Toplam 50 Finalin Başarıya Oranı 50 Yıl içinin Başarıya Oranı 50 Toplam Sistem Programlama 100 3 Sistem Programlama Nedir? ▪ Sistem programlarının temelde iki amacı vardır: 1. Bilgisayar sistemlerinin kullanımını uzman olmayan kişiler için kolaylaştırır. 2. Sistemin kaynaklarının etkin ve verimli bir biçimde kullanılabilmesini sağlar. ▪ Sistem programlarının bir kısmı bilgisayar sistemi satın alındığında üzerinde yüklü olarak gelmekte, bir kısmı ise gerektikçe sonradan yüklenmektedir. Sistem Programlama 4 Bazı Örnekler ▪ Giriş / çıkış altprogramları paketi (Input / output subroutine packages) ▪ Monitörler ve Zamanlayıcılar (Monitors and schedulers) ▪ İşletim Sistemleri (Operating systems) ▪ Çeviriciler (Assemblers) ▪ Makroişlemciler (Macroprocessors) ▪ Yorumlayıcılar (Interpreters) ▪ Derleyiciler (Compilers) ▪ Bağlayıcı yükleyiciler (Linking loaders) ▪ Editörler (Editors) ▪ Hata ayıklayıcılar (Debuggers) ▪ Veri tabanı yönetim sistemleri (DBMS) ▪ Haberleşme yazılımları (Communications software) Sistem Programlama 5 Sistem Yazılımı Katmanları Sistem Programlama 6 Sistem Yazılımlarının Gelişimi ▪ Temel Fikir: Komutların saklanması ve tekrarlanabilmesi ▪ 1939’da Harvard’da Howard Aiken liderliğindeki bir grup tarafından saklanabilir programlı bilgisayar yapımı IBM’in de desteği ile başlatılmış. ▪ Mark I’in yapımı 1944’te tamamlanmış. ▪ Elektronik olarak komutları işleyebilip, tekrarlayabiliyormuş. ▪ Bilgi, elektromekanik rölelerde saklanıyormuş. ▪ Komutlar donanımsal olarak gerçeklenmiş. ▪ Çok yavaş olan bu makinede, çözmesi gereken problem tipi değiştiğinde tesisatın tekrar değiştirilmesi gerekiyormuş. ▪ Tekrar tesisatı değiştirmek ise birkaç hafta alıyormuş. Sistem Programlama 7 Sistem Yazılımlarının Gelişimi ▪ Bir sonraki adım: Probleme göre tekrar tesisatın döşenmesi önlemek. ▪ 1940’ların sonunda modern bilgisayarların atası olarak sayılan ENIAC’ın tasarımını yaparken John Von Neumann tarafından: ▪ «Hem verinin hem de komutların makinenin belleğinde nümerik kodlar şeklinde saklanması gerektiği» düşüncesi ortaya atılmış. ▪ ENIAC ile birlikte yeni bir problem için çözüm oluşturmak için makineyi kontrol eden nümerik kodlar (makine kodu) dizisi oluşturmak yeterli hale gelmiş durumda idi. ▪ Günümüzün modern bilgisayarları da genellikle Neumann mimarisinde üretilmektedir. Sistem Programlama 8 Sistem Yazılımlarının Gelişimi ENIAC Sistem Programlama 9 Sistem Yazılımlarının Gelişimi ▪ 2 tip veri girişi: ▪ Kısa programlar: Makine üzerindeki anahtarlar ile. ▪ Uzun programlar: Delikli kartlar ile Sistem Programlama 10 Sistem Yazılımlarının Gelişimi ▪ Programdaki hatayı düzeltecekseniz, ne yapacaksınız? ▪ Çok zahmetli, tekrar kart hazırlanması gerekli. ▪ Devrim niteliğinde bir çözüm: ▪ Bilgisayar neden kendi programlarının hazırlanmasında kullanılmasın? ▪ Buna çözüm: Çeviriciler (Assemblers) ve Monitörler ▪ Çevirici (Assembler) ▪ Makine kodları ile program geliştirmeye göre çok daha hızlı ve doğru bir şekilde program geliştirmeyi sağlayan bir sistem yazılımıdır. ▪ Makine kodu ile program geliştirmeye göre iki temel avantajı vardır: 1. Makine koduna göre çevirici kodunda düşünmek daha kolaydır. 2. Bir komutta ufak bir değişiklik yapıldığında bütün programı bozmaz, çünkü çeviriciler sembolik adreslemeyi kullanmaktadır. Sistem Programlama 11 Sistem Yazılımlarının Gelişimi ▪ Monitör ▪ Günümüzdeki işletim sistemlerinin temellerini oluşturan yazılımdır. ▪ Sistemi kontrol etmek amacı ile kullanılan elektromekanik bir terminal. ▪ Monitör yazılımı birkaç basit fakat faydalı komutları gerçeklemekte: ▪ Klavyeden program girişi ▪ Bilgisayar belleğinin içeriğinin görüntülenmesi ▪ Bir programın çalıştırılması. ▪ Bellekte istenilen bir bölümün değiştirilmesi ▪ Harici bir ortamdan programın yüklenmesi ▪ Harici bir ortama programın saklanması Sistem Programlama 12 Sistem Yazılımlarının Gelişimi ▪ Sonraki aşamalar: Makroişlemciler, bağlayıcı yazılımlar, derleyiciler, yorumlayıcılar, editörler, işletim sistemleri, çoklu-görev işletim sistemleri. ▪ Makroişlemciler ▪ Belirli kod parçaları için programcının kısaltmaları kullanabileceği metin işleme yazılımlarıdır. ▪ Sistematik bir şekilde değişiklikleri gerçekleştirir. ▪ Bağlayıcı yazılımlar ▪ Birden fazla kişi tarafından geliştirilen bir programın farklı kısımlarının yeniden yerleştirilebilir kod yardımı ile birleştirilmesi için kullanılır. ▪ Yeniden yerleştirilebilir (Relocatable) kod ▪ Derleme esnasında bilinmeyen sadece adresleri bilinen ancak kendileri bilinmeyen kod parçaları Sistem Programlama 13 Sistem Yazılımlarının Gelişimi ▪ Derleyici ▪ İnsanoğluna daha yakın yüksek seviyedeki bir dilde yazılmış programı makine diline çeviren dil işleme sistem yazılımıdır. ▪ Yorumlayıcılar ▪ Programcı tarafından başlangıçta program metni nasıl yazıldıysa o şekliyle programı çalıştırır. ▪ Makine koduna çevrim için ara bir katman yoktur. ▪ Yorumlayıcı o anda programın o satırında ne yapılmak istenildiğini analiz eder ve onu o anda gerçekleştirir. ▪ İşletim sistemleri ▪ Sistem kontrol yazılımlarıdır. ▪ Çoklu-görev işletim sistemleri ▪ Birçok kullanıcının eş zamanlı olarak sistem kaynaklarını kullanabilmesini sağlar. Sistem Programlama 14 Mikroişlemcilerin Gelişimi 1. 1971, dünyadaki ilk mikroişlemci: Intel 4004, 4 bit, 45 komut. 2. 1971 sonları, Intel’in 8 bitlik işlemcisi 8008, 128 K genişletilebilir bellek, 48 komut, toplama 20 µs. 3. 1973, Intel 8080, toplama 2 µs. 4. 1977, Intel 8085, dahili saat üreteci ve sistem kontrolörü, toplama 1.8 µs. 5. 1978, Intel 8086, 16 bit veri yolu, 20 bit adresleme 1M. adresleme, komut çalıştırma süresi: 400 ns., birçok saklayıcı içermekte ve erişim süresi 0.2 ns. 6. 1979, 8088, tek farkı 8 bitlik veri yolu. Sistem Programlama 15 Mikroişlemcilerin Gelişimi Sistem Programlama Yıl Mikroişlemci Fiziksel Bellek Alanı Yazmaç Uzunluğu 1974 8080 64K 8 1977 8085 64K 8 1978 8086 1 MB 16 1979 8088 1 MB 16 1980 8096 8K (İçsel) 16 1981 80186 1 MB 16 1981 80188 1 MB 16 1982 80286 16 MB 16 1985 80386 DX 4 GB 32 1987 80386 SL 32 MB 32 1988 80386SX 16 MB 32 1989 80486DX 4GB 32 1991 80486SX 4 GB 32 1994 Pentium 4 GB 32 16