İşletim sisteminin ana görevi donanım kaynaklarını yönetmek ve kullanıcı ile donanım arasında arayüz görevi görmektir.
İşletim sistemi, kullanıcıyı alt seviyeli işlemlerden soyutlar ve kullanıcının hata yapmasını önlemek için, tüm alt seviyeli işlemleri kendisi halleder.
Örneğin kullanıcının doğrudan disk donanımına erişmesine izin vermez , onun dosya sistemi ve mantıksal dosyalarla diske erişimini sağlar.
Aynı şekilde çevre aygıtlara erişim, portlar’a erişim de işletim sisteminin görevidir.
İşletim sisteminin en temel görevlerinden biriside işlemci ve belleği süreçler(process) arasında paylaştırmaktır.
Ayrıca işletim sistemi bu süreçlerin servis sağlayıcısıdır ve onlara birçok sistem servisi sunar (api,sistem çağrıları).
Yani işletim sisteminin temel görevleri şunlardır.
* Bellek yönetimi
* Süreç yönetimi
* Dosya sistemi
* G/Ç aygıt yönetimi
İşletim sistemleri çeşitli bölümlerden oluşur. Genelde işletim sistemini hafızaya yüklemek için bir önyükleyici bulunur. Önyükleyici işletim sistemi dosyalarını yükledikten sonra kernel’e atlar.
Kernel(çekirdek), işletim sisteminin kalbidir ve donanımla ilgili herşey kernelin görevidir. Ayrıca sistem servislerini sunan kerneldir. Aslında kullanıcı asla kerneli kullanmaz. Genellikle arada bir kabuk vardır.
Shell(kabuk), işletim sisteminin servislerini kullanıcıya sunan bir arayüzdür. Bir komut satırından ibarettir ve kullanıcıdan komut alır , kernel aracılığı ile işler.
GUI (grafik sistemi), buna çeşitli isimler verilebilir. Pencere sistemi de denilebilir. Grafik sistemi windows’daki gibi doğrudan kernele bağlı olabildiği gibi, Linux daki gibi sonradan yüklenebilir.
Grafik sisteminde kullanıcının fare donanımı ile verdiği komutlar shell aracılığı ile yada doğrudan kernele iletilir.
Örneğin bir programa çift tıklayarak çalıştırdığımızda aslında o programın adını shell’e yazmış oluyoruz, temelde bir fark yoktur.
İlk işletim sistemleri aynı anda tek işi yapabilen, yani ancak tek bir süreci çalıştırabilen sistemlerdi.
MsDos da böyle bir sistemdir. Oysa modern işletim sistemleri aynı anda birçok süreç çalıştırabilir.
Aslında işlemcinin aynı anda iki süreci çalıştırması mümkün değildir (çift çekirdekliler hariç : ). İşlemci çok kısa sürelerle tüm süreçleri biraz çalıştırır.
Örneğin 100 ms de bir, süreçten sürece atlar ve biz tüm süreçlerin aynı anda çalıştığı hissine kapılırız.
Sistemde ne kadar süreç varsa, bir sürece sıra gelmesi o kadar geç olur. Dolayısıyla sistemin yavaşladığı hissine kapılırız.
Ayrıca modern işletim sistemlerinde koruma mekanizması vardır. Koruma mekanizması, bir sürecin bir başka sürecin bellek bölgesine erişimini engeller.
Aslında koruma mekanizması doğrudan işlemci tarafından sunulan bir mekanizmadır. İşletim sistemi, işlemciyle birlikte bunu kullanır.
Koruma mekanizması tek işlemli işletim sistemleri için anlamsızdır. Yani zaten hafızada tek bir süreç bulunduğu için, bu sürecin başka süreçlerin hafıza bölgelerine erişmesi mümkün değildir.
Oysa modern işletim sistemlerinde koruma mekanizması olmazsa olmazdır. Örnek verecek olursak..
****************
int a,b,tp;
a=50; b=100;
tp=a+b;
–>yetkisiz erişim başka bir program tp değişkeninin değerini 85 yaptı…
printf (“%d”,tp);
****************
Görüldüğü gibi bizimle ilgisi olmayan bir süreç, bizim sürecimizin bellek bölgesine girmiş ve tp değişkenimizin değerini değiştirmiştir. Biz program çalışırken ekranda 150 değerini görmeyi beklerken 85 değerini görüyoruz.
Tabi bu çok basit bir örnek, pekala bir banka bilgisayarında transfer sırasında 150 bin tl gönderilmesi beklenirken 85 bin tl de gönderilmiş olabilirdi : ).
İşte koruma mekanizması bu tür erişimlere kesinlikle izin vermez ve eğer bir süreç kendi bellek bölgesi dışına çıkmaya çalışırsa işlemcinin uyarısıyla işletim sistemi tarafından sonlandırılır.
Tabi koruma mekanizmasının da seviyeleri vardır. Intel işlemcilernden dört adet yetki seviyesi vardır.
0 en yetkili seviyedir ve 3. seviye en az yetkili seviyedir. İşletim sistemleri 0. yetki seviyesinde çalışır, oysa kullanıcı programları 3. yetki seviyesinde çalışır.
0. yetki seviyesine kernel mod, 3. yetki seviyesine user mod denilmektedir.
Kernel modda çalışan bir süreç tüm belleğe erişebilir. Ancak user modda çalışan bir süreç kendi bellek bölgesi dışına çıkamaz.
Tabi koruma mekanizmasının bir çok ayağı vardır, örneğin sayfa düzeyinde koruma, segment düzeyinde koruma, yazma koruması vs.
Bunları ilerde ayrıntısıyla anlatmayı düşünüyorum. Şimdilik bu kadar yeterli sanırım.