Yazılım Mühendisliğine Giriş 5. Hafta

advertisement
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
Download