Şimdi Ara

[ OS101 - İşletim Sistemleri Teknik Rehberi ]

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
5
Cevap
1
Favori
2.266
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Son zamanlarda sık sık yazılımsal bir çok kavramın bilinmediğini ve birbirine karıştırıldığını farkettim, bu nedenle bir çok kullanıcı için karanlıkta kalan detayları biraz aydınlatmak istiyorum. Şu anda anlatacaklarımın hepsi kafamda bir çorba halinde yer aldığından anlatımım biraz karışık olabilir, bunun için yeterince açık olmadığını düşündüğünüz kısımları gösterip üzerinde tartışarak anlatımımı basitleştirmemi sağlayabilirsiniz


    Bildiğiniz gibi bir ev sadece tuğlalardan oluşmaz, temel / kapı / pencere / kolon / kiriş / çatı vs gibi bir çok temel yapıtaşından oluşur; kullandığımız karmaşık cihazlar da bu açıdan bakıldığında evlerden farklı değildir, bir çok parçaları vardır. En yukarıdan (bize en çok görünen kısımdan) en aşağıya (bize en az görünen kısma) doğru sıralarsak:

    Kullanıcı uygulamaları & Arayüz uygulamaları » İşletim sistemi servisleri » İşletim sistemi çekirdeği (Kernel) & Donanım sürücüleri » Donanımlar

    şeklinde yer alırlar. Bir örnek olarak MeeGo işletim sisteminin mimari diyagramını inceleyelim:

     [ OS101 - İşletim Sistemleri Teknik Rehberi ]


    Turkuaz kısım kullanıcı ve arayüz uygulamalarını
    Turuncu kısım işletim sistemi servislerini
    Yeşil kısım işletim sisteminin çekirdeğini (kernelini)
    Gri kısım donanım sürücülerini

    temsil ediyor. Şimdi işleyişi açıklamak için bir örnek verelim. Diyelim ki az önce çektiğiniz fotoğrafı görmek istiyorsunuz ve elinizdeki cihazda yüklü olan görüntü gösterme uygulamasını açtınız. (Not: Açtığınız uygulama sizin sonradan yüklediğiniz bir uygulama ise "kullanıcı uygulaması" sınıfına, işletim sistemiyle birlikte gelen bir uygulama ise "arayüz uygulaması" sınıfına girer). Bundan sonraki işlemler aşağı yukarı şu şekilde yürür:

    (Not: > işareti servisten/kernelden dışarıya doğru giden komutları, » işareti servis/kernel içerisinde yönlendirilen/halledilen komutları simgeler)

    1. Görüntü gösterme uygulaması öncelikle kendisini ekranda gösterebilmek, açılması için ihtiyacı olan dosyaları belleğe yükleyebilmek ve benzeri diğer ihtiyaçlarını gidermek için gerekli komutları "işletim sistemi servisleri"ne iletir. Örnek:

      1. Uygulama > Arayüz servisi: Ekranın tamamını kaplayan içi siyah bir pencere çiz
      2. Uygulama > Arayüz servisi: Ortasına da adresi şu olan resmi oturt


    2. İşletim sistemi servisleri aldığı komutları işleyebilmek için onları mantıksal küçük parçalara ayırır ve her parçayı onu işleyebilecek (veriler üzerinde gerekli işlemleri yürütüp çıkan sonuçları yorumlayacak) servise (veya kendi içerisinde tanımlı olan fonksiyona) iletir. Örnek:

      1. Arayüz servisi > Donanım servisi: Ekranın ölçüleri lazım
      2. Arayüz servisi » Pencere fonksiyonu: Bu boyutta bir pencere çizmeli ve içini siyaha boyamalıyım
      3. Arayüz servisi > Dosya servisi: Adresi de bu olan resmi bulup bana getir
      4. Arayüz servisi > Görüntüleme servisi: Bu resim şu boyuttan büyük, resmi uyacak şekilde küçült
      5. Arayüz servisi » Pencere fonksiyonu: Bu küçülmüş resmi pencerenin ortasına oturtmalıyım


    3. Servisler (ve fonksiyonlar) kendilerine iletilen veriler üzerinde yapılması gereken işlemleri yürütmesi için gerekirse (o işlemi yapmayı kendileri bilmiyorsa) işletim sistemi çekirdeğine (kernel) başvurur. Örnek:

      1. Donanım servisi > Kernel: Ekranın ölçüleri lazım
      2. Dosya servisi > Kernel: Bana şu dosya lazım
      3. Görüntüleme servisi > Kernel: Bana şu hesapların sonuçları lazım


    4. Donanımlar bol miktarda kasa sahip ama zeka düşeyi düşük yaratıklar gibidir, bir işi yaptırmak için onun anlayacağı dilde (makine dili) konuşmak gerekir. Kernel burada devreye girerek işlemcinin ona gelen komutları gereken dilde ve sırayla anlatarak donanımların işlemesini sağlar, cevapları da soruyu soran servislere yollar. Kernel gereken dili bilmiyor olabilir, bu durumda sürücüler devreye girer.

      1. Kernel > Grafik sürücüsü: Ekranın ölçüleri lazım
      2. Kernel > Disk sürücüsü: Şu dosyanın okunması lazım
      3. Disk sürücüsü » Disk: Şu dosyayı diskten oku
      4. Kernel » İşlemci: Şu toplamları yap, sonra şunlarla çarp, bunlara böl, karekökünü al


    5. Gereken tüm cevaplar alındıktan sonra işlem tersine döner, kernel aldığı cevapları temel servislere iletir. Onlar aldıkları cevapların üzerinde yapacakları işlemi yaparlar ve sonucu arayüz servisine iletirler. Arayüz servisi de sağdan soldan aldığı cevapları birleştirir ve uygulamanın komutlarını işlemeye başlar. Sonuca ulaştığında uygulamanın istekleri yerine getirilmiş olur.

    Yukarıda basitçe anlattığım işleyiş doğal olarak her platformda bazı değişiklikler gösterir. Bazı işletim sistemlerinin kerneli ayrı ayrı parçalar arasındaki iletişimi azaltıp işlemi hızlandırmak için bir çok sürücüyü ve servisi kendi içinde barındırırken (monolithic kernel), bazı işletim sistemlerinin kernelleri ise kernelin kendi başına hızını arttırmak için minimum miktarda sürücü ve servis barındırır (microkernel), bazılarıyla bu ikisinin arasında bir noktada yer alır (hybrid kernel). Bu anlattıklarımı gözünüzde canlandırmak içinhttp://upload.wikimedia.org/wikipedia/commons/d/d0/OS-structure2.svg adresindeki diyagramı incelemenizi öneririm.

    Bu değişik kernel tiplerinin her birinin kendilerine göre hem avantajları hem de dezavantajları mevcut, bu nedenle kullanım alanları da farklı. Bir çoğunuzun duyduğu Linux aslında bir işletim sistemi değil yalnızca monolithic bir kerneldir, işletim sisteminin gerisi bu kernel etrafında örülmüş servislerden ve bu kernele göre yazılmış uygulamalardan oluşur. Bu servis+uygulama paketlerinin en bilinenleri GNOME ile KDE'dir. Bir diğer örnek ise Symbian'dır, kendisi EKA2 microkerneli ve onun etrafında örülmüş servislerden oluşur, S60 ile UIQ ise (GNOME ile KDE gibi) Symbian üzerindeki arayüz uygulamaları ve platforma özel servisler topluluğudur.

    Ve şimdi son bir nokta: Monolithic Linux kerneli devasa bir kernel olduğundan her türlü talebe hızlı cevap verebilmek için microkernel'lere kıyasla çok daha fazla işlemci gücü ve bellek gerektirir; bu nedenle cep telefonları gibi düşük sistem kaynaklarına sahip cihazlarda Linux kerneli kullanılacaksa kırpılmış bir sürümü kullanılır ve buna rağmen hem işletim sistemi fonksiyonlarını hem de GSM gibi radyo fonksiyonlarını aynı anda işleyebilmek için iki ayrı işlemciye ihtiyaç duyar. Buna en güzel örnek Android'dir, kendisi Linux kerneli temelli olmasına rağmen kırpılmış ve özelleştirilmiş kerneli artık Linux kerneli kabul edilmemektedir, daha çok bir Linux türevi olarak görülmektedir.

    Fakat microkerneller çok daha ufak olduklarından her türlü talebe monolithic kernellerden daha hızlı cevap verebilirler ve bu nedenle düşük sistem kaynakları altında da yüksek performansla çalışabilirler. Buna en güzel örnek ise Symbian'ın EKA2 kernelidir, öyle verimlidir ki hem işletim sistemini hem de radyo fonksiyonlarını tek işlemci ile yürütebilir ve bu sırada monolithic kernellerde olduğu gibi taleplere cevap verme hızında bir yavaşlama görülmez, bu nedenle en düşük işlemci hızlarında bile kullanılabilir hızlarda çalışabilir.


    Şimdilik yazımı burada sonlandırıyorum, gerekli eklemeleri ve düzenlemeleri aşağıda yer alacak tartışmalara ve paylaşımlara göre daha sonra yapacağım.

    Saygılarımla,
    GeceBekcisi



    < Bu mesaj bu kişi tarafından değiştirildi GeceBekcisi -- 1 Mayıs 2010; 15:17:59 >







  • Meraklısı olur diye yazdım ama galiba ya bunları merak eden yok, ya da merak ettiği halde okuyan yok
  • biz bunları zati biliyorduk ondandır
    eline saglık
  • Sadece bir resmi bile açarken kadar çok işlemin yapılması beni şaşırttı. Peki Symbian'daki Kernel de aynı şekilde mi çalışıyor?

    Birde Kernel ile ilgili başka bir sorum var. N82'de başıma gelmişti ve cihazın Kernel'i ölmüştü bu yüzden hiçbir uygulama açılmıyordu. Cihaz kendi kendine sürekli altta yazdığım hata mesajını veriyordu;

    Uyg. kapandı:
    Main
    KERN-EXEC 3


    Uygualamalar çalışmıyordu. Örnek vermek gerekirse Mesajlar uygulamasına giriyordum;

    Mesajlar:
    Sistem hatası (-28)


    Hatası çıkıyordu ve uygulama açılmıyordu. Cihazı açıp kapattım belki düzelir diye ama cihaz açıldıktan sonra;

    Uyg. kapandı:
    !AlwaysOnlineManagerServer
    CAlwaysOnlineMan 0


    Uyarının altında Tamam seçeneği vardı, Tamam dedikten sonra;

    Uyg. kapandı:
    ncnlist
    USER 42


    Yine Tamam dedikten sonra;

    Uyg. kapandı:
    Main
    KERN-EXEC 3


    Hatası çıkıyordu. Cihaza Hard Format attıktan sonra Kernel dirildi tabi.

    MeeGo'da da Kernel ölmesi diye birşey var mıdır?




  • quote:

    Sadece bir resmi bile açarken kadar çok işlemin yapılması beni şaşırttı. Peki Symbian'daki Kernel de aynı şekilde mi çalışıyor?

    Symbian'daki kernel, microkernel yapısındadır ve nasıl çalıştığını yukarıda açıkladım.

    quote:

    Birde Kernel ile ilgili başka bir sorum var. N82'de başıma gelmişti ve cihazın Kernel'i ölmüştü bu yüzden hiçbir uygulama açılmıyordu.

    Nasıl ki bilgisayarın işlemcisi ölünce bilgisayar açılmazsa, işletim sisteminin kerneline bir zarar gelirse bırak uygulamaları işletim sisteminin kendisi hiç açılmaz, telefonun ekranına görüntü bile gelmez. Bu yüzden bahsettiğiniz sorun "kernel'in ölmesi" değildir, daha doğrusu aşağıdaki bağlantılardan haklarında bilgi alabileceğiniz işletim sistemi hata mesajlarıdır:

    http://wiki.forum.nokia.com/index.php/Symbian_OS_Error_Codes
    http://www.newlc.com/Symbian-OS-Error-Codes.html

    quote:

    Cihaz kendi kendine sürekli altta yazdığım hata mesajını veriyordu;

    Uyg. kapandı:
    Main
    KERN-EXEC 3


    Uygualamalar çalışmıyordu.

    Burada bahsedilen hata mesajı hakkında açıklama:http://www.newlc.com/en/forum/kern-exec-3-error adresinde verilmiş ve kısaca uygulamanın geçersiz bir işlem yürüttüğünü ifade ediyor diyebiliriz.

    Hatta devamında belirttiğiniz hata kodlarını ard arda incelediğimizde, işletim sisteminin belleğe yüklemesi gereken önemli bir dosyanın gerektiği gibi belleğe yüklenememesinden dolayı o dosyaya ihtiyaç duyan bir çok uygulamanın o dosyanın bellekteki yerine eriştikleri esnada zincirleme bir şekilde çöktüğünü çözebiliriz.

    quote:

    MeeGo'da da Kernel ölmesi diye birşey var mıdır?

    Kernel ölmesi diye birşey yukarıda açıkladığım gibi zaten olmadığından MeeGo'da da yoktur.




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.