İşletim Sistemleri Kavramları 2

İşletim Sistemi Kullanıcı Servisleri
-Kullanıcı Arayüzü :
Neredeyse tüm işletim sistemleri bir kullanıcı arayüzüne sahiptir(UI). Komut Satırı(CLI),Grafiksel Kullanıcı Arayüzü(GUI) olarak değişiklik gösterebilir.
-Program Çalıştırma:
Sistem bir programı hafızaya yükleyebilmell, çalıştırabilmeli, normal veya anormal hata durumunda sonlandırabilmelidir.
-I/O İşlemleri: Çalışan bir program I/O işlemi gerektirebilir. Bir dosyaya ya da I/O cihazını kullanmayı gerektirebilir.

İşletim Sisteminde İletişim;

– İletişim ortak hafıza ile veya mesaj gönderimi ile sağlanabilmektedir.
–  Paketler işletim sistemi tarafından taşınır.

İşletim Sisteminde Hata Tespiti–  İşletim sistemleri sürekli olarak olası hataları takip ederler.
–  Hatalar Hafıza donanımı, CPU,I/O cihazları veya kullanıcı programı kaynaklı olabilir.

Kaynak Paylaşım Servisleri– Kaynak paylaştırma (Birden fazla kullanıcı ya da birden fazla iş aynı anda çalıştırıldığında kaynaklar her birine adil olarak paylaştırır.)
– Hesap Tutma (Hangi kullanıcının hangi tip sitem kaynağının ne kadarını tutuğunun tespit edilmesi.)
-Koruma ve Güvenlik

İşletim Sistemi İşlem Arayüzü(CLI)-Komut satırı arayüzü ve koyut yorumlaycısı olarak tanımlanır.
-Komut yorumlayıcısı yani command interpreter direk komut girişini sağlar.
– Bazen çekirdeğin parçası olarak gerçekleştirilir, bazen sistem programı olarak gerçekleşebilir.

-Bazen farklı özellikleri bulunduran farklı versiyonları bulunur(Kabuklar Shells)
-Temel olarak ; kullanıcıdan bir komut alır ve bunları çalıştırır.
-Bazen komutlar kabuğun bir parçasıdır, bazen ise programların adıdır.
-Yeni bir komutun eklenmesi kabuğun güncellemesini gerektirmez.

Kullanıcı İşletim Sistemi Arayüzü GUI
-Kullanıcı dost masaüstü(desktop) benzetmesini kullanan arayüzdür.
-Genellikle fare,klavye, bilgisayar ekranı kullanılır.
-Nesneler üzerinde fare tıklamaları birçok eylemi tetikler.
-Pek çok sistem CLI ve GUI arayüzlerini birlikte sunar.

Sistem Çağırıları
-İşletim sistemi tarafından sunulan servisler için programlama arayüzüdür.
-Genellikle üst seviye dillerde yazılır(C veya C++)

-Sistem çağrılar genellikle çağrıları direk çağırılmazlar. Bunun yerine üst seviye API aracılığıyla kullanılırlar.
-En çok kullanılan API’ler (Win32,POSIX API,Java Sanal Makinası Java API)
-Taşınabilirlik ve basitlik için kullanılır.

Handle File (Okunacak Dosya) => LPVOID buffer (okunan ve yazılacak bilgilerin tutulduğu tampon bellek) => DWORD bytesToRead (tampon bellekten okunacak bilginin kaç byte olduğu) => LPDWORD bytesRead (en son okumada kaç byte’lık bilgi okunduğu) => LPOVERLAPPED ovl ( üst üste bindirilmiş I/O’nun kullanıp kullanılmayacağını belirtir.

– Sistem çağrısını çağıran uygulama sistem çağrısının nasıl gerçekleştirdiğini bilmelidir.

Sistem Çağrısı Gerçekleştirimi

-Genellikle her bir sistem çağrısı ile bir sayı ilişkilendirilir.
-Sistem çağrısı arayüzü bu sayılarla indekslenmiş bir tablo tutar.
-Sistem çağrısı arayüzü,işletim sistemi kabuğunda gerçekleştirilmiş sistem çağrısını çağırır ve eğer dönen bir bilgi varsas bu bilgi ile sistem çağrısı durumunu geri döndürür.
– Sistem çağrısını çağıran uygulama sistem çağrısının nasıl gerçekleştiridiğini bilmelidir.

Sistem Çağrısına Parametre Gönderme
– İşletim sistemine parametre göndermeyi sağlayan üç genel yöntem vardır.
-En basiti,parametreler registers içinde gönderilir
-Parametreler hafızada bir blokta veya tabloda tutulur. Ve bu şekilde gönderilir. Linux ve Solaris tarafından kullanılır.
-Parametreler program tarafından stack’e atılır. İşletim sistemi tarafığından yığından çekilir.

Not: MSDOS tek bir süreç ile çalışan yapıdır.FreeBSD ise birden fazla işlemci ile çalışan yapıdır.

Katmanlı Yaklaşım
-İşletim sistemi belli sayıda katmana(layers) ayrılır
-Her katman alt seviyedeki diğer katmanların üzerine yerleşir
-En alt katman layer 0 katmanıdır.
-En üst katman ise (layer N ) kullanıcı arayüzüdür.

Mikroçekirdek Sistem Yapısı-Çekirdekte gerçekleşen şeylerden taşınabilir olan herşeyi kullanıcı alanına taşır.
Moduller arası iletişim mesaj gönderme ile gerçekleşir
-Mikroçekirdeğin özelliklerini arttırmak daha kolaydır
-İşletim sistemini yeni mimarilere geçirmek daha kolaydır
-Daha tutarlı ve güvenlidir

-NOT: Çekirdek modu ile kullanıcı modu arasındaki iletişimin getirdiği aşırı yüklenme (overloading) performans sorununa neden olur.

Özetle;

  • İşletim sistemlerinin sunduğu servisleri rahat kullanabilir halinde getiren yapılar sistem programlarıdır.
  • Bootstrap: İşletim sisteminin firmware donanım üzerindeki ufak program parçası tarafından çalıştırılıp kullanılabilir hale getirilmesi işlemidir.
  • İşletim Sistemi; kullanıcılar için veya kullanıcıyı her zaman insan olarak algılamaz isek makine gibi cihazlar için programların çalıştırılması ve servislerin verilmesi için bir ortam sağlamaktadır. Kullanıcıya doğrudan etkisi olan ; kullanıcı ile etkileşim halinde olan ise kullanıcı arayüzüdür.
  • Kullanıcı arayüzünün en eski versiyonu “batch”dir. İlk işletim sistemi, kullanıcı etkileşiminde ilk çalıştırılacakları programı bir bütün olarak işletim sistemine vermiştir. Bu programın çıktısı ise bir printer’dan basılacak şekilde kullanıcıya teslim edilmiştir. Batch Türkçe’de toplu kitle olarak bilinmektedir. Günümüzde hala bu yapılmaktadır.
  • En çok kullanılan komut satırıdır. Komut satırlarını bir araya getirip Script denilen ; interaktif olarak işlenebilen akışların oluşturulması sağlanabilir.
  • Günümüzdeki işletim sistemlerinde CLI kullanılmaktadır. Telefonlarda ise bu karşımıza; GUI (Graphic user interface) olarak çıkmaktadır.
  • Giriş Çıkış işlemlerinde ise ; mouse hareketleri,network üzerinden bir siteye erişme gibi yöntemlerle programlara erişim sağlanabilir. USB ,disk vb olabilir. Hangisi olursa olsun her programın input ve output’a ihtiyacı vardır. Kullanıcı ile etkileşim halinde olmalıdır. Input’u olmasa bir programa gömülü olsa bile output’a ihtiyaç vardır.
  • İşletim sistemi tarafından kullanıcıya sağlanan servisler;  Dosya Sistemleri ,Haberleşme,Hata Tespiti
  • Günümüzde tek başına çalışan haberleşme uygulaması neredeyse yok. Sunucular ile iletişim sağlanabiliyor. Bunlar aynı işletim sistemi altında aynı kullanıcılar altında çalışabileceği gibi farklı işletim sistemlerinde de çalışabilirler.

  • Hata Tespiti; programların çalıştırılması sırasında işletim sistemi kaynaklarını programlara sunar. En efektif şekilde kullanılmasını sağlar. Ancak bunlarda çalışma esnasında donanım arızaları, işlem arızaları,memory bozulması, yazılan bilginin yanlış kullanılması, network kartı arızaları vb. hatalar gerçekleşebilir. İşletim sisteminin bunların farkına vararak; yola devam etmesi gerekir.  Bu durumda hata tespitleri yani error detection kullanılabilir. Uygulamalar sıfır hata ile çalışacak diye bir durum yoktur. Yanlış  hesaplamalar yapılmış olabilir.
  • İşletim sistemi tariflerinden biri de kaynak tahsisi yapar ve gelen kaynakları geri alır. Kaynak yöneticisi olarak da bilinir. İşletim sistemlerinin uygulamalara ihtiyaçlarına uygun olarak ek işlem gücü, ek memory verebiliyor olması lazım ve ihtiyaç bittikten sonra geri alıyor olması gerekir. (Kaynak paylaştırıcı.)
  • Eğer bize ait bir sistem değilse; program çalıştırmak için para ödediğimiz bir kaynaksa ( Amazon gibi)  yaptığımız her işlemin bir bedeli vardır. (Accounting)
  • Kaynaklar birden fazla kullanıcı için kullanılacaksa; bir kullanıcının çalıştırdığı bir programın başka kullanıcı tarafından karşılıklı izin almadığı sürece çalıştırmaması gerekiyor. Her program her bir donanımı sadece kendine ait gibi kullanıyor olması gerekiyor.  Her kullanıcının; kullanıcı adı şifresi, disk alanında ona bağlı bölge, çalıştırdığı programlar memory miktarı karıştırılmaması gerekir. (Protection)
  • Alt tarafta donanım var, sonra işletim sistemi var. Bu işletim sisteminin içinde servisler vardır. Kullanıcılara ve sisteme ait kolaylaştırıcı yöntemler bulunmasını sağlıyor.
  • Bir işletim sisteminin güvenliği başlı başına bir konudur. İşletim sistemin içerisinde güvenliğin sağlanabilmesi adına mekanizmaların olması gerekir.
  • Kullanıcı arayüzleri; GUI,Batch,Commandline olarak örnek verilebilir.
  • Kullanıcılardan gelen istekler GUI,Batch,Command Line üzerinden gelebilir. Ancak bu isteklere bağlı olarak servislerden yararlanmayı sağlayan yapı ;sistem çağrılarıdır.
  • Command Interpreter: Yorumlayıcı olarak geçmektedir. Text modunda çalışmaktadırlar.
  • İşletim sistemlerin sağladığı servisleri programlar kullanılır.  Tüm programların hepsi neyin Shell üzerinde çalışıyor. İşletim sisteminin içinde değil dışındaki kabukta çalışıyor. Kernel’da değil.
    Shell’in üstünde çalışıyor.
  • Kütüphanedeki fonskiyonların kullanımı işlemine Application Programmin Interface(API ) olarak adlandırılmıştır.
  • Kullanmak istediğim bir metod var bu metodlara API üzerinden erişebilirim.
  • Aynı benzer mantığı işletim sistemlerinde kullanılabilir. İşletim sistemi;interruptlar ile çalışmaktadır. İşletim sistemlerine normal akışı durdurarak yani interruptlar ile iletmemiz gerekmektedir. Bu işlem ise sistem çağrıları ile gerçekleşir.
  • Her sistem çağrısı bir interruptır. Software bir interruptır. Donanım kesmeleri sinyal değişiminde değişiklik sağlayan interruptlardır.
  • Her sistem çağrısına denk düşen bir kütüphane fonksiyonu vardır. Buna API denilmektedir.
  • Kullanıcının uygulaması bir dosya açmak istiyor. POSIX standartına uygun bir arayüz sağlanıyorsa hepsinde Open sistem çağrısı görünecektir. Open sistem çağrısı; file sistemdeki bir dosyayı açmaktır. Bu dosyayı okuma, yazma, ekleme yönünden açabilir. Uygulamanın içerisinde Open , parantez içinde hangi dosyayı açacağımız veriliyor. Dahil edilen kütüphane, işletim sisteminin C run time kütüphanesidir. Programların temel çalışma ortamları C çalışma ortamında şekillenmiş durumdadır. UNIX ve LINUX kütüphanelerinde bunun adı farklıdır. İşletim sistemine gelen çağrılar paket halinde interrupt olarak gönderiliyor.
  • Sistem çağrılarından parametre aktarılması gerekir. Bunun birkaç tane yöntemi vardır. En basiti işlemcinin Registers yapılarını kullanmaktır. Registers işlemcinin içinde veri saklayabileceğimiz donanım parçalarıdır. Ancak bunların sayıları azdır. Eğer aktaracağımız parametrelerin sayısı belli bir adetten az ise; bu parametreler üzerinden aktarabiliriz. Memory’e erişmeye gerek kalmadan aktarım yapılabilir.
  • Diğer yöntem ise Memory’de alan oluşturarak belirli bir sıraya göre bunları sıralamaktır. Sistem çağrısı o başlangıç adresiden itibaren belirli bir kurala göre değerleri atar.
  • Üçüncü Yöntem ; geçici kullanıcının üzerinin işlem yapabileceği geçici olarak tutulan alanlardır. Bu da Stack alanıdır. Yığın alanında bu bilgiler yerleştirilebilir. Ve bu şekilde sistem çağrısı yürütülebilir. Yığın özel bir alan olduğu için fonksiyonlar arası parametre aktarımında sıklıkla kullanıldığı için ; sistem çağrısı yaparken de kullanılabilir. Stack ‘in çalışma mantığı; stackten ya çekilir ya da basılır. Son giren ilk çıkar mantığı ile çalışır. Stackte bir parametre aktarma alanı oluşturulur.
  • Çok fazla sistem çağrısı çeşidi vardır. Prosesin yaşam döngüsü içerisinde birden fazla sistem çağrısı vardır. File yönetimi ile ilgili sistem çağrıları da mevcuttur.
  • MS-DOS : Işletim Sistemi örneklerinden bir tanesidir. Windows Command Line MS-DOS denilebilir. Ama günümüzde çok kullanılmıyor. Tek bir kullanıcı var ve tek bir program çalıştırıyor. Shell ile açılıyor. Bir programı çalıştırmak için aslında proseses vs düşünülmüyor. Doğrudan Memory’e alınıyor ve çalıştırılmaya çalışıyor. Kernel (her zaman çalışan kısım.) Command Interpreter: Memory’de kalması gereken kısım, diskte olup yüklenebilecek kısım. Programın çalışması bittikten sonra sonuçlar ekrana yazılıyor. Ve Command interpreter’ın diskteki kısmı tekrar yükleniyor. Sistemdeki tüm IO,Memory çalışmakta olan program tarafından yüklenebiliyor. O nedenle çok efektif bir sistem değildir. Ancak uzun seneler bu yapı kullanılmıştır.
  • FreeBSD: UNIX türüdür. Multitasking; aynı anda birden fazla programın çalışmasına izin veriyor. Aynı anda birden fazla kullanıcının çalışmasına izin veriyor. Kullanıcılar sisteme bağlandıklarında o kullanıcı tarafından seçimli olan shell ortamı oluşturuluyor. Sonrasında da kullanıcının bu shell üzerinden verdiği komutlara bağlı olarak programlar çalıştırılıyor. MSDOS ‘a göre en temel fark; aynı anda birden fazla kullanıcının sisteme bağlı olması; bir diğeri ise birden fazla programın çalışıyor olmasıdır. CommandLine Interpreter da bir program olarak çalışıyor. MSDOS’taki gibi bir kısmı hafızada kalsın diye düşünmüyor. Progamların işletim sistemleri tarafından çalıştırılmış haline Process işlem deniliiyor. Diskte dururken progam; işletim sistemi tarafından çalıştırılırken processtir.
  • Layer Seviyeleri Layer 0 : Firmware; Layer 1: İşletim Sistemi Kernel. Bunların üzerine istenilen kadar seviye yerleştirilebiliyor. Alt seviyeler; üst seviyelerden servis alamazlar.
  • Kernel’ı ne kadar yoğun tutarsak o kadar iyidir.
  • Kernel’I ufaltırsak;Microkernel Structure yapısından bahsedilebilir. Örnek olarak March verilebilir. Avantajları; gereksiz hiçbirşey içermemesidir. Minimalize edilmiştir. İhtiyaca bağlı olarak yeniden yüklemeyi gerektirmeden çalışabiliyor.Böylece bu işletim sisteminin farklı bir mimariye çok kolay bir şekilde taşınabiliyor. Donanıma bağlı olarak gelişen kısmı azdır. O nedenle A mimarisinden B mimarisine geçişi kolaydır. Hata ayıklaması kolaydır. Ve güvenlik analizini yapmasını da daha kolaydır bu nedenle daha güvenli olarak düşünülebilir. Önemli bir dezavantajı; kullanılan servislerden ötürü , Kernel çok fazla genişletilmeye ihtiyacı varsa, o zaman microkernel kütüphanesinin performansı düşer. Tercih edilmez. Alternatifleri ise modüllerdir. Bu modül yapısı; ilk ortaya atan Solaristir. Bunlar Kernel’a yüklenebilir modüllerdir. Object Oriented yapılarda olduğu gibi her modül birbirinden bağımsızdır. Modüllerin servis alma arayüzleri mevcutu vardır. Servis verme arayüzü servisi Kernel’a veriyor. Windows,Linux, MacOs yeni versiyonlar da modül mantığı ile çalışmaktadır.



Ders : İşletim Sistemleri( Doç. Dr. Ali Gökhan Yavuz )

Yıldız Teknik Ünviersitesi Bilgisayar Mühendisliği Bilgi Teknolojileri Programı



Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir