14 Haziran 2013 Cuma

Bellek Eniyileştirmesi ?

          Bu ödevde Windows ortamlarında yapılan ve bellek optimizasyonu sağladığı iddia edilen programlar hakkında bir yazı paylaşacağım. Aslında bu tarz programların Windows ortamındaki bellek için neler yaptığına bakacağız. Öncelikle şunu belirtmeliyim ki ; bellek yapısı şu şekildedir. Bellek hiyerarşik ve anabellek'ten önbellek'e kadar 2 seviye daha olan bir yapıdır. Yani bilgisayarda bir veriye ulaşmak için öncelikle önbellek dediğimiz yapıya bakarız ve burada aradığımız verinin olmasını isteriz :) bunun sebebi istediğimiz veriye hızlı bir şekilde ulaşıp bilgisayarda yapılacak işlemlerin azalmasını sağlamaktır. Yani aslında "tık" anında istenileni getirmektir. Bunun için adamlar bir sürü sistem denemiş ve en sonunda hiyerarşik yapıda karar kılmışlar. Bu sistemin oldukça fazla olumlu tarafı varken, felaket durumları da mevcuttur. Mesela aradığımız veriyi önbellekte bulamazsak 1.derece belleğe, orada da bulamazsak 2.derece belleğe bakarız. En kötü ihtimalle orada da yoksa anabellek yolları bizim için başlamış olur. Ki bu durumda bir kullanıcı için bekleme süresini arttırmaya sebeptir. Tabi bazı durumlarda gözle görülür bir süreç geçmese de biz (bilgisayar mühendisleri) biliyoruz ki zaman kaybıdır. Sırf bu sistemde daha verimli olacağını savunan programcılar bellek optimizasyonu adı altında bir takım programlar ve appletler çıkarmıştır. Bu programların bilgisayarımızda bulunan fazlalıkları yok ettiği ve bilgisayarımızı daha hızlı hale getirdiğini iddia etmektedirler. Ancak biraz araştırma (google :) ) yaptıktan sonra bu sisteminde optime etmediğini aksine daha da fazla yavaşlattığını görmüş oldum. 
          Bize verilen ödevde ki reklamda Ram-Booster adlı programın eniyileme yaptığını ve bilgisayarı uçurduğundan bahsetmektedir. Bu ve bunun gibi programlar sistemin içine bir böcek gibi yerleşmek ister. Windows da herhangi bir atak görmediği için bu yetkilendirme işine izin verir. Bu sistemde bulunan fazlalıkları silerken aynı zamanda sistemde kendi programı için yer açmaya ve doldurmaya devam eder. Bellek hiyerarşisinden dolayı öncelikle önbelleğe yerleşen bu program gittikçe hakimiyet kurmaya ve bilgisayarın öncelik işlerini engellemeye başlarlar. Yani artık önbellek tamamıyla bu programa ayrılır ve bilgisayar gereksiz şeylerden, uzantılardan vb. programlardan kurtulurken aslında bu sistemin kölesi olmaya başlarlar. Ben araştırmalarımda gördüğüm ve okuduğum bilgilerden ve denemelerden yola çıkarak bu programlarının eniyileme konusunda faydadan çok zarar verdiğine inanmaktayım. Bilgisayarı optime etmek için illa ki bir başka programa ihtiyacımız yok. Bu konu hakkında Windows kendi destek sitesinden yeterli açıklama yapmış ve uygulandığında bilgisayarın hızlanacağını anlatmıştır. Bilgisayarda kullanılan iCleaner, RamRUSH, Ram-Booster tarzı programlar sistemi yavaşlatır. Elbette bu programların da faydası mevcuttur. Mesela bilgisayarı anlık rahatlatma ve buna benzer hızlandırma işlemleri yaparlar. Gereksiz dosya ve uzantıları silerken bilgisayarın ram yiyen programlarını pasif hale getirirler. Ancak bu işlem için belirttiğim gibi daha fazla ram daha fazla ram isterler :) Bu yüzden ben konuda en iyilemenin bilinçli bir şekilde, mümkün olduğunca program kullanılmadan yapılması taraftarıyım.
          Bu konu hakkında sizlerle paylaştığım bilgiler tamamıyla kendi fikrimdir. Konu hakkında bilgiyi yaptığım araştırmalar sonucunda edindim. 

Faydalı olabilecek linkler için : 

1 Haziran 2013 Cumartesi

Windows Process Scheduling ?

          Merhaba arkadaşlar, sizlere Windows Process Scheluding hakkında bilgi vermeden önce bazı kavramlar neymiş kendi çapımda açıklamak istiyorum.
Scheluding nedir ? Tam anlamıyla zamanlama demektir. Ama bilgisayar bilimleri dilinde ise en basit anlatımda, bekleyen process (işlem)lerden hangisinin çalışacağına karar veren mekanizmadır. Tabi bu mekanizmanın işlemesini belirlemek için çeşitli algoritmalar mevcuttur. Bu kavramlara ek olarak preemptive ve non-preemptive kavramlarına bir açıklık getirmem gerekiyor. Preemptive algoritmalara kesintili algoritmalar, non-preemptive algoritmalara ise kesintisiz algoritmalar denir. Bu algoritmalar, saat kesmelerini nasıl kullandıklarına göre belirlenir. Preemptive algoritmada; bir süreç çalışması için seçilir. Kendi kodunda bulunan bir I/O isteği ile bloklanıncaya kadar ya da kendi isteği ile işlemciden çıkıncaya kadar çalışır.
Non-preemptive algoritmada ise; bir  süreç seçilir ve sabit, belirli bir maksimum süreye kadar çalıştırılır. Bu süre bittiğinde, süreç hala işlemcide çalışıyorsa askıya alınır ve zamanlayıcı (scheduler) başka bir süreci çalışması için seçer.
          Bu algoritmaların ise belirli amaçları vardır. Mesela algoritmalar tüm sistemlerde adil olmalı, belirlenen politikaya uymalı ve sistemi dengede tutmalıdır. Üretilen iş maksimum, dönüş süresi minimum ve işlemci kullanımı eşit ve yüksek olmalıdır. İsteklere hızlı cevap vermeli ve orantılı olmalıdır. Yani, kullanıcının beklediği cevabı vermelidir. Veri kaybından kaçınmalı ve nitelik bozulmamalıdır. Bu yüzden sistemlerde scheluding algoritmaları önemli yer almaktadır. Bu algoritmalar şöyle sıralanabilir :
1)First come first served: (İlk gelene ilk servis) Günlük hayatımızda herhangi bir mekana gittiğimizde yapılan müşteri sıralamasına benzer. Her gelen müşteri sipariş önceliğinde sonrakinden önce hakka sahip olur. Bu sistem kesintisiz ve en kolay zamanlama algoritmasıdır. İlk gelen süreç ilk hizmeti alır. Bu algoritmada süreçler istek sıralarına göre işlemcide çalışırlar. Basitçe hazır durumdaki süreçleri tutan bir kuyruk(queue) vardır. Kuyruktaki süreçler sırayla çalıştırılırlar. Çalışan süreç bloklanınca bekler. Bloklanmış süreç tekrar hazır durumuna geçtiğinde yeni bir süreç gibi davranılarak kuyruğun sonuna  eklenir. Mesela işlemci tasarımında papatya zinciri örnek olabilir.
2)Shortest Job First (En Kısa Süreli İş İlk): Kesintisiz (non-preemptive) çalışan algoritmadır. Süreçlerin toplam çalışma sürelerinin belirli olduğu düşünülür. Zamanlayıcı, kuyrukta bulunan süreçlerden en kısa sürede tamamlanacak olan süreci seçer.
3)Shortest Remaining Time Next(Çalışma süresi en az kalanı çalıştırma): En kısa süreli iş algoritmasının, bir kesintili uyarlamasıdır. Kalan çalışma süresi en az olan seçilir. Yeni bir iş geldiğinde, mevcut işin kalan süresi ile yeni sürecin kalan süresi karşılaştırılır; küçük olan tercih edilir.
4)Round-Robin Scheduling (Dönüşümlü Zamanlama): 
Her sürece, çalışabileceği maksimum süre atanır. Sürece verilen bu zaman aralığına quantum denilir. Eğer süreç, quantumunun sonunda hala çalışıyorsa askıya
alınır ve başka bir sürece geçilir. Sürecin quantumu bitmeden süreç bloklanırsa ya da çalışması sonlanırsa başka bir sürece geçilir. Bir listede çalışabilir süreçler tutulur. Süreç quantumunu
tükettiğinde listenin sonuna eklenir.
5)Priority Scheduling (Öncelik Zamanlama): Dönüşümlü zamanlama algoritması dolaylı olarak tüm süreçlerin eşit öncelikli olduğunu farzeder. Süreçler üzerindeki dış etkilerle süreçlerin farklı önceliklerde olması gerekir. Bu durumda öncelik zamanlama algoritması kullanılır. Her sürece bir öncelik(priority) değeri atanır ve çalışabilir süreçlerden yüksek öncelikli olanların çalışmasına izin verilir.

Şimdilik sizlerle paylaşacağım bilgiler bu kadardır. Herkese okuduğu için teşekkür ederim.