OS Services (İşletim Sistemi Servisleri)

25 Ocak 2012

Bir OS, programların çalışması için uygun bir çevre sağlar. Bunun için de OS çeşitli servislere ihtiyaç duyar. Bazı özelleşmiş servisler işletim sisteminden işletim sistemine farklılık gösterebilir. Ancak genel hatlarıyla bir işletim sisteminin sağladığı servisler şöyledir :OS scheme with services

User Interface : Kullanıcıların işletim sistemine ne yapmak istedikleri arayüzdür. Neredeyse tüm işletim sistemleri user interface(UI) içerir. Bazı UI türleri :

  • Command-line interface (CLI) : Komutların yazı olarak girildiği UI türüdür. Günümüzde neredeyse tüm işletim sistemleri tarafından kullanılır. Örneğin windows için run -> cmd diyerek ulaşılabilir. Linux’ta terminal veya console olarak görülebilir.
  • Batch interface : Yapılacak işlemlerin daha önceden dosyalara kaydedildiği UI türü. İşletim sistemine dışarıdan içi komut dolu dosya verilir ve işletim sistemi bu komutları işler.
  • Graphical User Interface (GUI) : En çok kullanılan arayüz şeklidir. Arayüz kullanıcıya pencereler şeklinde gösterilir. Menüleri seçmek, pencerelerde dolaşmak, komutlar vermek için fare gibi nokta belirleyen aygıtlar kullanılır. Klavye ise text girişi vb için kullanılır. Windows, Mac OS X, bazı Linux sürümleri (KDE, Gnome … kullanan) GUI kullanır.

Program Execution : Sistem programları belleğe yükleyebilmeli ve yüklediği bu programları çalıştırabilmelidir. Ayrıca bu programlar normal veya normal olmayan yollardan (ör : Hata vererek) sonlanabilmelidir.

I/O Operations : Çalışan bir program bir aygıttan veya bir dosyadan girdi/çıktı yapmak isteyebilir. I/O işleminin etkin ve güvenli bir şekilde yapılabilmesi için işlem doğrudan kullanıcı tarafından yapılmamalıdır. Bu da işletim sistemlerin I/O desteği vermesini gerekli kılar.

File-System Manupilation : Bir program dosyaları okumak, yazmak; klasörler içerisinde dolaşmak veya dosyaları, klasörlerı oluşturmak, silmek, adlandırmak, isimlerine göre arama yapmak, bilgileri görüntülemek isteyebilir. Bazı programlar dosyayı sahiplenerek dosya, klasör yönetimi hakkına sahip olabilir. Çoğu OS çeşitli file system sunar. Bu seçim kişinin kişisel seçimine veya bazı özelliklere ve performansa bağlı olarak yapılabilir.

Communications : Sistemdeki bir process bir başka process ile iletişime geçmek isteyebilir. Bu iki process aynı bilgisayarda veya ağ üzerindeki farklı bilgisayarlarda olabilir. Processler arasındaki iletişim shared memory veya message passing yöntemlerinden biri ile gerçekleştirilir.

Error detection : OS, oluşabilecek hataların sürekli farkında olmalıdır. Her tür hata için OS doğruluğu ve tutarlılığı sağlamak için uygun işlemi yapmalıdır. Oluşabilecek bazı örnek hatalar :

  • CPU ve Bellek hataları : Belleğe erişememe, gücün kesilmesi…
  • I/O Aygıtı hataları : bellek aygıtı üzerindeki parity hataları, ağ üzerindeki bağlantının kesilmesi, yazıcıya kağıt sıkışması…
  • User Program Hataları : Aritmetik taşmalar, kendine ait olmayan bir bellek bölgesine erişmeye çalışmak, çok fazla CPU kullanımı …

Resource Allocation : Birçok kullanıcı veya birçok görevin (task/job) aynı anda çalıştığı sistemlerde, her biri için kaynaklar ayrılmalıdır.

Accounting : Hangi kullanıcının ne kadar kaynak kullandığı, hangi kaynakları kullandığı gibi bilgilerin tutulması işlemidir. Bilgisayarın yeniden konfigüre edilmesi; donanımının, yazılımının güncellenmesi için gerekli olabilir.

Protection and Security : Çok sayıda process eş zamanlı işletilirken, bir process’in diğer process işleyişine veya bir process’in işletim sisteminin işleyişine karışamıyor olması gereklidir. Bu yüzden bir process, başka bir process’in bellek bölgesine erişemez.

Kaynak : Operating System Concepts ~ Eigthth Edition (s50,s51)

İşletim Sistemi Ne Yapar?

25 Ocak 2012

Bir bilgisayar sistemi donanım (hardware), işletim sistemi (operating system), uygulama programları (application programs) ve kullanıcılar (users) olmak üzere 4 bölümde incelenebilir.

Hardware sistem için temel kaynakları sağlar.  İşlemci (CPU), bellek, Girdi/Çıktı cihazları (I/O devices) gibi.

Application programs kullanıcıların problemlerini çözmek için donanım kaynaklarını kullanan yazılımlardır. Spreadsheet, Web tarayıcıları, derleyiciler gibi.

Operating system ise hardware, application programs ve users arasında köprü görevi görür. Hardware’ı kontrol eder ve birçok user’ın birçok application programda çalışmasına izin verir.

User View

Bir bilgisayarı kullanan kişinin (kullanıcı/user) görüşü kullanılan arayüz’e göre değişir.

Birçok kullanıcı monitör, klavye, fare ve sistem parçalarından oluşan bilgisayarları kullanır. Bu tür bilgisayarlara kişisel bilgisayar(PC/Personal Computer) diyoruz. Bu tür sistemler bir kullanıcının tüm kaynakları tekeline alması için tasarlanmıştır. Burada amaç kullanıcının yapacağı işin performansını en üst seviyeye çıkarmaktır. Bu tür bilgisayarlarda kullanılan işletim sistemi kolay kullanım sağlar. İşletim sisteminin asıl amacı performanstır ve kaynak kullanımını (resource utilization) çok kullanıcıya dağıtma amacı gütmez.

Diğer tür bilgisayarlar kullanıcıların terminalleri kullandıklarıdır. Burada, merkezde çalışan bir mainframe veya minicomputer vardır. Tüm kullanıcılar terminaller vasıtasıyla bu ana bilgisayara bağlanır. Bu tür bilgisayarlarda kullanılan işletim sisteminin asıl amacı kaynak kullanımını (resource utilization) en üst seviyeye çekmektir.

Üçüncü tür bilgisayarlar, kişilerin workstation kullandıklarıdır. Bir workstation diğer workstationlara ve serverlara bağlıdır. Kullanıcıların kendilerine ait kaynakları (resources) vardır fakat aynı zamanda network üzerinde paylaşılan kaynakları da kullanırlar. (dosya saklama, hesaplama yapma, çıktı alma gibi). Bu tür bilgisayarlarda kullanılan işletim sistemi kullanılabilirlik (usability) ve kaynak kullanımını (resource utilization) orantılı şekilde yüksek tutmalıdır.

Dördüncü tür bilgisayarları el bilgisayarları, tabletler, akıllı telefonlar olarak düşünebiliriz. Bu tür cihazların azı artık bağımsız olarak çalışmaktadır. Çoğu kablosuz olarak bir ağa dahildir. Bu tür cihazlar fazla güç harcamamaları için çok hızlı değildir. Bu yüzden de arayüzleri limitlidir. Bu tür bilgisayarlarda bulunan işletim sistemi, bireysel kullanımı kolaylaştırmayı hedefler. Ancak pil ömrü diye bir problem olduğundan olabildiğince az güç tüketmeye çabalar.

Bazı bilgisayarlar ise user view çok az olabilir veya hiç olmayabilir. Evdeki bazı embedded cihazlar, otomobillerdeki bazı embedded bilgisayarlar. Bu tür bilgisayarlar için tasarlanan işletim sistemleri daha çok kullanıcı müdahalesi olmadan çalışabilmesi için tasarlanır.

System View

Resource Allocator : İşletim sistemi bir kaynak ayırıcısıdır. Bir bilgisayar sisteminde birçok kaynak vardır ve bunlar CPU Time, memory space, file-storage space problemlerinin çözümünü gerektirir. OS, bu kaynakların hangi programlar tarafından nasıl kullanacağını belirler. Resource allocation, özellikle çok kullanıcılı bilgisayarlarda hayati önem taşır.

Control program : İşletim sistemi bir kontrol programıdır. Control program user programlarının çalışmasını yönetir. Hatalardan korur ve yanlış kullanımı önler. Ayrıca I/O cihazlarıyla da control program ilgilenir.

İşletim Sisteminin Tanımı

İşletim sistemi için tam bir tanım yapmak mümkün değildir. İşletim sistemleri vardır çünkü kullanılabilir bilgisayar sistemleri kullanılarak problem çözümünde makul çözüm yolları sunarlar.

Bilgisayar sisteminin temel görevi kullanıcı programlarını çalıştırmak ve kullanıcı problemini kolaylıkla çözmektir. Bu amaçla ilk olarak bilgisayar donanımı geliştirildi. Donanımın kendi başına kullanımının zor olduğu anlaşıldığındaysa application programlar geliştirildi. Bu application programların birleştirilip tek bir noktadan çalıştırılan halin işletim sistemi (operating system) diyebiliriz.

İşletim sistemini hangi parçaların oluşturduğu da kesin değildir. Ancak bir işletim sistemini kernel, system programs ve application programs olarak incelemek mümkündür.

Kernel : İşletim sistemi çalıştığı süre boyunca çalışan program. İşletim sisteminin çekirdeği. Bilgisayar açılır açılmaz memorye yüklenen program.

System Programs : Kernel parçası olmayan, ancak bilgisayarın çalışmasını etkileyen, düzenleyen programlar. Sürücüler (drivers) bu gruba alınabilir

Application Programs : İşletim sistemiyle doğrudan ilişkili olmayan programlardır. Daha çok kullanıcıların işlerini halletmeye yöneliktir.

 

Kaynak : Operating System Concepts ~ Eight Edition (s3,s4,s5,s6)

CSharp delegasyonlar (delegeler [delegates]) – 1

25 Temmuz 2011

Delegeler, birçok programlama dilindeki function pointer’ların C# karşılığı olarak düşünülebilir. Bu pointerlar vasıtasıyla, istediğimiz bir değişkene fonksiyonun geri döndürdüğü değeri değil, fonksiyonun kendisi (aslında fonksiyonun belekteki yeri) atanmış olur. Event mekanizmaları tasarlanırken sıkça kullanılan function pointer, typesafe olmadığından birçok problemlere yol açabilir. C# içindeki delegeler ise typesafetir.

Madem temelde sıradan metodlar gibi,  peki neden delegate kullanılır?

  • Delegeler ile birden fazla metodu aynı anda kullanabiliriz.
  • Anonim metodlar ile  daha kısa kodlar yazarız.
  • Async Delegate kullaranarak, metodların asenkron olarak çalışmasını sağlayabiliriz.
  • Delegeleri dizi şeklinde tutarak, metodların döngülerle çağırılmasını sağlayabiliriz.

 

Örnek bir delege kullanımı :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
namespace DelegateKullanimi
{
    public delegate void myDel(int c,string d); // myDel isimli delegemi class seviyesinde tanımlıyorum
 
    class Program
    {
        static void Main(string[] args)
        {
            myDel yazdir = new myDel(adFiyatYaz); //Delegemin instance'ını adFiyatYaz fonksiyonunu kullanarak oluşturuyorum
            yazdir += new myDel(kdvYaz); // yazdir delegate'ime yeni bir myDel intance'ı ekliyorum
 
            /* Yukarıda adFiyatYaz ve kdvYaz metodlarımı yazdır isimli myDel tipindeki delegemin içine attım. 
             * myDel delegesini bir integer bir de string alacak şekilde tanımladığımdan, dışarıdan bu iki tip 
dışında veri alan metodları delegem içine eklemeye çalışırsam, derleme sırasında hata alırım.
             */
 
            yazdir(100,"Hoşaf suyu"); // yazdır delegesinin kullanımıyla iki metod birden çağırılmış oldu.
        }
 
        static void adFiyatYaz(int a,string b)
        {
            float fiyat = ((float)a) * 118 / 100;
            Console.WriteLine(b + " ürününün fiyatı: " + fiyat.ToString());
        }
        static void kdvYaz(int a, string b)
        {
            float kdv = a * 18 /100;
            Console.WriteLine("Fiyata dahil KDV : " + kdv.ToString());
        }
    }
}

CSharp property kullanımı

19 Temmuz 2011

Property, C#’ta get ve set metodları kullanmadan private değişkenlere erişimi sağlayan, encapsulation olayını güzelleştirerek OOP’i zevkli hale getiren bir hededir.

bir değişken içindeki veriye ulaşabilmek için 40 takla atmanıza, propertyler sayesinde gerek kalmaz.

Örnek :

1
2
3
4
5
6
7
8
9
10
class MyC
{
    private string _isim;
    public string Isim
    {
        get { return _isim; } // getIsim() fonksiyonundan kurtaran get propertysi 
        set { _isim = value; } // setIsim(string isim) fonksiyonundan kurtaran set propertysi
    }
    public MyC(string s){this._isim=s;}  //MyC sınıfımın yapıcı (constructor) metodu
}

Bu da bize getIsim() setIsim(string isim) gibi fonksiyonlarla uğraşmak yerine, veriye aşağıdaki gibi kolaylıkla ulaşmamızı sağlar:

1
2
3
MyC Tol = new MyC("Ali");
Tol.Isim = "Tolga"; // Property üzerinden MyC tipindeki Tol'un _isim değişkenine değer atıyorum
Console.WriteLine(Tol.Isim); // Tol.Isim diyerek Tol'un get propertysinden dönen değeri kullanıyorum

Ayrıca, get ve set alanlarının içi istenildiği şekilde değiştirilerek kontroller yapılabilir, istenen değer atanabilir. Veya, get veya set ‘lerden istediğimizi yazmayarak, propertinin salt okunur veya salt yazılır olmasını sağlayabiliriz.

Propertylerin diğer bir güzelliği de, metodlara göre daha hızlı çalışmaları. Yazılmış program JIT compiler ile derlenirken, property’ler inline yapılarak intermediate language haline getiriliyormuş*.

* Kaynak : Professional C# 2005 with .NET 3.0 : Nagel, Evjen, Glynn,Watson,Skinner

CSharp out parametresi ile fonksiyon çağırımı

19 Temmuz 2011

Bir metodu void olarak kullanmamıza rağmen metod içindeki bir veya birden fazla değer almak istiyorsak, out veya ref parametresini kullanabiliriz. ref parametresi dediğim, call-by-referance anlamına geliyor. out parametresi de bu parametreye oldukça benziyor.

Ancak ref ve out parametresi arasında farklar var. Şöyle ki :

  1. out parametresi ile gönderilen bir değişkenin değeri metodun içinde kullanılamaz
  2. metod içinde yeni bir değişken yaratılır, fonksiyon sonlanırken referansi metoda gönderilen değişkeninkine atanır
  3. metoda out parametresiyle gönderilen bir değişkene ilk değer atanması zorunlu değildir

Hız? Bellek? Yazının devamı »


 
Bu sitede Wordpress ve MySQL kullanılmaktadır. Tema : Shlomi Noach, openark.org
Ayrıca site Grikare sunucularında ikamet etmektedir.