Yazılım Mühendisliğine Giriş 2018 GÜZ 1
İşletim Sistemi (Operating System) 2
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 defa çevrim dışı(offline) işletim sistemi (IBM system/360) kullanıldı. Daha sonra çevrim içi (online) zaman paylaşımlı işletim sistemlerine gelişti. 3
İş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. 4
Unix İşletim Sistemi Zaman paylaşımı (time-sharing) bilgisayar ortamını oluşturan kaynakların kullanıcılar arasında ortaklaşa kullanıldığı (her birinin kendi işini yaptığı) 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ığı(complexity) nedeni ile sonradan PL/1 dilinde yeniden programlanmıştır. 5
Unix İşletim Sistemi Ken Thompson 1971 (Bell Labs) Assembler dilinde UNICS (1969) sistemini yazmıştır; bu sistem daha sonra UNIX olmuştur. B, BCPL (C programlama dilinin basiti) ve C programlama dillerinde yazılan pek çok versiyonu sonunda 1974 de C dilinde yeni halini almıştır(thompson ve Ritchie). 6
IBM 704 mainframe bilgisayarlar 1953yı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 7
Unix yaşamına PDP-7 (Programmed Data Processor) minicomputer ile başlamıştır. Digital Equipment Corporation (DEC) 1965 8
UNIX işletim sisteminin yaygınlaşması TanenbaumUNIX 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 Lunixoldu. 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 dijitalunix -DEC) (Compaq) 9
Günümüzde Linux niçin yaygındır? Açık kaynak kodlu (opensource) bir işletim sistemidir. Linux kernelüzerine yazılmış ücretsiz bir işletim sistemidir. Hem kişisel kullanımlar (desktop) hem de sunucu kullanımı(server use) amaçlı olarak kullanılmaktadır. 10
Linux Dağıtımları 11
12
IT Endüstrisinde Unix Kullanımları İnternet üzerindeki sunucular %90 oranında Linux kullanır Facebook ve Google iki örneğidir. Android işletim sisteminin başlangıcı Linux tabanlı bir işletim sistemidir. T Bulut hesaplama (cloud computing) ve bulut saklama (cloud storage) sistemlerinde yaygın kullanılır. Amazon EC2(Amazon ElasticComputeCloud)önemli bir veri depolama uygulaması ve Linuxkullanır. SAP ve Oraclegibi büyük şirketler Unix üzerinde çalışırlar. 13
Günlük yaşamda Unix Androidtelefonlar. Evdeki yönlendirici (router)* Apple mac.. super Flat TV.. dijital kamera.. GPS *router, İnternet bağlantısını çeşitli cihazlarla paylaşan bir cihazdır. 14
Diğer İşletim Sistemleri BSD (Berkeley Software Distribution, Berkeley Unix) 1977-1995 yılları rasındafarklı platformlar için California Berkeley Üniversitesinde geliştirilmiş ve farklı bilgisayar sistemlerinde kullanılması sağlanmıştır. MAC Apple tarafından Apple Macintosh platformları için Sun/SolarisSun tarfındanfarklı platformalar için Unisys farklı platformlar için geliştirilmiştir. (Unisys firması tarafından) AmigaCommodore tarafından Amigaplatformu için geliştirilmiştir.
Kernel(Çekirdek) Nedir? Bilgisayar işletim sisteminin merkezi çekirdekkı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. 16
17
Shell (Kabuk) Nedir? Shell (kabuk) işletim sistemi ile kullanıcılar arasında arayüzgörevini sağlayan bir program parçasıdır. Shell (kabuk), kernel(çekirdek) servislerine erişebilmeyi sağlar. Shell, aynı zamanda bir programın en dış parçasıdır. Windows shell bir GUI graphical useinterface programı olarak çalışır. 18
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.. Kernelne kadar etkin olursa işletim sistemi de o kadar verimli çalışacaktır. 19
Shell ile Kernel Arasındaki Farklar Shell kullanıcı ile kernelarası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 20
Uygulama Programları İşletim Sistemi Programları Değildir Uygulama programları (applicationprograms) 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