İŞLETİM SİSTEMLERİ1. İşletim Sistemleri-giriş
1. İşletim Sistemleri-giriş
Özlü Söz
| “Bilgisayar yapmasını istediğinizi yapacaktır, ancak sonuç aklınızda olandan çok farklı olabilir. “(Joseph Weizenbaum) |
Kazanımlar
● Bilgisayar sisteminin bileşenlerini öğrenebilir.
● İşletim sisteminin yapısını ve çalışma prensiplerini öğrenebilir.
● İşletim sisteminin temel görevlerini ve bu görevleri yerine getirmek için gerçekleştirdiği aktiviteleri öğrenebilir.
● Popüler işletim sistemi türlerini tanıyabilir.
Birlikte Düşünelim
| 1. İşletim sistemleri olmasaydı bilgisayar dünyasında neler farklı olurdu?2. İşletim sistemleri olmasaydı bilgisayar sistemlerinde meydana gelen gelişmeler bu kadar hızlı gerçekleşebilir miydi?3. İşletim sistemlerinin farklı türlerinin geliştirilmesine neden ihtiyaç duyulmuştur? |
Başlamadan Önce
| Farklı amaçlar ve mimari yapılar için tasarlanmış birçok işletim sistemi yazılımı geliştirilmiştir. Tüm bu farklılıklara rağmen işletim sistemi yazılımlarının üstlendiği ortak görevler bulunmaktadır. Bu bölümde bilgisayar sistemini oluşturan bileşenler, işletim sisteminin bilgisayar sistemindeki yeri ve önemi anlatılacaktır. Daha sonra, işletim sistemi yazılımlarının üstlendiği görevler incelenecek ve işletim sisteminin bu görevleri yerine getirmek için gerçekleştirdiği aktiviteler anlatılacaktır. Ayrıca yaygın olarak kullanılan işletim sistemleri türleri, bu türlerin kullanım alanları, avantajları ve dezavantajlarına da yer verilecektir. |
1.1. Bilgisayar Sistemleri
Bir bilgisayar temel olarak “yazılım” ve “donanım” bileşenlerinden oluşur. Bilgisayar sistemleri, yazılım ve donanım bileşenlerine ilaveten “kullanıcı” ve “ağ” bileşenini de içerir. Çizim 1’de görüldüğü gibi bu bileşenler kendi içerisinde de farklı çeşitlere ayrılmaktadır. Her birinin farklı bir hizmeti vardır. Bilgisayar sisteminin bileşenlerini tanıyalım:
Çizim 1. Bilgisayar Sisteminin Bileşenleri
Kullanıcılar: Uygulama yazılımlarına doğrudan erişim sağlayan, bilgisayara komutlar veren bilgisayar bileşenlerinden biridir.
Donanım: Merkezi işlem birimi (CPU), bellek, monitör, fare, yazıcı, ekran kartı gibi fiziksel birimler bilgisayarın donanım bileşenini oluştururlar. Bilgisayarla entegre olan, kasanın içinde yer alan donanım birimlerine dahili donanım birimleri adı verilir. CPU, ana bellek, ekran kartı, ses kartı gibi birimler dahili donanım birimlerine örnektir. Kasanın dışında yer alan donanım birimlerine de harici donanım birimleri adı verilir. Fare, klavye, ekran, yazıcı, tarayıcı gibi birimler harici donanım birimlerine örnektir.
Yazılım: Donanım birimlerinin mekanik işlevlerinin bir anlam kazanabilmesi ve donanım birimlerinin düzgün çalışabilmesi için yazılımlara ihtiyaç duyulur. Bilgisayarda kullandığımız her türlü programa yazılım denmektedir. Yazılımlar farklı amaçlara hizmet etmek amacıyla tasarlanıp geliştirilmiştir. Yazılım klasik yaklaşımla 2 ana başlıkta sınıflandırılabilir.
∙ Uygulama yazılımları
∙ Sistem yazılımları
Uygulama yazılımları: Sistem yazılımları ile uyumlu çalışan, programcının bir problemini çözmek amacıyla geliştirilen özel yazılımlardır. Uygulama yazılımları sistem yazılımları ile entegreli bir şekilde çalışmaktadırlar. Bu nedenle bir işletim sisteminde çalışabilecek şekilde geliştirilen uygulama yazılımı farklı bir işletim sisteminde çalışmayacaktır. Örneğin; Windows işletim sistemi kullanan bir kişisel bilgisayar için geliştirilen bir uygulama yazılımı Macintosh işletim sistemine sahip bir bilgisayarda çalışmayacaktır. Bir metin yazılımı olarak Word, resim uygulamaları için hazırlanmış Paint, Adobe Photoshop; web tarayıcı görevi için Google Chrome, Opera, Firefox; sıkıştırma programı olarak WinRAR uygulamaları birer uygulama yazılımlarıdır.
Sistem yazılımları: Uygulama yazılımları ile bilgisayar donanımı arasındaki bağlantı sistem yazılımları aracılığıyla gerçekleştirilir. Sistem yazılımları temelde bilgisayarı çalıştıran, donanım birimlerinin denetiminden ve yönetiminden sorumlu olan, kullanıcı ile bilgisayar arasındaki iletişimi sağlayan yazılımlardır. Sistem yazılımlarını derleyiciler, yorumlayıcılar, sürücüler ve işletim sistemi yazılımları oluşturur.
Derleyiciler: Bir programlama dilinde yazılmış bir kaynak kodun, başka bir hedef dile veya bilgisayarın anlayabileceği makine diline çeviren aracı yazılımlardır. Derleyiciler; koddaki hataları yakalama ve iyileştirme işlemlerini kaynak kodu hedef koda çevirirken gerçekleştirir. Derleyici; kaynak kodu hedef koda çevrildikten sonra çalıştırır. Derleyici yazılımları sayesinde yüksek seviyeli diller ile uygulamalar geliştirilebilmektedir.
Yorumlayıcılar: Derleyicilerle aynı görevi üstlenirler. Bu görevi farklı bir şekilde icra ederler. Yorumlayıcılar, kaynak kodu satır satır veya bloklar halinde yorumlar, makinenin komut setine çevirir ve kodu çalıştırır. Herhangi bir komut satırının çevrilmesinde ya da çalıştırılmasında bir hata ile karşılaşılırsa yorumlayıcı çalışmasını durdurur ve hatalı satırı programcıya bildirir. Sırası gelmeyen komut satırları çalıştırılmaz ve bu satırlardaki hatalar görülmez. Kodun bütünselliği hakkında bir fikre sahip değildir. Bu nedenle de kodun bütününe dair iyileştirmeler gerçekleştiremez.
Derleyiciler, yorumlayıcılara göre daha hızlıdırlar. Tüm programı girdi olarak alırlar ve programı .obj koduna dönüştürürler. Bu kodu saklarlar. Bu nedenle derleyiciler yorumlayıcılara nazaran daha fazla hafızaya ihtiyaç duyarlar. Yorumlayıcılar karşılaştıkları ilk hatayı rapor ederler ve bir sonraki hataya kadar ilerlerler. Derleyici kaynak kodundaki bütün hataları bulur. Bu nedenle yorumlayıcının hata ayıklama işlemi daha kolaydır (Çobanoğlu, 2018). Pascal, C, C++, C#, Visual Basic dilleri derleyici kullanan programlama dilleridir. HTML, XML, PHP dilleri yorumlayıcı kullanan programlama dilleridir. Hem derleyici hem de yorumlayıcı kullanan programlama dilleri de vardır. Java dili örnek olarak verilebilir. Java dilinde kod önce derlenerek “byte code” adı verilen ve sadece Java sanal makinelerinde çalıştırılabilen bir kod üretmektedir. Bu üretilen ara kod, Java sanal makinesinde bir yorumlayıcı ile çalıştırılmaktadır.
Sürücüler: Bilgisayar donanımlarının işletim sistemine tanıtılmasını sağlayan yazılımlardır. İşletim sistemi tanımadığı bir donanımı yönetemez ve çalıştıramaz. Bir bilgisayara yeni bir işletim sistemi yüklendiğinde veya yeni bir donanım takıldığında donanıma ait sürücü yüklenmezse o donanım bilgisayar tarafından tanınmaz ve çalıştırılamaz. Bazen sürücüler yüklü olduğu halde donanımlarda hatalı çalışmalarla karşılaşabiliriz. Bu problemin çözümü sürücünün güncellenmesi olabilir. Windows işletim sistemi kullanılıyorsa “Aygıt Yönetici” arayüzünden donanımın şu an ki versiyonunu görebilir ve sürücü güncelleme işlemini gerçekleştirebiliriz.
İşletim sistemleri: Bilgisayar sisteminin donanım kaynaklarını yöneten, donanım ile kullanıcı arasındaki etkileşimi sağlayan ve donanım karmaşıklığından kullanıcıyı soyutlayan, uygulamaların geliştirilmesine zemin hazırlayan sistem yazılımıdır. İşletim sistemleri bilgisayarların ROM denilen hafıza biriminde saklanır ve bilgisayar açıldığında işletim sistemi yazılımının gerekli olan kısımları RAM olarak isimlendirilen hafıza birimine getirilir ve çalıştırılır.
Yıllar içerisinde bilgisayar donanımları geliştiği gibi yazılım teknolojileri de gelişmiştir. Gelişim o anki ihtiyaca ve teknolojiye bağlı olarak oluşmuştur. İşletim sistemleri de zamanla gelişen donanım ve ihtiyaca bağlı olarak bir gelişim ve değişim yaşamıştır. İlk kuşak bilgisayar sistemlerinde işletim sisteminin görevlerini bilgisayar uzmanları gerçekleştiriyordu. Transistörlerin gelişimi ile ikinci kuşak bilgisayar dönemine geçiş yapıldı ve delikli kartların üzerindeki komutları manyetik ortama aktarıp makine dilini kullanan işletim sistemleri gelişti (Yıldırım ). Üçüncü kuşak bilgisayar sistemlerinde tümleşik devrelerin üretimi gelişmiştir. Bu gelişim bilgisayar sistemlerinin artık daha hızlı olmasını ve aynı anda birden fazla görevi icra edebilmesini sağlamıştır. Bu döneme ait işletim sistemleri zaman paylaşımlı çalışabilmekteydi. Mikroişlemcilerin gelişimi ile dördüncü kuşak bilgisayar sistemlerine geçiş sağlandı. Mikroişlemciler bilgisayarların daha küçük boyutlara erişmesini sağlamış bunun yanında kapasite, hız ve kullanılabilirlik işlevleri artmıştır. Bilgisayarlar bu özellikleri ile telefon, TV, tablet, beyaz eşya gibi hayatımızın her alanına girmiştir. Bu dönemde amacına uygun olarak işletim sistemleri geliştirilmiştir.
İşletim sistemleri farklı dönemlerde farklı görevler üstlenmiştir. Donanım ve yazılım teknolojilerinin gelişimi ile farklı amaçlara hizmet eden bilgisayar sistemleri geliştirilmiştir. Telefon, cebimizdeki bilgisayar sistemidir. Telefon, Televizyon, sunucu, masaüstü bilgisayar sistemlerinde bulunan işletim sistemleri birbirlerinden farklı, amacına uygun olarak geliştirilmiştir.
İşletim sistemleri birbirlerinden farklılık gösterse de tüm işletim sistemi yazılımlarının sorumluluğunda olan temel görevler vardır. Bunlar (Taşçı, 2017) (Yıldırım ):

Şekil 1. İşletim Sistemi Yazılımlarının Sorumluluğunda Olan Temel Görevler
Proses yönetimi:
Bir bilgisayar programı, bilgisayar tarafından çalıştırıldığında özel bir görevi icra eden bir dizi komutlardan oluşur. Bilgisayar programları algoritmalar olarak bilinen iyi tanımlanmış görevleri barındırır. Bir bilgisayar programı programlama dili kullanılarak yazılırlar. Programların bilgisayar tarafından icra edilebilmesi için ana belleğe getirilmesi gerekir. Programlar işletilmediği sürece hiçbir işlem yapmazlar. Çalıştırılmak üzere ana belleğe getirilen kod parçaları CPU tarafından işletilir. CPU’da bulunan kod parçaları yürütülen kod parçalarıdır ve yürütülmekte olan kod parçaları proses olarak anılır.
İşletim sistemleri, üzerinde bulunduğu sistemin özelliklerine göre (tek çekirdekli, tek işlemcili, çok çekirdekli) proses yönetimini gerçekleştirir. Tek işlemcili veya tek çekirdekli bir sistemde birden fazla proses aynı anda çalıştırılamaz. Modern işletim sistemleri çok çekirdekli donanım üzerinde aynı anda birçok prosesin yönetimini gerçekleştirebilir. Proses yönetimini gerçekleştirirken işletim sisteminin gerçekleştirdiği bazı aktiviteler vardır. Bunlar (Taşcı, 2017);
∙ Yeni proses oluşturma ve sonlandırma
∙ Proseslerin oluşturulması, yürütülen proseslerin bekletilmesi, yeniden çalıştırılması,
∙ Prosesler arasındaki senkronizasyonu ve proses iletişimini sağlama.
∙ Kilitlenme probleminin üstesinden gelebilecek bir mekanizma sağlama.
Prosesler ve işletim sisteminin proses yönetimini gerçekleştirme teknikleri ayrıntılı olarak “Bölüm 2”de anlatılmaktadır.
Bellek yönetimi:
Bilgisayarda geçici olarak verilerin saklandığı merkeze ana bellek (RAM) denir. Ana bellek kontrollü paylaşıma izin verir. Ana bellek işletim sistemini ve diğer program parçalarını saklar. Bir program çalıştırılacağı zaman program aynı boyutta veya farklı boyutlarda (kullanılan yönteme göre) parçalara bölünür. Ana bellekte aynı boyutlarda veya farklı boyutlarda sanal olarak bölümlendirilir. Program parçaları ana belleğin farklı bölmelerine veya art arda gelen bölümlerine yerleştirilir. Ana belleğin bölmelerine yerleştirilen program parçalarının ana bellekteki konumu proses kontrol bloğu kaydedicisi tarafından saklanır.
İşletim sistemi ana belleği prosesler arasında en etkin bir şekilde paylaştırılmasını hedefler. Bu paylaşımın kontrollü bir şekilde gerçekleştirilmesi gerekir. İşletim sisteminin bu görevi bellek yönetimidir. Belleğin hangi bölümlerinin kullanımda olduğu hangi bölümlerinin kullanılabilir olduğu bilgisini kullanarak program parçalarına bellek tahsis eder. Farklı programlar ve program parçalarının ana bellekte en uygun yere yerleştirme işlemi bellek yönetimi kapsamında belirli algoritmalarla gerçekleştirir. Gerektiğinde tahsis edilen bellek alanını geri alma görevi de bellek yönetimine aittir.
Ana bellek kısıtlı boyuta sahiptir. Bu nedenle tüm programların ana bellekte saklanması mümkün değildir. Diskte bulunan hangi program parçasının ana belleğe yükleneceğinin kararı bellek yönetiminde bulunan algoritmalar tarafından belirlenir. Bellek yönetimi kapsamında karar verilen ana bellekte yer alan program parçaları diske, diskte yer alan program veya program parçaları ana belleğe taşınır. Disk ile ana bellek iletişim halindedir. Çalışma zamanındaki prosesler bellek ile disk arasında sürekli yer değiştirir. Diskten ana belleğin boş bir alanına program veya program parçasının taşınması işlemine belleğe taşıma (swap in), bellekten diske taşınması olayına diske taşıma (swap out) denir (Bk. Çizim 2).
Çizim 2.Görevin Ana Bellek-Disk Arasındaki Yer Değişimi
Ana bellekte açılan boş bellek alanları yeni program parçalarının tanımlanabilmesine ve öncelikli işlerin çalıştırılabilmesine olanak sağlar (Doğu Akdeniz Üniversitesi B. B., 2021). Ana bellekten hangi görevin diske taşınacağı, hangi bellek alanının boşaltılacağı işletim sistemi tarafından karar verilir. Bu kararı çeşitli kriterleri dikkate alarak gerçekleştirir. Bunlardan bazıları;
∙ Öncelik değeri
∙ En çok ana belleği kullanma
∙ Ana bellekte kapladığı boyut
∙ Kaynak bekleme süresi
İşletim sistemi öncelik değeri düşük, giriş-çıkış işlemleri fazla olan, kaynak bekleme süresi uzun olan, ana bellekte kapladığı alanın büyük olduğu, çok fazla ana belleği kullanan görevleri işletim sistemi ana bellekten diske taşımayı tercih eder.
Bellek yönetiminin görevlerinden biri de bellek alanlarının korunmasıdır. Bellek alanları, yerleştirilen proseslerin izinlerine göre işleme tabi olur. Örneğin; işletim sisteminin bulunduğu bellek alanı, kullanıcılardan korumak adına okunabilir ve çalıştırılabilir iznine sahiptir. Bu bellek alanına kullanıcı tarafından müdahale edilemez. Program parçaları izinsiz bir başka program parçasının bellek alanına erişmemelidir.
Bellek yönetimi ile ilgili ayrıntılı bilgi “Bölüm 2”de verilmektedir.
Giriş-çıkış birimlerinin yönetimi:
Giriş-çıkış birimleri hem dış ortamdan verinin alınması hem de dış ortama verinin gönderilmesini sağlayan bilgisayar donanım birimleridir. Klavye, fare, mikrofon giriş birimlerine; monitör, kulaklık, hoparlör çıkış birimlerine örnek olarak verilebilir. Hem giriş hem de çıkış birimi olarak görev yapan bilgisayar donanımları da mevcuttur. Sabit diskler, hafıza kartları bu duruma örnek olarak verilebilir.
İşletim sistemi giriş-çıkış birimlerinin yönetiminden sorumludur. Bir giriş-çıkış biriminin işletim sistemi tarafından tanımlanması için o birime ait sürücü yazılımının bilgisayara yüklenmesi gerekir. Sürücü yazılım işletim sistemi ile ilişki kurar ve kullanıcıyı donanım ayrıntılarından soyutlar.
İşletim sistemi, giriş-çıkış birimlerinin yönetimini bazı aktivitelerle gerçekleştirilir. Bunlar;
∙ Giriş-çıkış birimlerinin ön bellek sistemini oluşturur.
∙ Ön belleğe okuma-yazma işlemi gerçekleştirilir.
∙ Spooling işlemlerinin gerçekleştirilmesi
∙ Sürücü yönetiminin gerçekleştirilmesi
∙ Aygıt yöneticisi arabirimini sağlamak
Disk yönetimi:
Tüm verilerin saklanması için ana belleğinin boyutunun küçük olması nedeniyle bilgisayar sistemleri ikincil belleklere ihtiyaç duyarlar. Oluşturulan dosya ve klasörler diskler üzerinde tutulurlar. Diskler üzerinde tutulan veriler güç kaynağı kesildiğinde kaybolmazlar. Manyetik disk, manyetik teyp, disk, disket, SSD, CD, DVD gibi ikincil belleklerde tutulan veriler ihtiyaç duyulduğunda ana belleğe yüklenirler. İşletim sistemi disk yönetimini bazı aktivitelerle gerçekleştirir. Bunlar;
∙ Disk üzerindeki boş alanın yönetimi
∙ Yeni dosyaların yazılması için depolama alanı tahsisi
∙ Bellek erişim isteklerinin zamanlanması
∙ Disk planlanması
Koruma ve güvenlik:
Bir bilgisayar sistemi, çok kullanıcılı ise ve birçok prosesin eş zamanlı çalışmasına izin veriyorsa kullanıcıların ve proseslerin birbirlerinin girişiminden korumalıdır (Türkoğlu). İşletim sistemi; dosya yönetimini, bellek yönetimini, giriş-çıkış birimlerinin yönetimini, proses yönetimini, disk yönetimini, ağ yönetimini bu ilkeyi temel alarak gerçekleştirir. Bu amaçla kullanıcı ve proses erişim kontrolünü, bilgi erişim kontrolünü gerçekleştirir. İşletim sistemi kullanıcıların birbirlerinden izole olmasını ve bilgisayar kaynaklarının kontrollü paylaşımını sağlar. İzinli ve izinsiz kullanıcıları ayırt eder ve kullanıcıya tanımlanan yetki ölçüsünde bilgisayar kaynaklarının kullanımına izin verir. Sistemde oluşan veri akışı denetlenir. Virüs taraması, izlemesi gerçekleştirilir. İşletim sistemi kullanıcı ve kaynakların güvenliği sağlar.
Ağ yönetimi:
Giriş-çıkış birimleri, saati, belleği, CPU’su ortak olmayan dağıtık yapıdaki bilgisayarlar birbirleriyle ağ aracılığıyla iletişim kurarlar. Her bilgisayarın kendine ait işlemcisi (CPU), belleği, giriş-çıkış birimleri vardır. Bir ağ yapısının oluşturulabilmesi için temel olarak yönlendirme ve bağlantı stratejisine karar verilmelidir. Bilgisayarlar arasındaki iletişim ağ protokolleri temel alınarak gerçekleştirilir. Ağ protokolleri, iletişim için gerekli olan kuralları, adımları belirler.
İşletim sisteminin ağ yönetimindeki en önemli görevi kullanıcıların güvenli bir şekilde ortak kaynaklara erişimini sağlamaktır.
Dosya yönetimi:
Veriler ve programlar bilgisayarda dosyalar halinde saklanır. Dosyalar, birbirleriyle ilişkili veri ve programları barındırır. Windows işletim sistemine sahip masaüstü bir bilgisayarı açtığınızda resimler, müzikler, programlar için ayrı ayrı dosyaların bulunduğunu görürüz. Kullanıcılar da ilişki veri veya programlarını bir arada tutmak için dosyalar oluşturabilirler. Dosya yapısı sanal bir yapıdır. Fiziksel olarak bilgisayarınızın belleğinde bir dosya oluşumu gerçekleşmez. Dosya yapısı içerisinde bulunan veri ve programlar belleğin farklı bölümlerinde saklanabilirler. Fakat kullanıcılar bu farklılığı görmezler. İşletim sistemi sayesinde farklı yerlerdeki ilişkili veri veya programların aynı yerde bulunuyor görüntüsü oluşturulur. Benzer dosyalar bir araya gelerek klasörleri (dizin) oluşturur.
İşletim sistemi dosya yönetimini bazı aktivitelerle gerçekleştirir. Bunlar;
∙ Dosyaların oluşturulması, silinmesi
∙ Klasörlerin oluşturulması, silinmesi
∙ Dosyaların, klasörlerin yönetimi
∙ Dosya ve klasörlerin ana belleğe taşınması
∙ Dosya ve klasörlerin disklere taşınması
∙ Dosyaların yedeğinin alınması
İşletim sistemi yazılımı temel görevlerini yerine getirirken işletim sisteminden beklenen bazı kriterler dikkate alır. Bunlar;
∙ Etkin bir şekilde işleri gerçekleştirmek.
∙ İşler arasındaki bekleme süresi en az düzeyde olmalıdır.
∙ CPU’nun boşta kaldığı süre az olmalıdır.
∙ Sistemin cevap verme süresi kısa olmalıdır.
∙ Az zamanda çok iş yapabilmelidir.
∙ Hatalardan arındırılmalıdır ve güvenirlik sağlanmalıdır.
∙ İşletim sistemi temel görevlerinden taviz vermeden daha az boyutlarda bellekte yer kaplamalıdır.
∙ Arayüz kullanıcı dostu olmalıdır.
İşletim sistemleri bilgisayar, tablet, video oyun konsollarında, cep telefonlarında, sunucularda, arabalarda, beyaz eşyada, kol saatlerinde hemen hemen her eşyada bulunmaktadır. Farklı amaçlarla üretilen bu eşyalar için farklı işletim sistemleri geliştirilmiştir. Yaygın olarak kullanılan işletim sistemi türleri aşağıda verilmektedir.
∙ Toplu işletim sistemleri (Batch Operating System)
∙ Zaman paylaşımlı işletim sistemleri (Time-sharing operating system)
∙ Dağıtılmış işletim sistemleri
∙ Ağ işletim sistemleri
∙ Gerçek zamanlı işletim sistemleri
∙ Mobil işletim sistemleri
∙ Gömülü işletim sistemleri
Toplu işletim sistemleri
Toplu işlem çok görevli bilgisayar sistemlerinde kullanılan görevlerin aynı anda işleme alınma biçimlerinden biridir. Toplu işlemde, görevler kuyrukta biriktirilir. Aynı gereksinimlere sahip olan benzer görevler gruplanır. Gruplama işlemini operatör yapar. Grupların her birine “batch” denir. Gruplanan işler sırası ile işlenir. Görevler sisteme sunulduktan sonra görev tamamlanana kadar kullanıcı bilgisayarla etkileşim kuramaz. Kullanıcı görevin işlem akışını izleyemez, denetleyemez. Toplu işletim sisteminin iş akışı Çizim 3’te gösterilmektedir.
Toplu işletim sistemleri 1960 yıllarda kullanılmaya başlanmıştır. Kullanıcılar, programlarını ve verilerini delikli kartlara tanımlardı. Delikli kart desteleri bekleme kuyruklarında biriktirilip bilgisayar operatörüne sunulurdu. Operatör uygun olan grubu işlemciye gönderir ve grup halinde işlem adımlarının tamamlanması beklenirdi.
Toplu işletim sistemleri çok kullanıcılı sistemdir. Herhangi bir işin bekleme süresinin tahmin edilmesi ve hata ayıklama işlemi bu tür işletim sisteminde oldukça zordur. Karmaşık, birden çok alt adımdan oluşan ve adım akış sırası değişmeyen, uzun süren işlerde toplu işlem türü başarılıdır (Saatçi, 2002).

Çizim 3. Toplu İşletim Sistemlerinde İş Akışı.
Zaman Paylaşımlı İşletim Sistemleri
Zaman paylaşımlı sistemlerde, çok kısa zaman aralıklarıyla kullanıcılara paylaştırılır. Kullanıcı, diğer kullanıcılarla sistemi paylaştığını fark etmez.
Zaman paylaşımlı sistemlerde görev işleme etkileşimli bir şekilde gerçekleştirilir. Toplu işlem türünden farklı olarak bu işletim türünde iş adımları adım adım işletilir, işlem akışı izlenebilir ve hatta işletim akışına müdahale edilebilir. Kullanıcılar, kullanıcı arayüzü aracılığıyla sistem ile etkileşim kurabilir.
Çizim 4. Zaman Paylaşımlı Sistemin Mimari Yapısı
Çizim 4’te görüldüğü gibi zaman paylaşımlı sistemde kullanıcıların işlerinin sırasıyla tutulduğu bir kuyruk listesi bulunmaktadır. Planlayıcı bu kuyruk yapısından planlama algoritmasını temel alarak bir proses seçer ve CPU’ya gönderilir. CPU, proses için ayrılan zaman dilimi süresi boyunca prosesi çalıştırır. Proses bu zaman dilimi içerisinde tamamlanabilir veya tamamlanamaz ve bekleme kuyruğuna gönderilir.
Her kullanıcıya eşit bir zaman dilimi ayrılır. Bu zaman dilimi çok kısa olduğu için kullanıcılar zaman paylaşımlı olarak bilgisayar kaynaklarını paylaştığının farkına varmaz. Zaman paylaşımlı işletim sistemi bahsedilen gereksinimleri karşılamak üzere geliştirilmiştir.
Dağıtılmış işletim sistemleri
Dağıtılmış sistemlerin mimari yapısını daha iyi anlayabilmek adına öncelikle merkezi ve merkezi olmayan sistemlerin mimari yapılarını, avantajlarını ve dezavantajlarını ve neden dağıtık sistemlere ihtiyaç duyulduğunu inceleyelim.

Çizim 5. Merkezi Sistem Mimarisi (a)-Merkezi Olmayan Sistem Mimarisi (b).
Çizim 5. (a)’da görüldüğü gibi merkezi bir sistem mimarisi istemci-sunucu mimari yapısını kullanır. Bu mimari yapıda bir veya birden fazla istemci bilgisayar sunucu bilgisayarla doğrudan iletişim halindedir. Yaygın olarak kullanılan mimari yapıdır. İstemci bilgisayarlar sunucu bilgisayara istekte bulunur ve sunucu bilgisayar bu isteğe karşılık bir cevap gönderir.
Merkezi mimari yapılarında;
∙ İstemci bilgisayarların sayısı arttırılarak bir dikey ölçeklenebilirlik sağlanabilir. Fakat bu ölçeklenebilirlik kısıtlıdır.
∙ Çok fazla kullanıcının ağa bağlanıp sunucu (master) düğüme istekte bulunması darboğazlara neden olabilir.
∙ Merkezi mimari yapılarının performansını ağın ve sunucu bilgisayarın performansı belirler. Tek bir merkez noktası bulunduğundan bir istemci düğümün bağlantısının kopması sistemin başarısız olmasına neden olur.
∙ Veri yedekleme konusu zayıftır. Sunucu bilgisayar bozulduğunda ve herhangi bir yedek alınmadıysa verilerin kaybı söz konudur.
∙ Tek bir sunucu olduğu için merkezi sistemlerinin bakımının kolay olduğu düşünülebilir. Fakat tek bir sunucunun olması sebebiyle bakım gerekçesiyle sunucunun kapatılması verimsiz ve profesyonel olmayan bir davranıştır.
Yukarıda bahsedilen dezavantajlarının yanında merkezi sistemlerde
∙ İstemcilere güvenli bir şekilde hizmet vermek oldukça kolaydır.
∙ Kurulumu diğer sistemlere nazaran kolaydır.
∙ Güncellemeler daha kolay gerçekleştirilir.
Merkezi sistemlerde günümüzde yaygın olarak kullanılmaktadır. Wikipedia uygulaması bu mimari yapıya örnek verilebilir. Yüksek performanslı bir sunucu kullanıcılardan gelen isteklere cevap döndürür.
Çizim 5. (b)’de merkezi olmayan bir sistemin yapısı görülmektedir. Bitcoin uygulaması merkezi olmayan sistemlerin popülerliği ve uygulama alanı arttırmıştır. Merkezi olmayan sistemde ağda bulunan her düğüm birbirlerinden bağımsızdır ve birbirlerine doğrudan bağlanır. Her düğüm hem istemci hem de sunucu rolü üstlenir.
Merkezi olmayan bir yapıya sahip sistemlerde;
∙ Her düğüm kendi performansını arttırarak bütün sistemin performansının arttırılmasına katkı sağlayabilir. Dikey ölçeklenebilirlik mümkündür fakat kısıtlıdır.
∙ Küçük sistemler için uygun değildir.
∙ Bir düğüme müdahale etmenin bir yolu yoktur.
∙ Uygulamanın geliştirilmesi merkezi sistemlere nazaran daha zordur.
Yukarıda bahsedilen dezavantajlarının yanında merkezi olmayan sistemlerde;
∙ Darboğaz problemi ya hiç yaşanmaz ya da minimum seviyede yaşanır.
∙ Tüm sistemin tamamen çalışamaz olması oldukça zordur. Tek bir düğümün bozulması sistemin tamamını etkilemez.
Dağıtılmış sistemler farklı konumlarda bulunan bilgisayarların bir araya getirilerek tek ve bütünleşik bir makine gibi davranmasını sağlayacak şekilde tasarlanmıştır. Dağıtık sistemler sayesinde herhangi bir kullanıcı kendi bilgisayarın kaynaklarının yanı sıra ağ ile birbirlerine bağlı olan diğer bilgisayarların da kaynaklarını kullanabilme imkânı sağlanmıştır (bk. Çizim 4). Kullanıcı tek bir bilgisayar ile etkileşim kurduğu izlenimi yaşarlar. Ortamda birden fazla bilgisayarın bulunduğunun farkında değildirler. Bu özelliği merkezi olmayan sistemlerden ayıran özelliklerinden biridir. Örneğin dağıtık sistemde birden fazla bellek ve CPU olmasına rağmen kullanıcı, tek bellek ve CPU olarak görür. Çalıştırdığı programların hangi CPU’da işlendiği ve hangi belleği kullandığını kullanıcılar bilmez.
Dağıtık sistemlerde farklı işletim sistemlerine sahip bilgisayarlar ağ aracılığıyla birbirlerine bağlanırlar. Dağıtık sistemlerin etkili, hızlı, tutarlı ve güvenilir bir şekilde çalışabilmesi için bazı zorlukların aşılması gerekir. Bunlar;
∙ Farklı sistemler birbirleriyle uyumlu ve tutarlı çalışmalıdır.
∙ Ağdaki bir bileşenin bozulması dağıtık sistemin bozulmamasını sağlamalıdır.
∙ Ölçeklenebilirlik ihtiyaç dahilinde arttırılabilmelidir.
∙ Tek bir bilgisayar varmış görüntüsünü vererek kullanıcı dağınıklıktan soyutlanmalıdır.
Dağıtık işletim sistemleri, bu problemlerin üstesinden gelebilme ve ağ üzerinde bulunan tüm bilgisayar kaynaklarının etkili, hızlı, güvenilir bir şekilde kullanılabilme imkânı sağlar. Dağıtık işletim sistemi bu görevi; farklı noktalarda icra edilen proseslerin iletişimini, senkronizasyonunu sağlayarak, tutarlılık, hata toleransı ve güvenlik ilkelerini temel alarak gerçekleştirir.
Ölçeklenebilirliğin yüksek olması büyük boyutlardaki verileri işlemek gibi yüksek performanslı işlemlerde dağıtık sistemler başarılı performans gösterir. Eşit ve birbirlerine bağlı düğümlere işlemler ağ üzerinden eşit olarak paylaştırılır.
Dağıtık bir sistemde;
∙ Yatay ölçeklendirme gerçekleştirilebilir.
∙ Hata toleransı çok daha yüksektir.
∙ Başlangıç maliyeti yüksek olmasına rağmen yatay ölçeklenebilirliği sayesinde hızla daha uygun maliyetli hale gelirler. Yatay ölçeklenebilir ve dikey ölçeklenebilirlik Çizim 5’te gösterilmektedir.
∙ Büyük boyutlardaki veri daha küçük parçalara bölünerek ağ üzerindeki düğümlere iş yükünü paylaştırır.
∙ Paralellik desteklenir.
Çizim 6. Dağıtık Sistem

Çizim 7. Dikey ve Yatay Ölçekleme.
Ağ İşletim Sistemi
Ağ ile birbirlerine bağlı bilgisayarların istemci-sunucu yaklaşımını (bk. Çizim 8) temel alarak birbirlerinin kaynaklarından faydalanabildiği sistemler için geliştirilen bir işletim sistemidir. İstemci-sunucu yaklaşımında sunucu olarak ifade edilen bir bilgisayar sistemi, istemci olarak ifade edilen bilgisayar sistemlerine hizmet sunar. İstemci ve sunucu bilgisayarlar arasındaki iletişim ağ protokolleri çerçevesinde ağ aracılığıyla gerçekleştirilir. İstemci bilgisayarlar sunucu olarak nitelendirilen bilgisayar sistemlerinin kaynaklarından faydalanılır.
Ağ işletim sisteminde kullanıcı ağ üzerinde birden fazla bilgisayarın varlığından haberdardır. Her kullanıcının oturum açabildiği bir işletim sistemi mevcuttur.
Çizim 8. İstemci-sunucu mimarisi.
Gerçek Zamanlı İşletim Sistemleri
Gerçek zamanlı işletim sistemlerinde proseslerle ilişkili bir son tarih vardır ve işletim sistemi bu tarihe kadar prosesi tamamlaması gerekir. Bu amaçla gerçek zamanlı işletim sistemlerinde görevler hassas bir zamanlama ile icra edilirler. Gerçek zamanlı işletim sistemlerinde en ufak gecikme kabul edilmez. Tepki ve işlem süresi oldukça kısadır. Bu özellikleri ile kritik görevler için tercih edilen bir işletim sistemidir.
Gerçek zamanlı işletim sisteminin bir diğer önemli özelliği ise proseslerin BigO karmaşıklığını kestirebilmesidir. Mevcut donanımda prosesin aşağı yukarı ne kadar sürede tamamlanabileceği tahmin edilebilmektedir. Örneğin: bir prosesin tamamlanma süresi olarak 180 ms olduğu tahmin edilmiş olsun. Donanıma göre bu prosesin tamamlanma süresi değişkenlik gösterebilir. İşletim sisteminin anladığı şey bu prosesin 180 ms’de bitmiş olması gerektiğidir. İster prosesin çalışması tamamlansın isterse proses kitlensin, sonsuz döngüye girsin veya hata versin, proses 180 ms sonra CPU’dan ayrılır. Prosesin tamamlanması 180 ms’den önce de olabilir. İşletim sistemi bunu önemsemez. 180 ms CPU bekler. Bu performans kayıplarına neden olur.
Prosesin ihtiyaç duyacağı tüm kaynaklarda prosese ayrılan süre boyunca kitlenir ve diğer proseslerin bu kaynaklara erişilmesine izin verilmez. Bu özelliği kilitlenme durumu önler. Bu durum aynı zamanda aynı kaynağa erişmek isteyen diğer prosesin bu kaynağa ne zaman erişebileceğinin bilinmesini de sağlar. Gerçek zamanlı işletim sistemleri ile genel amaçlı işletim sistemlerinin temel özellikleri Tablo 1’de verilmektedir.
Tablo 1. RTOS & GPOS
| Gerçek zamanlı işletim sistemi (RTOS) | Genel amaçlı işletim sistemi (GPOS) |
| Deterministiktir: Çalışma zamanı örüntüsünde rastgelelik yoktur. | Çalışma zamanı örüntüsü rastgelelik içerir. |
| Yanıt/tepki süresi tahmin edilebilirdir. | Dinamik bir yapı vardır. |
| Zaman kısıtlıdır. | Cevap verme süresinin garantisi verilmez. |
QNX işletim sistemi en çok tercih edilen, kullanıcı arayüzleri olan, kapalı kaynak kodlu gerçek zamanlı işletim sistemlerinden biridir. FreeRTOS, Windows CE, Zephyr projesi gerçek zamanlı işletim sistemleridir.
Mobil İşletim Sistemi
Günlük hayatımızda kullandığımız donanımlar üzerinde donanımları kontrol eden yazılım uygulamaları mevcuttur. Donanımlar geliştikçe, yetenekleri arttıkça bu donanımlar üzerindeki uygulamalarında yetenekleri artmakta gelişmektedirler. Mobil işletim sistemleri de bu amaçla ortaya çıkmıştır. Tablet, PDA, telefon, saat gibi akıllı cihazlar geliştikçe akıllı cihazları denetleyen, yöneten uygulamalarda gelişmektedir. Mobil işletim sistemleri taşınabilir akıllı cihazlar için geliştirilmiş işletim sistemidir.
Linux tabanlı olan Android, Apple şirketinin mobil cihazları için geliştirdiği iOS ve Microsoft tarafından geliştirilen Windows Phone, Symbian yaygın olarak kullanılan mobil işletim sistemleridir.
Android işletim sistemi, Linux çekirdeği üzerine inşa edilmiş mobil cihazlar için geliştirilmekte olan açık kaynak yazılımlı ve ücretsiz bir işletim sistemidir. Android işletim sisteminin ücretsiz olması ve açık kaynak kodlu olması sistemin daha hızlı gelişmesini sağlar.
Yazılım geliştiriciler gelişmiş API (Application Programming Interface) ile Android uygulamaları kolaylıkla geliştirebilirler. Uygulama geliştirme dili Java programlama dilidir. Android uygulamaları Google Play markette kullanıcıların hizmetine sunulur. Uygulamalar .apk uzantısını desteklemektedir.
iOS (IPhone Operating System) işletim sistemi Apple tarafından iPhone telefonları için geliştirdiği Unix tabanlı kapalı kaynak yazılımlı ve ücretli bir işletim sistemidir. Kapalı bir sistem olması iOS işletim sistemini saldırılara karşı daha korunaklı hale getirir. Ücretli olması kullanıcı sayısını düşürmektedir.
iOS işletim sistemi iPhone’dan sonra Apple tarafından geliştirilen iPod Touch, iPad, Apple TV, MacBook gibi cihazlarında da kullanılmıştır. Apple’in cihazlarından başka hiçbir sistemde iOS çalışmamaktadır. iOS işletim sisteminde 2007 yılına kadar kullanıcıların uygulama geliştirilmesine izin verilmemiştir. 2007 yılında Apple SDK’nin geliştirildiği duyurulmuş ve iOS Apps mağazası açılmıştır. Uygulama geliştirmek için Swift programlama dili kullanılmaktadır. Swift programlama dilinin kullanılabilmesi için Mac bir bilgisayar kullanılması gerekir. XCode geliştirme aracı kullanılarak Swift programlama dili ile iOs uygulamaları kolaylıkla geliştirilebilmektedir.
iOS işletim sistemi sade ve kullanışlı bir kullanıcı arayüzüne sahiptir. Güvenliğe azami önem verir. Kullanıcılar tarafından geliştirilen uygulamalar birbirlerinden uzak tutulurlar. Bir uygulama sebebiyle mobil cihaza virüs bulaşması durumunda iOS işletim sisteminin diğer yazılımları zarar görmez.
Windows Phone Windows CE çekirdeğine sahip Nokia telefonlarla beraber tanıştığımız Windows Mobile serisinin devamı niteliğinde olan kapalı kaynak kodlu işletim sistemidir. Windows Phone işletim sistemi Windows tabanlı bir işletim sistemidir. Fakat masaüstü Windows uygulamalarını çalıştıramaz. Geliştirilen uygulamalar Windows Phone mağazalarında hizmete sunulur.
Windows Phone işletim sistemleri iOS ve Android işletim sistemleri ile rekabet edememiş ve başarısız olmuştur.
Symbian, Symbian şirketi tarafından geliştirilmiş Psion şirketinin geliştirdiği EPOC işletim sistemini temel alan mobil cihazlar için geliştirilmiş işletim sistemidir (Kaya, 2009). Uygulama geliştirme için C++ programlama dili kullanılmaktadır.
Gömülü İşletim Sistemi
Gömülü sistemler, işlevselliği ve güvenirliği arttırmak için özel bir amaç için tasarlanan bilgisayar sistemleridir. Tıbbi cihazlar, hesap makineleri, beyaz eşyalar, akıllı kol saatleri, otomobiller, kameralar, küçük ev aletleri, oyuncaklar gibi birçok yerde gömülü sistem kullanılmaktadır. Gömülü sistemlere ait uygulama geliştirmek, daha küçük bir hedefe sahip olunduğu için daha basittir.

Şekil 2. Gömülü Sistemler (Alkar, 2015)
Gömülü işletim sistemleri gömülü bilgisayar sistemleri için geliştirilmiştir. Standart masaüstü işletim sistemlerinin sağladığı ve özel uygulamalar tarafından kullanılmayan birçok fonksiyonu bir kenara bırakarak güvenilir ve verimli kaynak kullanımı için tasarlanmıştır. Embedded Java, Windows IoT, FreeRTOS, Gömülü Linux, Windows CE, Windows XP Embedded işletim sistemleri gömülü sistemler için geliştirilmiş gömülü işletim sistemlerine örnektir. Gömülü sistemler için geliştirilen işletim sistemlerinin her birinin özel bir fonksiyonu bulunur.
Bölüm Özeti
∙ Bilgisayar temel olarak yazılım ve donanım bileşenlerinden oluşur.
∙ Yazılım barındırmayan bir bilgisayar sadece mekanik işlevlerden ibarettir. Yazılım bileşeni kullanıcıların özel ihtiyaçlarını geliştiren uygulama yazılımları ve sistemin güvenli bir şekilde çalışması, korunması, sürekliliğin sağlanması için geliştirilen sistem yazılımları bileşenlerinden oluşur.
∙ İşletim sistemi bilgisayar ile kullanıcı arasında iletişimi sağlayan, bilgisayar donanımlarının birbirleri ile senkronize çalışmasını sağlayan sistem yazılımıdır. Gerçek zamanlı işletim sistemleri, mobil işletim sistemi, ağ işletim sistemi, dağıtılmış işletim sistemleri gibi farklı amaçlar için tasarlanmış farklı türlerde işletim sistemi yazılımları geliştirilmiştir.
∙ Windows işletim sistemleri, Symbian, Android, iOS, QNX, FreeRTOS, Linux işletim sistemleri günümüzde yaygın olarak kullanılan işletim sistemi yazılımlarıdır.
∙ İşletim sistemleri farklı amaçlar için geliştirilmiş olsalar da ortak bazı sorumlulukları vardır. Proses yönetimi, bellek yönetimi, giriş-çıkış birimlerinin yönetimi, disk yönetimi, koruma ve güvenlik, ağ yönetimi, dosya yönetimi işlemleri işletim sistemi yazılımlarının temel görevleridir.
∙ Bu görevleri yerine getirmek için işletim sistemleri birçok aktivite gerçekleştirirler.
∙ İşletim sistemi yazılımı temel görevlerini yerine getirirken işletim sisteminden beklenen bazı kriterleri dikkate alır. Bu kriterler; bekleme süresi ve cevap verme süresinin kısa olması; hatasız, güvenilir ve hızlı bir şekilde aktivitelerini gerçekleştirebilme; yeteneklerinden taviz vermeyecek şekilde daha az boyutlarda bellekte yer kaplama ve arayüzünün kullanıcı dostu olması şeklinde sayılabilmektedir. Sadece işletim sistemi yazılımları için değil ideal bir yazılım uygulaması için de bu kriterler dikkate alınarak geliştirilmelidir.
∙ Farklı amaçlarla üretilen eşyalar için farklı işletim sistemleri geliştirilmiştir. Popüler olan işletim sistemi türleri; toplu işletim sistemleri, zaman paylaşımlı işletim sistemleri, dağıtılmış işletim sistemleri, ağ işletim sistemleri, gerçek zamanlı işletim sistemleri, mobil işletim sistemleri, gömülü işletim sistemleri şeklindedir.
Kaynakça
(tarih yok).
(2021). Debian Manpages: https://manpages.debian.org/ adresinden alındı
Aksan, C. (2021). Paket Yöneticisi Nedir? Neden İhtiyaç Duyulur? ceaksan.com: https://ceaksan.com/tr/paket-yoneticisi adresinden alındı
Aladağ, M. (2015). Windows 10 Yenilikleri – PowerShell 5 ile Paket Yönetimi OneGet. cozumpark.com: https://www.cozumpark.com/windows-10-yenilikleri-powershell-5-ile-paket-yonetimi-oneget/ adresinden alındı
Alkar, A. (2015). Embedded system basics and application. Ankara.
Çobanoğlu, B. (2018). Herkes için Python. Pusula.
Doğu Akdeniz Üniversitesi, B. B. (2021). İşletim Sistemleri-Bellek Yönetimi.
Doğu Akdeniz Üniversitesi, B. V. (2021). İşletim sistemleri-Kilitlenmeler. Siirt.
Gülbağ, A. (2017). İşletim Sistemlerine Giriş.
javaTpoint. (2021). OS. javaTpoint: https://www.javatpoint.com/os-attributes-of-a-process adresinden alındı
Kaya, A. (2009). Symbian İşletim Sistemi. Akademik Bilişim’09 – XI. Akademik Bilişim Konferansı Bildirileri. Şanlıurfa.
Özdemir, H. (2018). Linux Paket Yöneticileri. pythontr.com: https://www.pythontr.com/makale/linux-paket-yoneticileri-632 adresinden alındı
Saatçi, A. (2002). Bilgisayar işletim sistemleri. Ankara: Hacettepe Üniversitesi. http://hilmi.trakya.edu.tr/ders_notlari/os/isleti_sistemleri.pdf adresinden alındı
Samet, R. (2018). Bilgisayar Sistemleri. (A. Ü. Enstitüsü, Dü.)
Shotts, W. (2013). The Linux Command Line- Second Internet Edition. No Starch Press.
Silberschatz, A., Gagne, G., & Galvin, P. (tarih yok). Operating System Concepts. içinde John Wiley & Sons, Inc. 2021 tarihinde alındı
Taşcı, T. (2017). İşletim Sistemleri-Temel Bilgi Teknolojileri Kullanımı.
Taşçı, T. (2017). İşletim Sistemleri-Temel Bilgi Teknolojileri Kullanımı.
Türkoğlu, İ. (tarih yok). İşletim Sistemleri (Ders Notları). Fırat Üniversitesi, Teknik Eğitim Fakültesi, Elektronik ve Bilgisayar Bölümü. Türkiye. 2021 tarihinde alındı
Wikipedia. (2021). Paket yönetim sistemi. Wikipedia.org: https://tr.wikipedia.org/wiki/Paket_y%C3%B6netim_sistemi adresinden alındı
Yıldırım, S. (tarih yok). Bilgi Teknolojilerine Giriş3. Atatürk Üniversitesi. 2021 tarihinde alındı
Comments