Yazılım Mühendisliğine Giriş 5. Hafta 2016 GÜZ 1 C Dili ve İşaretçiler C programlama dili programların bellek adresinde yüksek düzeyli dillerden daha düşük düzeyde yazılabilmesini sağlar. Kısaca İşaretçi (Pointer) kullanımı ile bellekte adresleme yapılabilir. Bu özellik te C programlama dilini orta-düzey dil olarak sınıflandırır. 2 Yazılımın Dil Yelpazesi Daniel Spiewak tarafından 1998 yılında tanımlanan bu ölçeklendirmeye göre herhangi bir dil diğeri için bir öneri niteliğinde değildir. Örneğin herhangi bir kernel Ruby dilinde yazılamaz; ya da herhangi bir yedekleme (backup) sistemi Assemly dilinde yazılamaz. 3 Kernel Nedir? Bilgisayar işletim sisteminin merkezi çekirdek kısmını oluşturan bir programdır. Kernel sistem içerisinde oluşan her şeyi tümüyle kontrol altında tutar. CPU, bellek ve disk sürücüyü içeren donanım aygıtları ile iletişim kurar. Kernel doğrudan kullanıcı ile iletişime geçmez. Kernel, kabuk (Shell) ve diğer programlarla iletişim halindedir. 4 5 Shell Shell, işletim sistemi ile kullanıcılar arasında arayüz görevini sağlayan bir program parçasıdır. Shell , Kernel servislerine erişebilmeyi sağlar. Shell, aynı zamanda bir programın en dış parçasıdır. Windows™ shell bir GUI graphical use interface programı olarak çalışır. 6 GUI nedir? Grafik kullanıcı arayüzü (GUI) pencereler, ikonlar ve çeşitli menüler kullanır. GUI, dosya açma, dosya kapama, dosya taşıma, dosya silme gibi fare ile kolaylıkla yapılabilen işlemleri yürütür. 7 8 Kernel ile Shell Arasındaki Farklar Kernel bilgisayarın en temel düşük düzeyli hizmetlerini gerçekleştirir. Donanım-yazılım etkileşimi, bellek yönetimi gibi.. Kernel ne kadar etkin olursa işletim sistemi de o kadar verimli çalışacaktır. 9 Shell ile Kernel Arasındaki Farklar Shell kullanıcı ile kernel arasında arayüzdür. Kullanıcı kayıt olduğunda (logs) , login programı kullanıcı girişi ve şifreyi kontrol eder ve shell tarafından çalışacak olan program başlatılır 10 İşletim Sistemi (Operating System) 11 İşletim Sistemi (Operating System) İşletim sistemi bir yazılım programıdır ve bilgisayar donanımının bilgisayar yazılımı ile iletişim kurmasını ve işlem yapmasını (çalışmasını) sağlar. Genel amaçlı her bilgisayarda diğer programları çalıştırmak için işletim sistemi olması gereklidir. İşletim sistemleri klavyeden giriş değerlerinin alınması, ekranda çıktı olarak görüntülenmesini giriş /çıkışların dosyalarda tutulmasını, disk sürücüler ve yazıcılar gibi harici (peripheral) aygıtların kontrollerini sağlar. 12 Windows İşletim Sistemi Windows Microsoft firmasında IBM/PC platformları için bir GUI olarak hizmet üzere geliştirildi Windows 2000 multitask, multiprocessor, multiuser and multithreading olarak çalışmaktadır. İş dünyası ve laptop sistemlerinin İnternet ve Intranet bağlantıları, dosya ,yazıcı ve ağ kaynaklarına erişimini sağlar. Mart 2016 ‘da piyasadaki Windows kullanımların dağılımları 13 Unix İşletim Sistemi Unix AT&T çalışanları tarafından Bell Laboratuvarlarında 1969 yılında geliştirilmiştir. Farklı platformlar için çok görevli (multitask), çok işlemcili (multiprocessor), çoklu iş parçacığını kullanma (multithreading) ve çoklu kullanıcılı (multi-user) olarak hizmet sağlar. 1965 ‘de 3. kuşak bilgisayarlar (entegre devreler) ile ilk çevrim dışı(offline) işletim sistemi (IBM system/360) kullanıldı. Bu kuşak daha sonra çevrim içi (online) zaman paylaşımlı işletim sistemlerine gelişti. 14 Unix İşletim Sistemi Zaman paylaşımı (time-sharing) bilgisayar ortamını oluşturan kaynakların kullanıcılar arasında ortaklaşa (her biri yalnız işi yapılıyormuş gibi) kullanıldığı bilgisayar işletim düzenidir. UNIX, önce MIT de CTTS adı ile geliştirilmiştir ve Bell Lab.’da MULTICS (Multiplexed Information and Computing Service) olarak programlanmıştır. Bu sistemin Karmaşıklığı nedeni ile sonradan PL/1 dilinde yeniden programlanmıştır. 15 Unix İşletim Sistemi Ken Thompson 1971 (Bell Labs) Assembler dilinde yazmıştır. UNICS (1969) ve daha sonra UNIX olmuştur. B , BCPL (C programlama dilinin basiti) ve C programlama dillerindeki pek çok versiyonu sonunda 1974 de C dilinde yeni halini almıştır.(Thompson ve Ritchie) 16 UNIX işletim sisteminin yaygınlaşması Tanenbaum UNIX in giderek artan karmaşıklığını gidererek 1984 de MINIX isimli bir versiyonu ile öğretilebilecek bir sisteme dönüştürdü. Linus Torvalds 1991 de öğrenci iken kendi işletim sistemini geliştirdi. Kernel’in çıkarıldığı bu sistem daha sonra pek çok programcı tarafından yaygın olarak kullanılan Lunix oldu. Farklı şirketler UNIX e benzer, gereksinimlerine göre kendi işletim sistemlerini oluşturdu. Solaris (Microsystems), HP-UX (Hewlett-Packard), AIX (IBM ) Tru64 UNIX ( önceleri dijital UNIX - DEC) (Compaq) 17 Diğer İşletim Sistemleri BSD (Berkeley Software Distribution, Berkeley Unix) 1977 1995 yılları rasında farklı platformlar için California Berkeley Üniversitesinde geliştirilmiş ve farklı bilgisayar sistemlerinde kullanılması sağlanmıştır. MS-DOS (Disk Operating System) Microsoft tarafından IBM/PC platformaları için geliştirilmiştir. MAC Apple tarafından Apple Macintosh platformları için Sun/Solaris Sun tarfından farklı platformalar için Unisys farklı platformlar için geliştirilmiştir. (Unisys firması tarafından) Amiga Commodore tarafından Amiga platformu için geliştirilmiştir. İşletim Sistemlerinin Sınıflandırmaları Multitasking : Çoklu görev ile aynı zaman diliminde çalışan çoklu yazılım proseslerine izin verilir. Multiprocessor: Çoklu işlemci ile birden fazla bilgisayar işlemcisinin desteklenmesi ve kullanılmasıdır. Multithreading: Çoklu kullanım ile bir yazılım programının farklı parçalarının eşzamanlı olarak çalışmasıdır. Multi-user: Çoklu kullanıcıların aynı ya/ya da farklı zamanda aynı bilgisayarı kullanmalarına izin verilmesidir. 19 Unix yaşamına PDP-7 (Programmed Data Processor) minicomputer ile başlamıştır. Digital Equipment Corporation (DEC) 1965 20 Uygulama Programları İşletim Sistemi Programları Değildir Uygulama programları (application programs) doğrudan donanım tarafından çalıştırılır. İşletim sistemi programları ise giriş/çıkış ve bellek yerleşimi gibi donanım fonksiyonları için bilgisayar donanımı ve uygulama programları arasında bir aracı olarak çalışır. 21 22 IBM 704 mainframe bilgisayarlar 1953 yılında John W. Backus IBM 704 mainframe* (bilgisayarların ana işlem ünitesi) bilgisayarlarda çalışacak ve assembly diline pratik bir alternatif oluşturacak bir dil önerisinde bulunmuştur. Takım çalışmalarını 1956’daki ilk sürüm ile devam etmiştir. * CPU ile aynı anlama gelir 23 Think dergisi 1979 Backus ile röportaj John Backus 1979 yılında IBM çalışanlarının magazin dergisi Think ile röportajında şöyle söylemiştir. «Çalışmalarıın çoğu tembelliğimin sonucudur. Program yazmaktan hoşlanmıyordum. IBM 701 makinelerinde çalışırken yörünge atışlarının isabetlerini hesaplayan programlar yazıyorduk. Yazdığımız bu programların daha kolaylaşmasını sağlayan bir programlama sistemi üzerinde çalışmaya başladım». 24