İşletim Sistemi Nedir?

IIBySinyoRII

Kilopat
Katılım
19 Ağustos 2014
Mesajlar
138
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Meslek
Makina Mühendisi
İşletim sistemi tarihte bir işlemi yapmak için yazılmış punchcard(application) ları bilgisayara verip sonucunu almakla görevli olan, bilgisayar operatörlerinin(bunlar bir insandı) yerine geçmiş yazılımlardır. Bir Turing Makinasınde farklı işleri yapmak için tasarlanmış yazılımların, donanımlar ile ilişkisini düzenler.

Bir Punch Card(delikli kart) örneği

Bir Punch Card(delikli kart) örneği

Bir bilgisayarda web tarayıcısı çalıştırabilir, oyun oynayabilir, müzik dinleyebilirsiniz. işletim sistemleri bu işleri yapacak olan uygulama yazılımları(chrome,dota,media player vs) ile bu işleri yapacak olan temel donanımlar(ağ kartı, video kartı, ses kartı) arasında bir köprü kurar. Uygulama yazılımları ne yapmak istediklerini işletim sistemine söyler işletim sistemi de bu isteklerini kuyruğa alır ve belli öncelik sıralamasına göre işlemleri gerçekleştirmek için donanıma söyler.

403659

Bir işletim sisteminin genel bilgisayar katmanları arasındaki konumu bu şekildedir. En alt katmanda donanımlar ve en üst katmanda kullanıcılar vardır. Kullanıcıların erişim sağladığı uygulama yazılımları ile donanım arasında bir de işletim sistemi vardır.


Siz bir müzik dinlemek için media playerı açtınız, media player işletim sistemine şunları der.
"Şu klasörün içinde şu isimde bir dosya var onu ses dosyası olarak işlet ve bilgileri bana geri ver."
İşletim sistemi uygulamanın söylediği klasöre ve dosyaya bakar önce bunun için işletim sistemindeki Dosya Yönetim sistemi çalışır ve disk üzerinde o dosyayı arar. Eğer bulamaz ise uygulamaya böyle bir dosya olmadığını söyler. Bulursa diskten o dosya bilgilerini çeker ve ses kartına işlemesi için gönderir, artık bundan sonrasına işletim sistemide karışamaz ses kartının dosyayı işleyip geri vermesini bekler. Ses kartı dosyayı geri döndürdükten sonra işletim sistemi bu bilgileri uygulamaya iletir ve uygulamada bize bilgi verir.

Peki bu işlemleri niçin uygulama kendisi yapamıyor?

Çünkü her donanımın farklı özellikleri vardır ve farklı şekilde kullanılır. Bilgisayarınızda bir ses kartı için uygulama yazdınız ve çalıştırdınız o uygulama başka model ses kartlarında çalışmaz. Her model donanım için farklı kodlar yazılmalıdır. Bunun yerine her model donanımı kontrol edebilen merkezi bir sistem üzerinden iletişim kurmak daha mantıklıdır.

Şimdi şöyle bir örnek verelim. Üç tane uygulamamız olsun ve hepsi donanıma direkt erişebilir olsun. Birisi media player, diğeri bir browser, üçüncüsüde bir oyun olsun. Media playerın tüm donanımlarda çalışabilmesi için, tüm donanımlar için yazılmış kodları içinde barındırması lazım. Aynı şekilde browser ve oyunda öyle. Bir donanım için yazılan driver 128KB olduğunu varsayalım ve dünyada 8 farklı ses kartı olduğunu düşünelim. Tüm kartlar için çalışacak driverler 1MB yer kaplar. Üç uygulamada kendi içinde kod taşıdığında toplam 3MB yer kaplar. Ses çalıştırma özelliği olan her uygulama yüklediğinizde 1MB daha eklersiniz. Fark ettiğiniz gibi bu uygulamalar sadece ses çalıştırmıyor. Daha farklı onlarca işlem yapabiliyor. Tüm uygulamalar tüm bu işlemler için tek tek kod barındıracağına, tüm uygulamaların ortak bir kod kümesini kullanması çok daha mantıklı olur. İşletim sistemleri ortak kod kümeleri sunuyor.

Bir başka sebep ise güvenlik. Bilgisayarın kaynaklarına(donanımlar) aynı anda erişmek isteyen yüzlerce farklı yazılım olabilir. İşletim sistemi bunların hangilerine öncelik verileceğini, hangilerini çalıştıracağını veya kapatacağına karar verir. Kaynakların sonsuz döngüye girmesini ve hizmet veremez hale gelmesini sağlayabilecek yazılımların engellenmesini sağlar. Şöyle bir örnek verelim bir çeşme olsun ve bu çeşmeden faydalanmak isteyen onlarca insan olsun. Burada çeşme donanım, insanlar ise yazılımdır. İşletim sistemi ise onları yönlendiren, yöneten, belli direktifleri belli bazı kanunlar çerçevesinde vererek insanların adaletli bir şekilde çeşmeden faydalanabilmesini sağlayan yapıdır.

İşletim sistemi'nin bir diğer özelliği ise programcıyı tek tek her donanıma göre kod yazmak zorunda bırakmaz. Yazdığı tek kodu işletim sistemi algılayıp, yüklü olduğu donanıma göre gerekli komutları verir. Yani programcı ile donanım arasındaki bağı kaldırır. Bu sayede bilgisayar programcıları donanım, mimari ve elektronik hakkında bir şey bilmeden de uygulama yazabilir. Tabi eğer sistem programcısı olmayacaksan.

Bir başka görevi de gerekli işlemleri gerekli önceliklerde yaptırır ve bitirir. Örneğin bir videoyu oynatmak istediniz ve açtınız. Eğer başka uygulama çalışmıyor ise işletim sistemi boş kayakların(bellek, işlemci gücü vs) hepsini o işe ayırabilir. Ancak günümüz işletim sistemleri aynı anda birden çok işlem yapmaya izin verir. Fiziksel olarak bir işlemci çekirdeği aynı anda tek bir iş yapabilmesine rağmen, işletim sistemi sanki bir sürü iş yapılıyormuş gibi çalışabilir. Eğer işletim sistemi olmayan bir bilgisayara Browser ile Media Player yüklerseniz. O bilgisayarda sadece birsini çalıştırabilirsiniz. Ötekisini çalıştırmanız için şuan çalışanı kapatmanız gerekli. İşletim sisteminin bunu nasıl yaptığı uzun bir konu ancak process management yani işlem yönetimi ile alakalı.

Yani kısaca işletim sistemi donanımların kendi arasında ve uygulamalarla donanımlar arasında bir organizasyon sağlar ve yönetir. Bunu yapan kısmına kernel(çekirdek) denir. Bu işlemcideki çekirdek(core) ile karıştırılmamalı. Core bir elektronik devredir, kernel ise yazılım. Kerneli kontrol etmek için işletim sistemleri birde UI(user interface) yazılımı barındırabilir. Bu UI'nin tipi LUI(line user interface) veya GUI(graphical user interface) olabilir veya her ikiside olabilir. Örneğin Windowsta kernel'i kontrol etmek için hem LUI yani Windowstaki adıyla powershell, hemde GUI yani windowsun grafik arayüzü vardır.

Bilgisayar ilk açıldığında işletim sistemi hemen kullanılabilir duruma gelmez. Önce kendisinin çalışabileceği temel donanımlara bakar ve tanır. Sonra yönetebileceği ikincil donanımların tanımı yapar ve kendini belleğe yükleyerek UI(shell,gui vs) ını açar.

İşletim sistemi kaynakların verimli ve hızlı kullanımını yönetir. Uygulamalara kaynak paylaşımını ayarlar. Dosyaların yönetilmesi, ağ bağlantısı gibi görevleride üstlenir. Programcıları donanım bağımlı kodlamadan kurtarıp işletim sistemli bağımlı kodlamaya geçirir. İşletim sistemlerinin üzerinde çalışan bazı yazılımlar(JVM vs) işletim sisteminden bağımsızlığı da sağlayabilir. Ayrıca modern işletim sistemlerinin başlangıcı UNIX ile olmuştur.

Bu yazı bana aittir. Okuduğunuz için teşekkürler.
 
Son düzenleme:
Çok güzel bir yazı. Benim web siteme yazdığım yazıda da yardımı oldu.

 

Yeni konular

Geri
Yukarı