
From: Deniz Akkus Kanca (deniz@arayan.com)
Date: Thu 04 Jul 2002 - 12:34:04 EEST
Necmettin Begiter wrote:
Cevap biraz uzun oldu....
> 1. Linux İşletim Sistemi (veya Sistemleri -hangisi daha uygunsa) temel olarak iki parçadan oluşur doğru mu? Kernel ve arayüz...
Linux  işletim sistemi bir tanedir. Sistemin bir kaç yapıtaşı vardır:
1. Çekirdek - kernel. Linux'u linux yapan budur. Linux çekirdeğini 
çıkarıp içine başka bir çekirdek (örneğin BSD) koyarsanız BSD serisinden 
bir işletim sistemi elde etmiş olursunuz.
2. Dosya sistemi vb gibi çekirdeğin etrafındaki parçalar. Bunlar esas 
olarak FSF'in eseridir (GNU) ve hemen hemen her Unix varyantında artık 
bunlar kullanılır.
İşletim sistemi aslında bundan ibarettir. Üzerine gelen herşey 
uygulamadır. Bu noktadan itibaren elinizdeki makinaya tabiri caizse 
"can" üflenmiş olur.
Bunun üzerine çeşitli seviyelerde uygulamalar gelebilir.
"Daemon"lar -- sistem servisleri:
Örneğin apache (web sunucusu), normal kullanıcılar için işletim 
sisteminin bir parçası olarak görünebilir fakat değildir. Herhangi bir 
uygulamadır, sistem tarafından sürekli çalışılır tutulduğu için 
"daemon", yani sistem servisi olarak adlandırılır. Özel bir kullanıcı 
yetkisi bile yoktur, düşük yetkili normal bir kullanıcıymış gibi çalışır.
"Ağ ortamı" dendiğinde akla gelen şeylerden birisi olan bilgisayarların 
birbirlerinin diskini görebilmeleri, samba, nfs gibi daemon'lar 
tarafından yapılır. Bunlar da işletim sisteminin "esas" parçası değildir 
aslında. İsterseniz birini kaldırır, diğerini kurarsınız. (Linux 
üzerindeyseniz sisteminizi yeniden de başlatmazsınız :-) )
Sistem servisleri genelde kullanıcılar tarafından işletim sisteminin 
bütünleşik parçası zannedilir. Değillerdir. Sistem, bu servisler 
olmaksızın çalışır -- istediğiniz fonksiyonaliteyi sağlamayabilir, fakat 
çalışır.
Grafik arayüzleri:
X:
X, Linux dünyaya gelmeden önce yazılan bir grafik arayüzüdür. X kısaca 
ekranı idare eder. Yani bir pikselin ekranın neresine çizileceğini idare 
eden X'dir. En yalın hali ile bundan daha başka bir şey aslında pek yapmaz.
X kutudan çıktığı hali ile ağlı ortamlarda çalışır, birden fazla ekranı 
idare edebilir. Bundan kastedilen şudur:  Örneğin iki makina (A ve B) X 
çalıştırsın. A, B'nin ekranında gösterilmek üzere bir şey gönderebilir. 
B, buna izin verebilir, veya reddedebilir. X aynı zamanda bir makinaya 
birden fazla ekran bağlanma meselesini de halledebilir.
X, işletim sisteminin parçası değildir. Örneğin bir zamanlar Sun iş 
istasyonlarında X yoktu, kendi grafik sistemleri vardı. Eğer isterseniz 
  , X haricinde bir grafiklenme sistemi çalıştırabilirsiniz. Bir kaç 
alternatifi vardır, fakat destek/uygulama vb söz konusu olunca X 
haricinde bir şeyi tercih etmekte zorlanırsınız.
X'in üzerine gelen katmanlar:
Yalın X çalıştırmak mümkündür. Uzun yıllar öyle yaptık. X'de bir pencere 
yöneticisi seçersiniz, çeşitli "düz X" çalıştıran programları 
çalıştırırsınız. Kendi ayarlarınızı yaparsınız, menü yoktur, vb.
Sonra Motif ve CDE geldi, en son da KDE ve Gnome. Motif, yaygın olan 
pencere elementlerini içeren bir kitaplık (pencerenin sağındaki, 
altındaki sliding bar'lar, her pencerenin kapanmasına, küçülmesine 
yarayan tepedeki tuşlar vb) idi. Motif'in ikinci bir elementi de 
standart hale getirilmiş bir "ortam" idi. Ortamdan kastedilen, standart 
pencere yöneticisi, kullanıcı sisteme girdiği zaman kendisine gösterilen 
standart masa üstü vb idi. Motif, X üzerine gelen bir katmandan 
ibarettir. Motif'den sonra CDE geldi. CDE de benzer bir katman idi. 
Çeşitli Unix satıcıları (Sun, HP, AIX vb) bir araya gelerek bunda 
birleşme kararı aldılar. Halen daha Sun, HP, AIX vb satın alırsanız 
karşınıza CDE çıkar.
KDE: KDE de, tıpkı Motif, CDE vb gibi bir katmandır. KDE'de ek olarak, 
bir de uygulamalar vardır. Bunlar, KDE kitaplığını kullanarak yazılan, 
grafik arayüzlü uygulamalardır (kmail vb). Ama örneğin mozilla, bir KDE 
uygulaması değildir. Düz X çalıştıran (KDE kitaplığı olmayan) bir 
makinada mozilla çalıştırabilirsiniz, ama kmail çalıştıramazsınız.
Gnome: KDE gibi ama farklı bir tat/renk.
Bu katmanları bir arada çalıştırabilirsiniz aslında. Örneğin KDE çalışan 
bir sistemde aynı zamanda Gnome dan uygulamaları da çalıştırabilirsiniz. 
Veya bir daha sisteme girişinizde Gnome'u seçebilirsiniz. Tabii X'in 
üzerine gelen katmanları çalıştırabilmeniz için X çalıştırmanız gerekir.
Uygulamalar:
KDE ve Gnome'un içinde de uygulamalar vardır -- bunlar KDE ve Gnome 
bağımlısıdır. Bir de bağımsız uygulamalar vardır, örneğin mozilla, 
OpenOffice vb. Bunlar da işletim sisteminin esas/asli parçası değildir. 
Kaldırıp yerine başka bir şey koyabilirsiniz, hangisini kuracağınıza siz 
karar verirsiniz.
--------------------------
Linux (ve bütün Unix'ler) bu tarz katmanlardan oluşur. Her katmanda 
değişik kararlar verebilirsiniz.
Meseleyi karıştıran olay, Microsoft'un bu katmanlar hakkında aldığı 
kararları kullanıcı veya sistem yöneticisine bırakmamasıdır. Dolayısıyla 
Microsoft sistemlerine alışık olanlar bu katmanları karmaşık bulurlar.
Linux'un esnekliği ise bu katman tercihlerinin yapılabilmesinden 
kaynaklanır. Örneğin kol saatinde Linux çalıştıracaksanız (IBM), bu 
katmanların çoğunu çalıştırmazsınız/kurmazsınız. Bu katmanları devre 
dışı bırakmak veya birinin yerine diğerini tercih etmek için yapacağınız 
işlem basit ve tanımlıdır.
Normal bir kullanıcının önündeki masaüstü Linux'unda bu değişik 
katmanların hepsi mevcuttur ve çalışır.
"Dağıtım" ların görevi, temel işletim sisteminin üzerine konulacak bu 
katmanlar için tutarlı tercihler yapmaktır. Dolayısıyla elinize bir 
Linux dağıtımı geldiği zaman, şimdi grafik arayüz için ne kullanayım 
demezsiniz, o tercih X lehine sizin için yapılmıştır. KDE/Gnome genelde 
hepsinde mevcuttur, orada hangisini (veya ikisini birden) istediğinize 
dair bir tercih yaparsınız. Sistem servislerinden ana servislerin hepsi 
vardır, kurayım mı, çalıştırayım mı tercihini yaparsınız.
> 2. Kernel tek bir tane mi ? (Makina başına demiyorum, tüm Linux sistemleri için konuşuyorum -yani Windows kernelinin hep aynı olması gibi...)
Windows kernel'u bildiğim kadarı ile hep aynı değil. Hatta Windows'un 
değişik sürümleri arasında tamamen farklı ve yeniden yazılmış olanları 
var. Bildiğim kadarı ile:
Windows 3.1 - DOS'un üzerine giydirilen bir grafik arayüz ortamından 
ibarettir (muadili X + KDE/Gnome olsa gerek). İşletim sistemi DOS'tur.
Windows 95 - yine 3.1 gibi, fakat bu sefer biraz daha "entegre".
Windows NT - New Technology. Microsoft, Windows 9x sürümünden hemen 
hemen hiç faydalanılmadan sıfırdan yazılmıştır. Arka plan mimarisi VMS 
kökenlidir (VMS, eski bir Digital işletim sistemidir, Microsoft VMS'i 
yazan ekibi işe aldı ve NT'yi yazdırdı)
Windows 2000 - Resmi ben burada kaybettim, fakat anladığım kadarı ile 
BSD Unix'den çok kod alan bir sistem bu. Yine sıfırdan yazılmıştır, NT 
veya daha öncekilerden satır satır farklıdır.
Windows XP - 2000'den ne kadar faydalandıklarını bilmiyorum.
Ama Linux çekirdeği bir tanedir. 1. sürümden itibaren değişik sürümleri 
vardır, güncellenmiştir, ama sıfırdan tekrar yazılmamıştır. (OK, 1'den 
2'ye geçerken yeniden yazılan tarafları oldu)
"Linux" dendiği zaman gözümüzde canlandırdığımız işletim sisteminin kimi 
katmanları (örneğin X), Linux'un kendisinden daha eskidir. Güncellenir, 
hataları düzeltilir vb ama genellikle bu parçalar da yeniden yazılmaz.
> 3. Arayüzün birden çok olduğunu (daha doğrusu bir sürü olduğunu) sanıyorum (Çünkü bir sürü isim vs geçiyor ve benim anladığım çoğunun sadece arayüz olduğu).
1. maddede biraz anlattım sanırım. Bunların hepsi, X grafik arayüzünün 
tepesine oturan katmanlar. Birini tercih etmeniz diğerinden bir şeyler 
kullanmanızı, hatta bir diğerine geçivermenizi engellemez. Aynı makinayı 
birden fazla kişi paylaşıyorsa birisi Gnome, diğeri KDE çalıştırabilir. 
Siz, KDE çalıştırırken Gnome'dan sevdiğiniz uygulamaları 
kullanabilirsiniz vb.
> 4. Kernelin güncellenmesi işlemi herhangi bir yolla elimize geçen metin dosyalarının (tabi sıradan metin dosyalarından bahsetmiyorum, .HTML veya .CPP gibi özel metin dosyalarından bahsediyorum) derlenip uygun (gerekli) yerlere yerleştirilmesi şeklinde mi oluyor ?
Hayır. Elinize geçen ikilik (binary) dosyaların çeşitli yerlere 
kopyalanması ve sistemin yeniden başlatılması ile olur.
Eğer isterseniz, metin dosyalarını (yani çekirdeğin kaynak kodlarını) 
gcc'den (derleyici/compiler) geçirerek derleyebilir ve binary 
dosyalarını kendiniz oluşturabilirsiniz.
> 5. Linux sistemler C ağırlıklı mıdır ?
Evet, tıpkı Windows gibi. İşletim sistemleri genelde C dilinde yazılır. 
İşletim sisteminin hangi dilde yazılmış olduğu kullanıcı için önemli 
değildir. O işletim sisteminin üzerinde bulunan derleyici (compiler) 
sizin o işletim sistemi için hangi dilde program yazabileceğinizi 
belirler. Linux üzerinde C, C++, Java, Fortran, Lisp, Pascal, Delphi, ve 
şimdi adını hatırlayamadığım bir sürü dilde yazılım yazabilirsiniz.
> 6. Scripting denilen olay C "programcık"larıyla mı oluyor ?
Hayır. Scripting'den kastedilen farklı bir şey.
5. maddede adını verdiğim program dilleri *derlenir*.
Yani:
Programı yazarsınız.
Derleyici (compiler) dan geçirirsiniz, bu programı binary haline getirir.
Programı çalıştırırsınız.
Bir de "interpreter" (yorumlayıcı) kullanan diller vardır. Örneğin perl. 
Perl başlı başına bir dildir, fakat derlemeden kullanabilirsiniz. Sistem 
"derleme" işlemini yapmaz, perl yorumlayıcısını çalıştırır, o sizin 
"script" (betik) okur, ve makinaya ne yapması gerektiğini söyler.
Derleme işlemi olmadığı için script'ler daha hızlıca yazılabilir. Fakat 
derleme işlemi bir sefer yapılır. Dolayısıyla aynı "script"i 10,000 defa 
çalıştıracaksanız, sistem bunu 10,000 defa yorumlayacak. Halbuki 
derlerseniz, bir defa yorumlama işlemi yapılır, makina diline 
dönüştürülür, ondan sonrasında bu ekstra işlem yapılmaz. Dolayısıyla 
genelde script'ler derlenmiş programlardan daha yavaş çalışır.
Hangi dilin script, hangisinin programlama dili olduğu biraz geniş bir 
mevzuudur. Örneğin perl dilini derleyebilirsiniz de. Dolayısıyla perl'de 
ufak bir script yazıp, bunu deneyip istediğiniz hale getirdikten sonra, 
sık kullanılacaksa bunu derlersiniz, o zaman daha hızlı çalışır.
scripting dendiği zaman genelde kastedilen şey, komut satırında bir kaç 
ufak şeyi yapmak için yazılıvermiş, genelde çeşitli yaygın script (perl, 
bash vb) dillerinden birini kullanan ufak "programcıklardır".
Bunların C programlarından farkı, derlenmeden kullanılabilmesidir. 
Üstelik komut satırına yazdığımız her komut, script'lerin içinden 
kullanılabilir. Buna Linux'da "binary" dosyalar ve metin dosyaları 
arasında fark güdülmediğini de ekleyince, kullanıcıya normal uygulama 
gibi gelen çeşitli script'ler yazılabilir. Linux'un kuvvetlerinden 
birisi bu konuda çok esnek olabilmesidir.
Cevaplar biraz uzun oldu, kusura bakmayın.
Esen kalın,
Deniz
-----------------------------------------------------------------------
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.
-----------------------------------------------------------------------
