Bilgisayarımızda “donanım” ve “yazılım” olarak adlandırılan iki ana bölüm vardır. Bilgisayarın gözle görebildiğimiz ve elle tutabildiğimiz fiziksel parçaları donanım olarak adlandırılır. Donanımlar kendileri için yapılan özel yazılımlar ile anlam kazanır ve görevlerini bu sayede yerine getirirler. Yazılım ise belirli bir amaç için herhangi bir programlama dilinde yazılmış anlamlı kod bütünür.

İşletim sistemi, yazılımlarımızın donanım ile haberleşmesini sağlayan, bilgisayarın kaynaklarını onu kullanmak isteyen yazılımlar arasında paylaştıran büyük bir yazılımdır. Peki kullandığımız programlar donanımlara doğrudan erişem sağlayamıyor iken işletim sistemi nasıl erişiyor?

Bilgisayarımızdaki yazılım bölümü “kullanıcı modu(user mode)” ve “çekirdek modu(kernel mode/supervisor mode)” olarak ikiye ayrılır. Çekirdek modu doğrudan donanım ile haberleşen, işlemcimizin desteklediği bütün komutların çalıştırılabildiği kısımdır bu sebeple işletim sistemleri bu modda çalışır. Kullanıcı modu da işlemcimizin desteklediği belirli komutları çalıştırabilir. İşletim sistemi dışındaki tüm yazılımlar bu modda çalışır.

İşletim sisteminin iki temel görevi vardır. Bunlar;

  • Donanımı rahat kullanabilmek için kullanıcıya sağlanan soyutlamak (abstraction)
  • Donanım kaynaklarını yönetmek (resource management)

İşletim sistemi, bilgisayardaki donanımları soyutlayarak donanımın karmaşıklığını ortadan kaldırır ve kullanıcıya kolay bir kullanım sağlar. Mesela bilgisayardaki diske bir şeyler yazmak istiyoruz. Eğer soyutlama olmasaydı bunu yapabilmek için bilgisayarımızda bulunan diskin nasıl kullanıldığını tüm karmaşıklığı ile öğrenmek zorunda kalacaktık. Diski ne kadar çok kullandığımızı düşünürsek her seferinde bu uğraştırıcı işi yapmak çok zor olacaktı ve zamanımızı alacaktı. Fakat işletim sistemi diskteki bu karmaşıklığı ortadan kaldırmak için bize dosya katmanını(files layer) sunar. Dosyalar sayesinde diskin karmaşıklığından soyutlanarak programlar diskte dosya oluşturabilir, okuyabilir, yazabilir ve silebilir.

İşletim sisteminin bir diğer görevi olan kaynak yönetimi ise bilgisayarın sahip olduğu kaynakların onu kullanmak isteyen programlar arasında uygun bir biçimde paylaştırılmasıdır. Aynı zamanda hangi programın hangi kaynağı kullandığını, kaynak isteklerini ve kullanıcı hesaplarını takip eder.

Kaynak yönetimi yaparken iki yöntem benimsenmiştir. Bunlar;

  1. Zaman Paylaşımı (Time Multiplexed)
  2. Alan Paylaşımı (Space Multiplexed)

İşletim sistemi ilgili kaynağı önce onu kullanmak isteyen bir programa verir. Belirli bir süre o program kaynağı kullandıktan sonra, işletim sistemi tarafından, kaynak onu kullanmak isteyen diğer programa verilir. İkinci program da belirli bir süre o kaynağı kullandıktan sonra kaynak ilk programa geri verilir. Bu sayede zamana bağlı kaynak paylaşımı yapılır.

Diğer yöntemde ise programlar kaynaklardan sırayla faydalanmak yerine, aynı anda kaynakların kendilerine ayrılmış parçalarını kullanırlar.

Üst tarafta da göründüğü gibi kaynak, işletim sistemi tarafından parçalara bölünerek onu kullanmak isteyen programlara verilmiştir. Bu yöntemde, zaman paylaşımından farklı olarak programlar kaynakta aynı anda bulunabilirler.

Yukarıda bahsettiğimiz yöntemler sayesinde, işletim sistemi yazılımlar ve donanım arasındaki iletişimi sağlar.

Kaynakça:

  • Modern Operating Systems by Tanenbaum and Bos, 4th edition, Pearson 2015