Wednesday, July 19, 2006

Karşılıklı Dışlama Hakkında Bir Yazı

KARŞILIKLI DIŞLAMA
Bu yazıyı yazmamın sebebi bilgisayar dünyasının çokça kullandığı ama tam olarak ne olduğuda çoğu bilişimci için bilinmeyen bir konuya açıklık getirmeye çalışmaktır. Benimde bilgilerim yeterli olmayabilir o yuzden herşeye inanmayıp araştırmanızı tavsiye ederim;)

"Karşılıklı Dışlama nedir?" sorusunun cevabını şu şekilde özetleyebiliriz: Aynı kaynaklara ( kaynak: RAM, DISK, FILE, EXTERNAL DEVICE etc ) ulaşmak isteyen birden fazla proses olması durumunda bu kaynaklara erişimin kaynak tipine göre paylaşılması ve belli bir anda sadece izin verilen proseslerin bu kaynaklara erişmesinin sağlanmasıdır.

Yukarıdaki tanım biraz karışık gelmiş olabilir. Örnek verelim: Printer paylaşılmayan bir kaynaktır ve karşılıklı dışlama gerektirir bir zaman da sadece bir proses printer ı kullanarak çıkış alabilir.

Dosyalar okuma yapıldığı zaman paylaşılabilir ve okuma için açılan dosyalarda karşılıklı dışlama gerekmez, ancak yazma yapıldığı zaman dosya karşılıklı dışlanmalı ve bir anda bir proses dosyayı elinde tutmalıdır aksi takdirde dosya bütünlüğü tehlikeye girer.

Karşılıklı dışlamayı gerçekleştirmek için bir çok algoritma ortaya atılmıştır. Fakat bir çoğu yetersiz kalmıştır. Örneğin ünlü Banker algoritması kaynak sayısının ve proseslerin sabit olması kısıtı altında çalışarak problemi çözme yoluna gitmiştir.

Donanım düzeyinde gerçeklemelerde özel mikroişlemci komutları CISC işlemcilerde bulunmaktadır. örneğin motorola 68000 deki TAS ( Test and Set ) komutu bir kaynağı bir anda bir prosese vermek için bir bayrağı test eder bayrak uygun durumdaysa kaynağı verir ve bayrağı set eder. Bu işlemler (test ve set) arada bölünemez şekilde tasarlanmıştır, bu yüzden donanım seviyesinde bir çözüm olarak görülebilirse de proseslerin kaynağı alması için sonsuza kadar beklemeyecekleri bu yolla garanti edilemez.

Günümüz İşletim sistemleri çeşitli çözümler sunar. Unix sistemlerde kullanılan semafor yapıları proseslerin karşılıklı dışlama ilkesine göre çalışmasına olanak sağlar. Semaforlar işletim sisteminin sağladığı özel değişkenlerdir ve işletim sistemi kontrolü ile çalışır. Semaforları kullanmak için yine işletim sisteminin sağladığı sistem çağrıları kullanılır. Sistem çağrıları kendi içlerinde bölünemez olarak tasarlandıklarından kaynak paylaşımı karşılıklı dışlama ilkesine göre yapılabilmektedirler.

Karşılıklı dışlama konusuna bu kadar alt düzeyden baktıktan sonra daha yüksek seviyelerde de aslında bu konuya dikkat edildiğine değinmekte yarar var. Örneğin database tasarımında yazma işlemlerin de kilit kullanılması karşılıklı dışlamayı sağlamak içindir.

Karşılıklı dışlama hakkında genel bir fikir vermek istedim, bugun maximum sayida işin maximum süre hizmet görmesi için geliştirilmiş iş sıralama algoritmaları vardır. Karşılıklı dışlama ve iş sıralama algoritmaları performansa direk olarak etki ettiğinden günümüzde önemli bir yere sahiptir.

No comments: