BTP201 01

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 46

BTP201 İşletim Sistemleri

İşletim Sisteminin Sunduğu Servisler


(İşletim sistemi ne yapar, nasıl yapar ve neden
yapar?)
BTP201 İşletim Sistemleri

İşletim sisteminin sunduğu servisler

Kullanıcı ve işletim sistem ile etkileşim (Arayüzler)

Sistem çağrıları

Sistem servisleri

Bağlayıcılar ve yükleyiciler

Yazılımlar ile işletim sistemi ilişkisi

İşletim sisteminin tasarımı ve uygulanması

İşletim sisteminin inşası ve çalıştırılması

İşletim sistemlerinde hata ayıklama
BTP201 İşletim Sistemleri

İşletim sisteminin sunduğu servisler dediğimizde;
– Uygulama ve sistem yazılımlarının çalışma ortamını
– Uygulama ve sistem yazılımlarının çalışması için gerekli olan servisleri
sağlamak
BTP201 İşletim Sistemleri

İşletim sisteminden servis/hizmet alınması (kullanıcı açısından):
– Kullanıcı arayüzleri

Grafik arayüz

Komut satırı

Diğer arayüzler
BTP201 İşletim Sistemleri

İşletim sisteminden servis/hizmet almak (kullanıcı açısından):
– Kullanıcı arayüzleri
– Uygulama yazılımlarının çalıştırılmasını sağlamak
– Uygulama yazılımlarının çalışması için gerekli olan G/Ç işlemlerini
yapmak
– Dosya sistemi ve ilgili işlemleri yürütmek
– Uygulama yazılımları arasında ve ağ üzerinden iletişim kurulmasını
sağlamak
– Hata olduğunda;

Gerekli işlemleri yapmak
BTP201 İşletim Sistemleri

İşletim sisteminden servis/hizmet almak (sistem performansını
arttırmak için):
– Kaynak paylaşımı sağlamalı
– Kayıt tutmalı
– Güvenilir ve güvenli olmalı

Koruma, ayrım

Güvenlik
BTP201 İşletim Sistemleri
UYGULAMA YAZILIMLARI

KULLANICI ARAYÜZLERİ

SİSTEM ÇAĞRILARI

Yazılım/Program G/Ç İşlemleri Dosya Sistemi İletişim İŞLETİM


Çalıştırmak
SİSTEMİ ve
Kaynak Güvenlik Hata Kayıt SERVİSLERİ
Paylaşımı Koruma Ayıklama Tutma

DONANIM
BTP201 İşletim Sistemleri

İşletim sisteminde kullanıcı arayüzleri: KOMUT SATIRI
– Kullanıcı ile sistem arasında etkileşim sağlar.
– İşletim sisteminin parçası olabilir.
– Sistem yazılımı olabilir.
– Farklı uygulamaları vardır: ksh, csh, sh, bash, fish, zsh...
– Bazı işlevler doğrudan yorumlayıcının parçasıdır.
– Tasarımı ve uygulaması işlevlerine göre değişir.
BTP201 İşletim Sistemleri

İşletim sisteminde kullanıcı arayüzleri: Grafik Arayüzler
– Grafik arayüz;

İcat eden XEROX PARC

Pencere yöneticisi (window manager (fluxbox, openbox, twm vb)

Masaüstü ortamı (KDE, GNOME, Lumina, LXDE, LXQt, vb)

Tümleşik masaüstü ortamı (Mac OS:Aqua, Windows:Windows)
– Teknik olarak bir metin terminalidir.
BTP201 İşletim Sistemleri

İşletim sisteminde sistem çağrıları
– Application Programming Interface – API
– İki program arasında iletişim kurulabilmesini sağlayan bir arayüzdür.
– Sistem çağrısı: komut ve parametrelerden oluşur.

Doğrudan CPU/register atanır.

Dolaylı olarak bellek üzerinden erişilir.
– C/C++ bazen de Assembly ile yazılır.
– Win32 API, POSIX API, JAVA API – JVM
BTP201 İşletim Sistemleri

İşletim sisteminde sistem çağrıları
– Sistem çağrıları numaralandırılmıştır.

Tablo olarak bulunur.
– Sistem çağrısına istek yapıldığında;

Durum bilgisi ve ilgili parametreler döndürülür.
– Çağrıda bulunan açısından;

Ayrıntılar önemli değildir.

API hangi komutları ve değerleri kabul ettiği önemlidir.

Derleme anında ilgili dosyalar (statik veya dinamik derlenir) bağlanır.
BTP201 İşletim Sistemleri
Uygulama Yazılımı

USER SPACE
Sistem Çağrıları Arayüzü
KERNEL SPACE

İ
N
Sistem
D
Çağrısı
E
X
BTP201 İşletim Sistemleri

Sistem çağrılarına parametre aktarımı
– Sadece sistem çağrısının index numarası tek başına yeterli değildir.

İşletim sistemine göre çağrının uygulama şekli değişir.
– Yaygın olarak üç uygulama şekli vardır:
(1)Parametreler doğrudan CPU/Register aktarılır.
(2)Blok modeli: Parametreler bellekte bir alanda/tabloda saklanır. İlgili
adres CPU/Register aktarılır. (Linux ve Solaris)
(3)Parametreler program tarafından yığıta aktarılır (PUSH). Kernel yığıttan
parametreleri alır. (POP)
BTP201 İşletim Sistemleri

Çeşitli sistem çağrıları: Süreçler
– Süreç oluştur, sonlandır
– Normal olarak sonlandır, hata nedeni ile sonlandır
– Yükle, çalıştır
– Belirli bir süre bekle, sinyali bekle, olayı bekle
– Bellek ayır, bellek ata, belleği geri al
– Hata nedeni ile bellek dökümü yap
– Hata ayıklama
– Kilitleme
BTP201 İşletim Sistemleri

Çeşitli sistem çağrıları: Dosya yönetimi
– Dosya oluştur, dosya sil
– Dosya aç, dosya kapat
– Dosya oku, dosya yaz, yeniden konumlandır
– Dosya özelliklerini tanımla/değiştir, dosya özelliklerini oku
BTP201 İşletim Sistemleri

Çeşitli sistem çağrıları: Aygıt yönetimi
– Aygıtı al, aygıtı bırak
– Oku, yaz, konumlandır
– Aygıt özelliklerini tanımla/değiştir, aygıt özelliklerini oku
– Mantıksal olarak aygıtları ayır/mantıksal olarak aygıtları bağla
BTP201 İşletim Sistemleri

Çeşitli sistem çağrıları: Süreçler arasında iletişim yönetimi
– İletişim kur, iletişimi sonlandır.
– İletişim mesajlaşarak gerçekleşirse;

mesajları al, mesajları gönder
– Paylaşılan bellek adresleri ile gerçekleşirse;

Bellek alanlarına erişim sağla ve sonlandır.
– Aygıt durum bilgisini izle, ilet
– Uzak aygıtları bağla, ayır
BTP201 İşletim Sistemleri

Çeşitli sistem çağrıları: Bilgi yönetimi
– Zaman bilgisi oku, zaman bilgisini ayarla
– Sistem verisini oku, sistem verisini ayarla
– Süreçlere, aygıtlara ve dosyalara ait özellikleri oku/düzenle
BTP201 İşletim Sistemleri

Çeşitli sistem çağrıları: Koruma ve güvenlik
– Kaynak paylaşımını kontrol et, düzenle
– Yetkileri düzenle
– Erişim izinlerini düzenle
BTP201 İşletim Sistemleri

Çeşitli sistem çağrıları: Windows ve UNIX
– Süreç Kontrol:

CreateProcess() fork()

Exitprocess() exit()

WaitForSingleObject() wait()
– Dosya Yönetimi

CreateFile() open()

ReadFile() read()

WriteFile() write()

CloseHandle() close()
BTP201 İşletim Sistemleri

Çeşitli sistem çağrıları: Windows ve UNIX
– Aygıt Yönetimi:

SetConsoleMode() ioctl()

ReadConsole() read()

WriteConsole() write()
– Bilgi Yönetimi:

GetCurrentProcessID() getpid()

SetTimer() alarm()

Sleep() sleep()
BTP201 İşletim Sistemleri

Çeşitli sistem çağrıları: Windows ve UNIX
– İletişim:

CreatePipe() pipe()

CreateFileMapping() shm.open()

MapViewOfFile() mmap()
– Koruma ve Güvenlik:

SetFileSecurity() chmod()

InitialSecurityDecriptor() umask()

SetSecurityDescriptorGroup() chown()
BTP201 İşletim Sistemleri

Örnekler: Ardunino
– Tek görev çalışır.
– İşletim sistemi yoktur.
– Programlar USB üzerinden belleğe yüklenir.
– Tek bir bellek alanı vardır.
– Boot loader programı yükler.
– Program sonlandığında komut satırına döner.
BTP201 İşletim Sistemleri

Örnekler: FreeBSD
– UNIX türevidir.
– Çoklu görevli işletim sistemidir.
– Kullanıcı giriş yaptığında, kullanıcıya ait $SHELL yüklenir.
– $SHELL fork() ile süreçleri yaratır.

Program exec() ile çalıştırılır.

$SHELL program sona erene kadar bekler ve komutları almaya
hazırdır.
– Program hatasız sonlandığında sıfır, hatalı sonlanırsa bir sayı döndürür.
BTP201 İşletim Sistemleri

İşletim Sistemi Hizmetleri/Servisleri
– Sistem yazılımları programların çalışması için gerekli ortamı sunar.

Dosya yönetimi

İşleme ait durumun bilgisini sunmak/saklamak/düzenlemek

Programlama dili desteği

Programın yüklenmesi ve çalıştırılması

İletişim hizmetleri

Arka planda çalışan bazı yazılımlar

Bazı uygulamalar
– Çoğu kullanıcı için işletim sistemi sistem yazılımlarından ibarettir.
BTP201 İşletim Sistemleri

İşletim Sistemi Hizmetleri/Servisleri
– Yazılım geliştirme ortamını ve araçlarını sunar.

Sistem çağrıları için arayüzler

Daha karmaşık uygulamalar olabilirler
– Dosya yönetimi

Dosya oluştur, aç, oku, yaz, sil
– Sistemin durumu bilgisi edinilir.

Zaman, boş bellek miktarı, disk alanı, kullanıcı sayısı, kayıtlar, hata
ayıklama

Bazı işletim sistemlerinde registry/yazmaç bu işlevi yerine getirir.
BTP201 İşletim Sistemleri

İşletim Sistemi Hizmetleri/Servisleri
– Dosyalar üzerinde yapılan işlemler.

Dosya içeriğini düzenleme, dosya içeriğinde düzenleme yapmak vb.
– Programlama dilleri desteği

Derleyiciler, hata ayıklayıcılar, kütüphaneler, yorumlayıcılar
– Programların yüklenmesi ve çalıştırılması
– İletişim hizmetleri

Süreçler arası

Kullanıcılar arası

Sistemler arası
BTP201 İşletim Sistemleri

İşletim Sistemi Hizmetleri/Servisleri
– Arka plan hizmetleri

Açılışta çalıştırılan programlar

Açılıştan kapatılana kadar çalışan programlar
– Bağlayıcı (Linker)
– Yükleyici (Loader)
– Modern genel maksat işletim sistemleri bağlayıcı yerine dinamik
kütüphaneler kullanır. (Windows DLL)
– Nesne ve çalıştırılabilir dosyalar standart formatlardadır. İşletim sistemi
kolaylıkla çalıştırabilir.
BTP201 İşletim Sistemleri

İşletim Sistemi Hizmetleri/Servisleri
– Bağlayıcı (Linker)

Kaynak kod

Derleyici -> makine dili -> nesne dosyası

Bağlayıcı <-Kütüphane ve diğer dosyalar

Çalıştırılabilen dosya

Yükleyici <- çalıştırılabilen dosya + kütüphane ve diğerleri

Bellekte hazır durumda
BTP201 İşletim Sistemleri

Uygulamalar neden işletim sistemine özeldir?
– İşletim sistemine özel dosya formatları
– Uygulama çok sayıdaki işletim sisteminde çalışabilir.

Sanal makine

Yorumlayıcı

Standart dil, kaynak kod farklı işletim sistemlerinde derlenebilir.
– ABI – Application Binary Interface, API’nin mimari olarak eşdeğidir.
BTP201 İşletim Sistemleri

İşletim sisteminin tasarımı ve uygulanması
– İşletim sisteminin tekil bir tanımı yapılamıyor.
– İşletim sistemlerinin mimarisi de farklıdır.
– Amaçlar ve gereksinimleri tanımlayarak başlanır.
– Donanım veya sistem özellikleri belirleyicidir.
– Kullanıcının beklentileri ve sistemin beklentileri

Öğrenmesi kolay, kullanımı kolay, az kaynak tüketsin...

Tasarım basit olmalı, uygulanabilir olmalı, hatasız olmalı, yeni işlevler
kolaylıkla eklenebilmesi, güvenilir olmalı, etkin olmalı...
– İşletim sistemi tasarımı YAZILIM MÜHENDİSLİĞİNİN bir çalışma alanıdır.
BTP201 İşletim Sistemleri

İşletim sisteminin tasarımı ve uygulanması
– Politika ve mekanizma birbirinden ayrılmalıdır.
– Politika: Ne yapmak gerekiyor?
– Mekanizma: Nasıl yapmak gerekiyor?
– Ayrım yapılması tercihlere göre işleyişin düzenlenmesini sağlar.
– Ayrılmaz ise başınız belada demektir!
BTP201 İşletim Sistemleri

İşletim sisteminin inşası ve çalıştırılması
– İlk işletim sistemleri: Assembly
– İzleyenler sistem programlama dilleri: Algol, PL/1
– Günümüzde C/C++
– Gerçekte ise karma durum:

En düşük ve hızlı olması gereken kısımlar Assembly

Asıl kısım C

Sistem yazılımları C/C++, PERL, PYTHON ve SHELL SCRIPTS
– Yüksek seviyeli diller ile yazılabilir ama aktarılması ZORDUR! (Yavaştır)
BTP201 İşletim Sistemleri

İşletim sisteminin inşası ve çalıştırılması
– Genel amaçlı işletim sistemleri büyük ve karmaşıktır.
– Çeşitli uygulama örnekleri

En basit MSDOS

Daha gelişmiş karmaşık: UNIX

Katmanlı yapı – soyutlama

Mikro kernel – MACH
BTP201 İşletim Sistemleri

İşletim sisteminin inşası ve çalıştırılması
– UNIX ilk örnekleri;

Donanımın sınırlamaları nedeni ile işlevleri sınırlıdır.

İki parçalıdır:

Sistem yazılımları

Kernel

İşleyiş için gerekli olan tüm bileşenler tek bir yazılım olarak
tasarlanmış ve uygulanmıştır.
BTP201 İşletim Sistemleri

İşletim sisteminin inşası ve çalıştırılması
– UNIX kernel tasarımı için örnek olmuştur.

Monolitik kernel

Hızlı

Tam donanım desteği

Değişiklik yapılması zor

Sonra;

Monolitik kernel ve modüler kernel bileşenleri
BTP201 İşletim Sistemleri

İşletim sisteminin inşası ve çalıştırılması
– Katmanlı yapı

İşlevler farklı katmanlarda yer alır.

En alt katman donanıma en yakın olanıdır.

Üst katmanlarda farklı işlevler paylaşılır.

Teorik olarak en alttan hatalar ayıklanmaya başlarsa en üst katman
ulaşıldığında hatasız olacaktır.(!)
BTP201 İşletim Sistemleri

İşletim sisteminin inşası ve çalıştırılması
– Microkernel

Monolitik kernel tersidir.

Kernel sadece sahip olması gereken işlevlerden oluşur.

Geri kalan her şey kullanıcı yazılımı olarak tasarlanır.

İletişim mesajlaşama ile gerçekleşir

Aktarılabilirlik yüksektir.

ÇOOOOK YAAAAAVVVVVAAAAAŞŞŞTTTIIIIIIIRRRR!

Hata ayıklamak zordur!
BTP201 İşletim Sistemleri

İşletim sisteminin inşası ve çalıştırılması
– Modüler Kernel

Monolitik kernel yapısı korunur.

Nesne yönelimli programlama paradigması uygulanır.

Asıl çekirdeğe modül eklenebilir, çıkarılabilir.

İletişim arayüzler üzerinden gerçekleşir.

Linux, Solaris, FreeBSD, Illimunos, OpenIndiana...
BTP201 İşletim Sistemleri

İşletim sisteminin inşası ve çalıştırılması
– Güncel işletim sistemleri;

Melez bir yaklaşımı benimsemiştir.

Windows monolitik kernel sahip olmakla birlikte farklı “kişilikler” için
mikrokernel de kullanır.

Apple, MacOS ile melez bir yapı ve katmanlı yapıyı birlikte kullanır.
BTP201 İşletim Sistemleri

İşletim sisteminin inşası ve çalıştırılması
– İşletim sistemi farklı donanımlar üzerinde çalışmak için tasarlanır ve
geliştirilir.
– Hazır olarak satın alabilirsiniz.
– Kendiniz yazarsınız/inşa edersiniz.

Hazır örnekleri esas alabilirsiniz.

Kendiniz değişiklikler yaparak inşa edebilirsiniz.
BTP201 İşletim Sistemleri

İşletim sisteminin inşası ve çalıştırılması
– FreeBSD (işletim sistemi ve userland utilities):

“/usr/src/sys/”

GENERIC

make buildworld && make buildkernel && make installkernel

reboot

make installkernel
BTP201 İşletim Sistemleri

İşletim sisteminin inşası ve çalıştırılması
– Linux (sadece kernel)

https://www.linux.org

make menuconfig

make

make_modules

make modules_install

make install
BTP201 İşletim Sistemleri

İşletim sisteminin inşası ve çalıştırılması
– EEPROM veya ROM
– BIOS/EFI/UEFI
– Disk üzerindeki boot sektörü okunur
– Boot loader, bootstrapping çalıştırılır
– İşletim sisteminin ilk yüklenecek olan bölümü belleğe aktarılır.
– İşletim sistemi ilk yapılandırmayı BIOS/UEFI alır.
– İşletim sistemi yüklenir
– Diğer yazılımlar yüklenir/çalıştırılır
BTP201 İşletim Sistemleri

İşletim sistemlerinde hata ayıklama
– Hataları bulmak ve gidermektir.
– Performans ayarlaması da denir
– İşletim sistemleri kayıt dosyalarında önemli ip uçları bulunabilir.
– Uygulama çökerse – core dump
– İşletim sistemi çökerse – crash dump
– Profil hazırlama – Instruction Pointer düzenli olarak izlenir ve işleyişe
ilişkin bir profil çıkarılır.
BTP201 İşletim Sistemleri

İşletim sistemlerinde hata ayıklama

– Kernighan Yasası: “Hata ayıklamak kodu yazmaktan en az iki kat daha


zordur. Eğer zekice kodlar yazarak işe başladıysanız, kelimenin tam
anlamıyla hatayı bulabilecek kadar zeki değilsiniz demektir!”

– GDB, Dtrace, tcpdump, perf, vmstat, iostat, ps, top, ...

You might also like