Professional Documents
Culture Documents
Operating System Concepts – 8th Edition, Silberschatz, Galvin and Gagne ©2009
Bölüm 2: Sistem Yapıları
Operating System Concepts – 8th Edition 2.2 Silberschatz, Galvin and Gagne ©2009
İşletim Sistemi Servisleri
Kullanıcı Arayüzleri
Sistem Çağrıları
Hata Koruma ve
Tespiti Güvenlik
Servisler
İşletim Sistemi
Donanım
Operating System Concepts – 8th Edition 2.4 Silberschatz, Galvin and Gagne ©2009
İşletim Sistemi Servisleri
Operating System Concepts – 8th Edition 2.5 Silberschatz, Galvin and Gagne ©2009
İşletim Sistemi Servisleri
Diğer bir İşletim Sistemi fonksiyonlar kümesi ise sistemin kendi çalışması sırasında
kaynak paylaşımı yaparak verimli çalışmayı sağlamaktadır
Kaynak Tahsisi (Resource allocation) – Birden çok kullanıcı veya işin
koşutzamanlı olarak çalışması gereken zamanlarda kaynaklar herbirine
paylaştırılmalıdır
Birçok kaynak çeşidi vardır - Bazılarının (CPU çevrimleri, ana bellek ve
cycles, dosya depolama) özel tahsis kodları vardır, diğerleri ( G/Ç aygıtları
gibi) genl istek ve serbest bırakma kodlarına sahiptir
Hesap Oluşturma (Accounting) – Hangi kullanıcıların ne kadar ve ne tip kaynak
kullanıldığının izlenebilmesi için
Koruma ve Güvenlik (Protection and security) – Çokkullanıcılı veya ağa bağlı
bilgisayar sistemlerinde bilgi sahipleri bilginin kullanımını kontrol etmek isterler.
Ayrıca koşutzamanlı süreçler birbirlerini engellememelidir.
Koruma bütün sistem kaynaklarına erişimin kontrol edilmesinin garanti altına
alınmasını gerektirir
Sistemin dışarıdakilere karşı Güvenli olması ise dış G/Ç aygıtlarına karşı
geçersiz erişim teşebbüslerinin engellenmesini sağlayan kullanıcı kimlik
doğrulama sisteminin mevcut olması anlamına gelir
Bir sistemin korunmuş ve güvenli olabilmesi için gerekli önlem zincirlerinin
alınması gerekmektedir. "Bir zincir ancak en zayıf halkası kadar kuvvetlidir."
Operating System Concepts – 8th Edition 2.6 Silberschatz, Galvin and Gagne ©2009
İşletim Sistemi Kullanıcı Arayüzü - CLI
Operating System Concepts – 8th Edition 2.7 Silberschatz, Galvin and Gagne ©2009
Bourne Kabuğu Komut Yorumlayıcısı
(Bourne Shell Command Interpreter)
Operating System Concepts – 8th Edition 2.8 Silberschatz, Galvin and Gagne ©2009
İşletim Sistemi Kullanıcı Arayüzü - GUI
Kullanıcı dostu masaüstü metafor arayüzü
Genellikle fare, klavye ve monitör
İkonlar dosyaları, programları, eylemleri vb. temsil eder
Farklı fare düğmeleri nesneler üzerinde farklı eylemler gerçekleştirir
(bilgi alma, seçenekler, fonksiyon çalıştırma, klasörü açma, vb.)
Xerox PARC tarafından bulunmuştur
Birçok sistem hem Komut Satırı (CLI) hem de Grafiksel Kullanıcı (GUI)
arayüzüne sahiptir
Microsoft Windows CLI komut kabuğuna (“command” shell) sahip bir
GUI'dir
Apple Mac OS X (Aqua) ise UNIX çekirdeği (kernel) ve kabuklarına
(shell) sahip bir GUI arayüzüne sahiptir
Solaris ise opsiyonel GUI arayüzlerine (Java Desktop, KDE) sahip bir
Komut Satırı Arayüzüdür (CLI)
Operating System Concepts – 8th Edition 2.9 Silberschatz, Galvin and Gagne ©2009
Sistem Çağrıları
Servislerin programlama arayüzleri işletim sistemi tarfaından sağlanır
Genellikle üst seviye bir dille (C veya C++) yazılmışlardır
Çoğunlukla direk sistem çağrısının kullanılması yerine üst seviye Kullanıcı
Program Arayüzleri (Application Program Interface (API)) kullanan
programlar tarafından erişilirler
En yaygın kullanaılan API'ler Windows için Win32 API, POSIX tabanlı
sistemler (UNIX, Linux ve Mac OS X türleri) için POSIX API ve Java Sanal
Makinası (Java Virtual Machine (JVM)) için Java API'sidir
Operating System Concepts – 8th Edition 2.11 Silberschatz, Galvin and Gagne ©2009
Sistem Çağrı Örneği
Bir dosyanın içeriğini diğer bir dosyaya kopyalamak için gerekli Sistem
Çağrı Sıralaması
Operating System Concepts – 8th Edition 2.12 Silberschatz, Galvin and Gagne ©2009
Standard API Örneği
Win32 API'sindeki ReadFile() (dosyadan okuma için bir fonksiyon) fonksiyonunu ele
alalım
dönen değer
parametreler
Fonksiyon adı
ReadFile() fonksiyonuna geçirelen parametrelerin açıklaması
HANDLE file — okunacak dosya
LPVOID buffer — verinin okunacağı ve yazılacağı tampon bellek
DWORD bytesToRead — tampon belleğe okunacak byte'ların sayısı
LPDWORD bytesRead — son okuma sırasında okunan byte'ların sayısı
LPOVERLAPPED ovl — çakışan G/Ç kullanılıp kullanılmadığını gösterir
Operating System Concepts – 8th Edition 2.13 Silberschatz, Galvin and Gagne ©2009
Sistem Çağrı Uygulaması
Tipik olarak, her sistem çağrısı ile ilgili bir numara vardır
Sistem Çağrı arayüzü, bu numaralara göre endeksli bir tablo tutar.
Sistem çağrı arayüzü, işletim sistemi çekirdeğinde amaçlanan sistem
çağrısını çağırır ve sistem çağrısı durumu ile dönüş değerlerini döndürür
Çağırıcının (caller) sistem çağrısının nasıl uygulanacağı hakkında bir şey
bilmesi gerekli değildir
Sadece API'ye itaat etmeli ve İşletim sisteminin sonuç çağrısı olarak ne
yapacağını anlamalıdır
İşletim sistemi arayüzünün birçok detayı API tarafından kullanıcıdan
gizlenir
Run-time destek kitaplığı (fonksiyonların bir kümesi derleyici ile
gelen kütüphanelerin içerisinde yerleşiktir) tarafından
yönetilmektedir.
Operating System Concepts – 8th Edition 2.14 Silberschatz, Galvin and Gagne ©2009
API – Sistem Çağrısı – OS İlişkisi
kullanıcı uygulaması
Kullanıcı
modu
Sistem Çağrı Arayüzü
Çekirdek
modu
open() sistem
çağrısının
işlenmesi
kayıtçı
X: çağrılacak
parametreler
X tablosundaki Sistem
parametreleri
Adresi yükle X
kullan çağrısı 13
Sistem çağrısı 13 için kod
Kullanıcı programı
İşletim sistemi
Operating System Concepts – 8th Edition 2.16 Silberschatz, Galvin and Gagne ©2009
Sistem Çağrısı Parametre Geçişi
Çoğu zaman sadece istenen sistem çağrısının kimliğinden daha fazla
bilgiye ihtiyaç vardır
Bilginin miktarı ve tipi, OS ve çağrıya göre değişmektedir
OS'e parametre geçişi için üç genel metot kullanılır
En Basiti: parametreleri kayıtçılara (register) geçirmektir
Bazı durumlarda kayıtçıların sayısından çok parametre olabilir. Bu
durumlarda parametreler bellekte bir blok (ya da tablo) şeklinde saklanır
ve bloğun adresi bir kayıtçıya geçilir
Bu yaklaşım Linux ve Solaris tarafından kullanılmaktadır
Parametreler program tarafından bir yığına (stack) yerleştirilir (push) ve
işletim sistemi tarafından çekilir (pop)
Blok ve yığın metotları geçilecek parametrelerin uzunluğunu sınırlamaz
Operating System Concepts – 8th Edition 2.17 Silberschatz, Galvin and Gagne ©2009
Sistem Çağrısı Tipleri
Süreç Kontrolü
end, abort
load, execute
Süreç yaratma, süreç sonlandırma
Süreç özelliklerinin okunması ve ayarlanması
Bekleme
Olay bekleme, olay işaretleme
Bellek tahsisi ve boşaltılması
Dosya Yönetimi
Dosya yaratma, silme
Aç, kapa
Okuma, yazma, yeniden yerleştirme
Dosya özelliklerinin okunması ve ayarlanması
Operating System Concepts – 8th Edition 2.18 Silberschatz, Galvin and Gagne ©2009
Sistem Çağrısı Tipleri
Aygıt Yönetimi
Aygıtı isteme ve serbest bırakma
Okuma, yazma ve yeniden yerleştirme
Aygıt özelliklerinin okunması ve ayarlanması
Aygıtların mantıksal olarak eklenmesi ve çıkarılması
Bilgi Bakımı
Zaman veya tarihin okunması ve ayarlanması
Sistem verisinin okunması ve ayarlanması
Süreç, dosya veya aygıt özelliklerinin okunması
Süreç, dosya veya aygıt özelliklerinin ayarlanması
İletişim
İletişim bağlantısının yaratılması ve silinmesi
Mesaj gönderme, alma
Durum bilgisinin iletilmesi
Uzak aygıtların eklenmesi ve çıkarılması
Koruma
Operating System Concepts – 8th Edition 2.19 Silberschatz, Galvin and Gagne ©2009
Windows ve Unix Sistem Çağrı Örnekleri
Süreç
kontrol
Dosya
yönetim
Aygıt
yönetim
Bilgi
bakımı
İletişim
Koruma
Operating System Concepts – 8th Edition 2.20 Silberschatz, Galvin and Gagne ©2009
Standard C Kütüphanesi Örneği
write() sistem çağrısını çağıran printf() komutunu kullanan C programı
Operating System Concepts – 8th Edition 2.21 Silberschatz, Galvin and Gagne ©2009
MS-DOS Çalışması
boş bellek
boş bellek
süreç
komut
yorumlayıcı komut
yorumlayıcı
çekirdek çekirdek
Operating System Concepts – 8th Edition 2.22 Silberschatz, Galvin and Gagne ©2009
Çoklu Program Çalıştıran FreeBSD
Süreç D
boş bellek
Süreç C
yorumlayıcı
Süreç B
çekirdek
Operating System Concepts – 8th Edition 2.23 Silberschatz, Galvin and Gagne ©2009
Sistem Programları
Operating System Concepts – 8th Edition 2.24 Silberschatz, Galvin and Gagne ©2009
Sistem Programları
Program geliştirme ve çalıştırma için uygun bir ortam sağlar
Bunlardan bazıları sistem çağrıları için basit kullanıcı arayüzleri iken bazıları da
daha karmaşıktır
Dosya yönetimi (File management) – Yaratma (create), silme (delete), kopyalama
(copy), yeniden adlandırma (rename), yazdırma (print), döküm alma (dump),
listeleme (list), ve genel olarak dosyalar ve klasörler üzerinde işlem yapmak
Durum bilgisi (Status information)
Bazıları sistem bilgisi verir – tarih, zaman, mevcut bellek miktarı, disk alanı,
kullanıcı sayısı, vb.
Bazıları ise detaylı performans, günlük (log) ve hata ayıklama (debugging) bilgisi
verir
Genelde bu programlar çıktıyı düzenler ve terminal ya da diğer çıkış
aygıtlarından yazdırırlar
Bazı sistemler konfigürasyon bilgisini kaydetmek ve gerektiğinde ulaşmak için bir
kütük (registry) tutarlar
Operating System Concepts – 8th Edition 2.25 Silberschatz, Galvin and Gagne ©2009
Sistem Programları
Dosya üzerinde değişiklikler (File modification)
Dosya yaratmak ve düzenlemek için metin editörleri
Dosyaların içeriğini aramak veya metin üzerinde dönüşümler
gerçekleştirmek için özel komutlar
Programlama dili desteği – Derleyiciler (compilers), çevirici programlar
(assemblers), hata ayıklayıcılar (debuggers) ve yorumlayıcılar (interpreters)
Program yükleme ve çalıştırma – Kesin Yükleyiciler (absolute loaders),
yeniden yerleştirilebilir yükleyiciler (relocatable loader), bağlantı editörleri
(linkage editor) ve kaplama yükleyiciler (overlay loader), üst seviye hata
ayıklama sistemleri ve makine dili (machine language) gibi programlar
vardır
İletişim – Süreçleri kullanıcılar ve biligsayar sistemleri arasında sanal
bağlantılar yaratmak için mekanizmalar sağlar
Kullanıcıların diğerlerinin ekranların mesajlar göndermesine, web
sayfalarını gezmelerine, elektronik posta mesajları göndermelerine, bir
makineden diğerine dosya transfer etmelerine olanak sağlarlar
Operating System Concepts – 8th Edition 2.26 Silberschatz, Galvin and Gagne ©2009
İşletim Sistemi Tasarım ve Gerçekleştirimi
Operating System Concepts – 8th Edition 2.27 Silberschatz, Galvin and Gagne ©2009
İşletim Sistemi Tasarım ve Gerçekleştirimi
Şu iki önemli prensip birbirinden ayrılmalıdır
Politika (Policy): Ne yapılacak?
Mekanizma (Mechanism): Nasıl yapılacak?
Mekanizmalar birşeyin nasıl yapılacağına, politikalar ise ne yapılacağına
karar verir
Politikanın mekanizmadan ayrılması çok önemli bir prensiptir. Politika
kararlarının daha sonra değiştirilmesi durumunda maksimum esneklik
sağlar
Operating System Concepts – 8th Edition 2.28 Silberschatz, Galvin and Gagne ©2009
İşletim Sistemi Yapısı
1. Basit Yapı
MS-DOS – en az alanda en çok fonksiyonellik sağlamak için yazılmıştır
Modüllere bölünmemiştir
MS-DOS'un bir yapısı olmasına rağmen, arayüzleri ve fonksiyonellik
seviyeleri iyi bir şekilde ayrılmamışlardır
Operating System Concepts – 8th Edition 2.29 Silberschatz, Galvin and Gagne ©2009
İşletim Sistemi Yapısı
MS-DOS Katman Yapısı
Uygulama programı
MS-DOS aygıt
sürücüleri
Operating System Concepts – 8th Edition 2.30 Silberschatz, Galvin and Gagne ©2009
İşletim Sistemi Yapısı
2. Katmanlı Yaklaşım
OS birçok katmana (seviye) bölünmüştür ve herbiri alt katmanların (layer)
üzerinde yeralır. En alt katman (katman 0) donanımdır, en üst katman
(katman N) ise kullanıcı arayüzüdür.
Modülerlik sayesinde katmanlar sadece alt seviye katmanların sağladığı
fonksiyon (operasyon) ve servisleri kullanacak şekilde seçilmektedir.
Operating System Concepts – 8th Edition 2.31 Silberschatz, Galvin and Gagne ©2009
İşletim Sistemi Yapısı
Geleneksel UNIX Sistem Yapısı
(kullanıcılar)
Kabuklar (shell) ve Komutlar
Derleyici (compiler) ve Yorumlayıcılar (interpreters)
Sistem kütüphaneleri
Çekirdeğe doğru sistem çağrısı arayüzü
Sinyal terminali Dosya sistemi CPU İş Planlaması
Çekirdek
Operating System Concepts – 8th Edition 2.32 Silberschatz, Galvin and Gagne ©2009
İşletim Sistemi Yapısı
UNIX
UNIX – donanım fonksiyonelliğe ile sınırlıdır. Orijinal UNIX işletim
sistemi sınırlı bir yapıya sahiptir. UNIX OS iki ayrı parçadan
oluşmaktadır
Sistem programları
Çekirdek (kernel)
Sistem çağrısı arayüzünün altı ile fiziksel donanımın üstünde
kalan herşey
Dosya sistemini, CPU iş planlamasını, bellek yönetimini ve
diğer işletim sistemi fonksiyonlarını (tek bir seviye için oldukça
fazla fonksiyon) barındırır
Operating System Concepts – 8th Edition 2.33 Silberschatz, Galvin and Gagne ©2009
İşletim Sistemi Yapısı
Katmanlı Bir İşletim Sistemi
Katman N
Kullanıcı arayüzü
Katman 1
Katman 0
Donanım
Operating System Concepts – 8th Edition 2.34 Silberschatz, Galvin and Gagne ©2009
İşletim Sistemi Yapısı
3. Mikroçekirdek (Microkernel) Sistem Yapısı
Birçok şey çekirdekten kullanıcı alanına taşınmıştır
İletişim, kullanıcı modülleri arasında mesaj geçme (message passing)
kullanılarak gerçekleştirilir
Faydaları:
Bir mikro çekirdeği (microkernel) genişletmek daha kolaydır
İşletim sistemini yeni mimarilere taşımak daha kolaydır
Daha güvenilir (çekirdek modunda daha az kod çalışmaktadır)
Daha güvenli
Zararları:
Kullanıcı alanı ile çekirdek alanı arasındaki iletişimde performans
sorunu (overhead)
Örnek: Mach, Mac OS X çekirdeği, Windows NT'nin ilk sürümü katmanlı
mikroçekirdek yapıya sahiptir.
Operating System Concepts – 8th Edition 2.35 Silberschatz, Galvin and Gagne ©2009
İşletim Sistemi Yapısı
Mac OS X Yapısı
Uygulama ortamları
ve ortak servisler
Çekirdek
ortamı
Operating System Concepts – 8th Edition 2.36 Silberschatz, Galvin and Gagne ©2009
İşletim Sistemi Yapısı
4. Modüller
Çoğu modern işletim sisteminde çekirdek modülleri kullanılmaktadır
Nesne tabanlı yaklaşımı kullanmaktadır
Her çekirdek bileşeni bağımsızdır
Birbirleri ile bilinen arayüzler aracılığı ile konuşmaktadırlar
Her biri ihtiyaç duyulduğunda çekirdeğe yüklenebilmektedir
Özetle, katmanlara benzerdir ancak daha esnektir
Operating System Concepts – 8th Edition 2.37 Silberschatz, Galvin and Gagne ©2009
İşletim Sistemi Yapısı
Solaris Modüler Yaklaşımı
İş planlama
sınıfları
Aygıt ve diğer Dosya
Veriyolu sistemleri
sürücüleri
Merkez
SOLARIS
Çeşitli Çekirdeği Yüklenebilir
modüller Sistem çağrıları
STREAMS Çalıştırılabilir
modülleri formatlar
Operating System Concepts – 8th Edition 2.38 Silberschatz, Galvin and Gagne ©2009
Sanal Makineler
Operating System Concepts – 8th Edition 2.39 Silberschatz, Galvin and Gagne ©2009
Sanal Makinelerin Tarihçesi ve Faydaları
Ticari olarak ilk 1972 yılında IBM ana bilgisayarlarında (mainframe)
görülmüştür
Temelde çoklu çalıştırma ortamları (farklı işletim sistemleri) aynı donanımı
paylaşabilir
Tabi ki birbirinden korunarak
Bazı dosya paylaşımlarına izin verilmiştir, ancak kontrollü olarak
Birbirlerini ve diğer fiziksel sistemleri ağ aracılığı ile yönlendirmektedirler
Geliştirme ve test için kullanışlıdır
Birçok az kaynak kullanan sistem daha meşgul sistemlere yardım
etmektedir
"Açık Sanal Makine Formatı" (Open Virtual Machine Format) standardı bir
sanal makinenin (VM) birçok farklı sanal makine sunucu (host) platformunda
çalışmasına olanak vermektedir
Operating System Concepts – 8th Edition 2.40 Silberschatz, Galvin and Gagne ©2009
Sanal Makineler
süreçler
süreçler
süreçler süreçler
Programlama
arayüzü
çekirdek çekirdek çekirdek
çekirdek
Sanal makine uygulaması
Non-virtual Machine
donanım Virtual Machine
donanım
Operating System Concepts – 8th Edition 2.41 Silberschatz, Galvin and Gagne ©2009
Para-virtualization
Kullanıcıya benzer ama aynı olmayan donanım sunmaktadır
Para-virtaulize edilmiş donanımda çalışmak için kullanıcı modifiye
edilmelidir
Avantajı kaynakları daha verimli kullanılması ve daha küçük bir
sanallaştırma katmanına sahip olmasıdır.
Kullanıcı bir işletim sistemi ya da Solaris'de olduğu gibi bir konteyner içinde
çalışan 10 uygulama olabilir
Operating System Concepts – 8th Edition 2.42 Silberschatz, Galvin and Gagne ©2009
Para-virtualization
İki Konteynerli Solaris 10
Kullanıcı Kullanıcı Kullanıcı
programları programları programları
Sistem Sistem programları Sistem programları
programları Ağ adresleri Ağ adresleri
CPU kaynakları Aygıt erişimi Aygıt erişimi
Bellek kaynakları CPU kaynakları CPU kaynakları
Bellek kaynakları Bellek kaynakları
Alan 1 Alan 2
Sanal platform
Global alan Aygıt yönetimi
Alan yönetimi
Solaris çekirdeği
Ağ adresleri
aygıt aygıt
Operating System Concepts – 8th Edition 2.43 Silberschatz, Galvin and Gagne ©2009
Örnekler
VMware Mimarisi
uygulama uygulama uygulama uygulama
sanallaştırma katmanı
donanım
CPU bellek G/Ç aygıtları
Operating System Concepts – 8th Edition 2.44 Silberschatz, Galvin and Gagne ©2009
Örnekler
Java Sanal Makinesi (Java Virtual Machine)
Operating System Concepts – 8th Edition 2.45 Silberschatz, Galvin and Gagne ©2009
İşletim Sistemi Hata Ayıklama
Hata ayıklama (Debugging) hataları (error veya bug) bulma ve düzeltme
işlemidir
İşletim sistemleri hata bilgilerinin bulunduğu kütük dosyaları (log file)
oluştururlar
Bir uygulamadaki hata o sürecin bellek durumunu kapsayan bir çekirdek
dökümü (core dump) dosyası oluşturur
İşletim sistemindeki bir hata ise çekirdeğin bellek durumunu içeren bir
kilitlenme bilgi dökümü (crash dump) dosyası oluşturur
Performans ayarlaması yapılarak sistem performansı optimize edilebilir
Solaris, FreeBSD ve Mac OS X'deki DTrace aracı üretim sistemleri üzerinde
canlı araçlara olanak sağlar. Örneğin;
Sondalar (Probes) kod çalıştığı zaman çalışır ve verinin durumunu
yakalayarak bu sondaların müşterilerine gönderir
Operating System Concepts – 8th Edition 2.46 Silberschatz, Galvin and Gagne ©2009
İşletim Sistemi Yaratılması
İşletim Sistemleri tüm makine sınıflarında çalışacak şekilde tasarlanırlar;
sistem her spesifik bilgisayar tipi için konfigüre edilmelidir
SYSGEN programı donanım sisteminin özel konfigürasyonu hakkında bilgi
toplar
Sistem Başlatma (Booting) – çekirdeği yükleyerek bilgisayarı başlatma
Önyükleyici (Bootstrap) programı – çekirdeğin yerini belirleme, bunu belleğe
yükleme ve çalıştırmaya başlatma işlemlerinin yapılmasını sağlayan ve
ROM üzerinde saklanan program kodudur.
Operating System Concepts – 8th Edition 2.47 Silberschatz, Galvin and Gagne ©2009
Sistem Başlatılması (System Boot)
İşletim Sistemi donanım tarafından ulaşılabilir olmalıdır, böylece donanım
onu başlatabilir
Küçük bir kod parçası – önyükleyici (bootstrap loader) çekirdeğin yerini
belirler, belleğe yükler ve çalıştırır
Bazen iki adımlı süreç kullanılır. Bunda sabit bir yere sahip başlatma
bloğu (boot block) önyükleyiciyi yükleyiciyi(bootstrap loader) yükler
Sisteme güç verildiği zaman, çalıştırma belirli ve sabit bir bellek
alanından başlatılır
Başlangıç kodunu tutmak için donanım yazılımı (Firmware) kullanılır
Operating System Concepts – 8th Edition 2.48 Silberschatz, Galvin and Gagne ©2009
Bölüm 2 Son
Operating System Concepts – 8th Edition, Silberschatz, Galvin and Gagne ©2009