[Linux] Re: linux&freeBSD

---------

New Message Reply About this list Date view Thread view Subject view Author view

From: Serdar Koylu (serdarkoylu@fisek.com.tr)
Date: Thu 12 Sep 2002 - 14:01:50 EEST


12 Sep 2002 12:36 EEST tarihinde yazmışsınız:

>
> On Thu, 12 Sep 2002, reni wrote:
>
> Merhaba,
>
> Bana oyle geliyor ki BSD dokumanlarini okumak icin harcadiginiz
> zamanin yarisini bile Linux dokumantasyonu icin harcamamissiniz.

:))) Bir benden..
 
> Umarim bu satiri FreeBSD "neden daha iyi" sorusuna bir yanit olarak
> yazmadiniz. Preemptive multitasking yapmayan ve gunumuzda kullanilan
> cok amacli bir isletim sistemi ismi verbilir misiniz ?
> Windows 95'in de preemptive multitasking yaptigini soylesem...

Muhalefet yapmak icin degil bilgi olmasi acisindan uygun goruyorum. Windows'larin peremptive multitasking anlayislari bizim anlayisimizdan son derece farklidir. Bir kac kernel thread'ini Fiber diye birlestirip UserSpace'a baglarlar sonrada task islevlerini kendileri belirlerler. Yani ne zaman task_suspend olacaklari, ne zaman run olacaklari kendi insiyatiflerinde olur. Yani kernel kendi multitasking kabiliyetlerini fiber'lere, fiberlerde user space uygulamalara devreder. Zaten Windows sistemleri icin kernel ile user-space arasinda bir cizgi yoktur. User space uygulamalarin kernele daldiklari cok gozlenir. MS-SQL Srv. e bir gozatin.

Basit bir test yapin. Bir dizine 2-3 bin tane dosya koyun ve silmeyi deneyin. Bu silme islevi surecinde makinada fareyi hareket ettirmekten baska hic bir sey yapamaz hale gelirsiniz. Halbuki CPU yukude, I/O yuku de makul seviyelerdedir. Fakat, I/O icin user-space task schedulingi bloke ettigi icin makine baska bir sey yapamaz hale gelir. Fare ise, bir IRQ'ya sahiptir. PIC veya IO/APIC'te IRQ inhibit edilmedigi ve handler kodu mevcut oldugu surece fare calismaya devam eder.

Peki Windows bunu nicin yapiyor ? Bu sayede uygulamalar diledikleri zaman diledikleri kadar kaynak saglayabiliyor kendilerine. Boylece gercekten hizli olabiliyorlar. Bilhassa I/O islemlerinde ne zaman kesilip ne zaman calisacaklarina kendileri karar veriyorlar. Zaten Win32 API asenkron I/O ve non-blocking destegi vermez, Win32'de fork (Linux icin clone) yok. I/O islevleri bir tur pseudo synchron olarak yapilmak zorunda. Eger bu asamada bir de task switch ise karisirsa ne senkronizasyon kalir, nede non-blocking ortalikta. IIS'in hizli olmasinin ardinda yatan espri budur. IIS "is yapiyorum" dedi mi, akan sular durur. Tum kaynaklar IIS'in elindedir. Hemen hemen ayni Apache kodunu kernele gomerek yapilan TUX ayni sekilde task denetimini ele alinca IIS'in onune geciverir.

Windows'lar multitasking bir dizayna sahiptir. Aslen preemptive olabilir ama bu yetkisini user-space programlara devreder. Bu nedenle preemptive demek yanlis olur. Fakat, Windows'lar cok kullanicili bir sistem degildir. Dikkat edersiniz Windows mimarisinin birden fazla kullaniciyi idare etmek icin duzenlenmedigini kolayca gorursunuz. IIS veya MSSQL, yada file sharing sistem seviyesinde degil application seviyesinde bir multiuser destegi sunar. Bir W2K'ya uzaktan erisim icin mutlaka bir server ve client olusturmalisiniz. UNIX'te ise sadece stdin/stdout'u saglamaniz yeterlidir. Sistem tum kullanicilarini dusunmek zorundadir ve oyle davranir.

Tek kullanicili bir multitasking sistemde de top window'un (is yapan uygulama) yeterli gucu almasi gerekir, background'dakiler beklesin denmis olmali. Iste bu dizayn hatasi Windows'un ikide birde cokmesindeki en onemli etkenlerden biridir.

Umarim bu bilgiler isletim sistemi tercihi yapmak isteyenlere biraz faydali olur.

Saygi ve sevgiler..

-------------------
PS: Berk kardesimizi milleti banlamak disinda faaliyetler icinde cevaplarla burada gormek cok guzel. Kernel, multitasking vs. konularinda derin tefekkurlerde bulunmus alim bir dostumuzdur. Elindeki diger bilgileride paylasmasi temennisiyle..

-----------------------------------------------------------------------
Liste üyeliğiniz ile ilgili her türlü işlem için
http://liste.linux.org.tr adresindeki web arayüzünü kullanabilirsiniz.

Listeden çıkmak için: 'linux-request@linux.org.tr' adresine,
"Konu" kısmında "unsubscribe" yazan bir e-posta gönderiniz.
-----------------------------------------------------------------------


New Message Reply About this list Date view Thread view Subject view Author view

---------

Bu arsiv hypermail 2b29 tarafindan uretilmistir.