Linux neden farklı donanım platformlarına göre bu kadar iyi ölçeklenir?


22

Linux neden masaüstü bilgisayarları, dizüstü bilgisayarları, sunucuları, gömülü aygıtları, cep telefonları vb. Birçok farklı makinede iyi çalışıyor? Genelde sistem açık olduğu için, herhangi bir kısmı farklı ortamlarda çalışmak üzere değiştirilebilir mi? Yoksa Linux çekirdeğinin ve / veya sistemin bu işletim sisteminin bu kadar geniş bir platform yelpazesinde çalışmasını kolaylaştıran başka özellikleri var mı?


7
Bence cevabın bir kısmına zaten sahipsiniz - açıklık, farklı insan gruplarının veya işletmelerin kendi ihtiyaçlarına göre uyarlamalarını kolaylaştırıyor. Çekirdek monolitik olduğu için eleştirildiği için, başlangıç ​​tasarımının herhangi bir şekilde ölçeklenebilirlik için kasten optimize edildiğinden emin değilim. Linux'un çekirdeğinde diğer işletim sistemlerinden daha fazla sayıda insanın çalıştığını tahmin ediyorum - ve belki de bu çekirdek bakımcıları kodu açık arayüzlü parçalara bölmeye özen göstermeye zorladı? Diğer taraftan, BSD'nin bazı değişkenleri açık bir hedef olarak taşınabilirliğe sahiptir.
RedGrittyBrick

@Red: Mikro çekirdek yerine monolitik bir çekirdek olduğu için eleştirildi - bunun tasarımla bir ilgisi yok. Çekirdeğin kullanıcı alanında ne kadar çalıştığını ve çekirdek alanında ne kadar çalıştığını yapmak zorundadır. Windows NT'nin çekirdeği (örneğin) çok modülerdir, ancak hala teknik olarak yekparedir çünkü çoğu hizmet (yani dosya sistemi) kullanıcı modundan ziyade çekirdek modunda çalışır.
Billy ONeal

@Billy: Windows NT teknik olarak hibrit bir çekirdektir. Microsoft’un mesaj geçişini kullanarak alt sistemleri koruduğuna ve parçaları istediğiniz gibi kullanıcı alanına taşıyabileceğine inanıyorum. Bunu Vista'daki grafik sistemiyle yaptılar: şimdi NT 4.0'dan beri çekirdek-alan olduktan sonra kullanıcı alanında.
Zan Lynx,

2
@Zan: "Hibrit çekirdek" statüsüne itiraz edildiği izlenimini edindim . Bu yüzden "monolitik" dedim. NT, kütüphane esque parçalarına ayrılsa bile kesinlikle çok sayıda monolitik özelliğe sahiptir.
Billy ONeal

@Billy: Bana öyle geliyor ki, eğer çekirdeğiniz bir kaç seçeneği değiştirip yeniden inşa ederek mikro çekirdeğe dönüştürülebilirse, o zaman en sık kullanılan ikili yapılar her şeyi çekirdek adres alanına yerleştirse bile, monolitikten başka bir şeydir.
Zan Lynx

Yanıtlar:


31

Açıklığın kesinlikle bunun bir parçası olmasına rağmen, bence ana faktör Linus Torvald'ın, büyükten küçüğe tüm işlerin, Linux çekirdeğinde ana hat Linux çekirdeğinde bir yeri olduğu konusundaki ısrarının devam ettiğini düşünüyorum. Bir noktada bir çizgi çizmeye ve "tamam, bu süper süper bilgisayar donanımı için bir çatala ihtiyacımız var" demeye karar vermiş olsaydı, o zaman tamamen ayrı yüksek kaliteli ve küçük sistem varyantları gelişebilirdi. Olduğu gibi, bunun yerine insanlar tümünün nispeten iyi bir şekilde bir arada oynamasını sağlamak için daha çok uğraş verdiler.

Ve bir tarafın diğerinin aleyhine açtığı kirletmeler, genellikle, tekrar girmelerine izin verilmez; insanları, sorunları daha zor fakat daha doğru bir şekilde çözmeye zorlar; Bir zamanlar neye ihtiyaç duyulursa, çamur tarihsel bir dipnot haline gelir.

Birkaç yıl önce yapılan bir röportajdan :

S: Linux çok yönlü bir sistemdir. PC, devasa sunucular, cep telefonları ve diğer cihazlardan on veya daha fazlasını sağlar. Ayrıcalıklı konumunuzdan, Linux'un en yüksek potansiyeli ifade edeceği sektör hangi sektör olacaktır?

Y: Bence Linux'un asıl gücü tam olarak bir niş değil. Herkes birlikte oynamaya başlar ve farklı insanlar ve farklı şirketler onlar için neyin önemli olduğu konusunda tamamen farklı motivasyonlara ve inançlara sahiptir. Bu yüzden belirli bir sektörle ilgilenmiyorum bile.


18
Küçük sistem ve devasa sistem tanımları sürekli değişiyor, bu yüzden iyi tortular kaçınıldı. Çok çekirdekli akıllı telefonlar artık yıllar önce yapılan tüm süper bilgisayar çalışmalarından faydalanabilir.
Zan Lynx

4

Linux birçok farklı donanıma göre ölçeklenir, çünkü:

  • çok yapılandırılabilir
  • kaynak serbestçe kullanılabilir durumdadır ve mevcut bir C derleyicisi olan herhangi bir CPU için oluşturulabilir
  • gömülü cihazlarda ve cep telefonlarında işlemciler ilk Linux geliştirmeye devam edilen orijinal 386 makinelere kıyasla en az aynı seviyede veya daha fazla güce sahipler ve güç kazanmaya devam ediyorlar
  • Ağ, bir tür disk veya disk benzeri aygıt ve bir seri bağlantı noktası dışında başka hiçbir şeyle uyumlu değil

Eh, birinin hedef platform için minimum miktarda bootstrap kodu ve C çalışma zamanı yazması gerekir. Oh, ve sanal belleği de desteklemesi gerekiyor. Ama başka türlü doğrudur :)
Billy ONeal 18:11

1
@Billy Nommu sistemlerine bağlantı noktaları vardır: uClinux, uClinux / ARM ve MontaVista Linux.
Tobu,

@ Tobu: Hmm .. Nasıl olabileceğini anlamıyorum. Çoklu işlemler için bütün "Unix Felsefesi", bir şeyin forkmümkün olduğu ve forksanal olmayan bir bellek sisteminde makul bir şekilde verimli bir şekilde yapılamayacağı varsayımına sahiptir . Belirtilen bağlantı noktaları muhtemelen Linux çekirdeğinin parçalarını kullanırken ve bazı Linux yazılımlarını çalıştırabilirken, çoğunlukla bu bağlantı noktalarının maruz kaldığı API'lerin tipik Linux çekirdeğinden farklı olduğu görülüyor. (Örnek: bellek eşlemesi - ki bu açıkça sanal bellek gerektirir)
Billy ONeal

linuxjournal.com/article/7814 : uCLinux'un fork () özelliğini desteklemediğini, ancak vfork () adlı bir engelleme varyantının, uCLinux altındaki uygulamaların vfork veya thread kullanmak için yeniden yazılması gerektiğini söylüyor.
LawrenceC

4

Linux Çekirdeği iyi ölçeklenir, çünkü budur. Çekirdek çekirdek nispeten küçüktür ve yapması gerekeni yapar. Aygıt sürücüleri isteğe bağlıdır ve daha küçük sistemler için çekirdeğin dışında bırakılabilir. Minimum çekirdek gereksinimlerinin ötesinde, çoğu işlev isteğe bağlı özellikler olarak uygulanır.

Çoğu çekirdeğin yanında bulunan config dosyasına bakın. Hangi sürücülerin desteklendiğinin yanı sıra açık olan tüm özellikleri listeler.

Sürücüler çekirdeğe gömülü veya yüklenebilir modüller halinde desteklenir. Bu, bir çekirdeğin üzerinde çalıştığı donanıma dinamik olarak yapılandırılmasını sağlar. Bu, birçok dağıtım tarafından kullanılan yaklaşımdır.

Derleme araçlarına sahip olmaktan başka, çekirdeği yeni donanım için değiştirmek nispeten kolaydır. Yeni bir işlemci için, sadece ilgili kodun mevcut işlevsellikte değişiklikler olarak uygulanması gerekir. Yeni cihazlar sadece ilgili kancalara sahip yeni bir sürücü gerektirir. Yeni dosya sistemleri de benzer şekilde önemsiz değişikliklerdir.

Kod tabanı, bu esnekliği harici çatal olmadan da korumak için iyi bir şekilde korunmuştur. Koşullu derleme, olabildiğince az tutulan çok esnek bir çekirdeği çalıştırır.


1

Bu cevabı yedeklemek için ayrıntılı teknik uzmanlığa sahip değilim, ancak deneyimlerim Linux'un sık kullandığım diğer işletim sistemlerine (özellikle Windows) kıyasla daha iyi ölçeklendiğini gösteriyor. Bu yüzden belki de soru, neden Windows’un Linux kadar iyi ölçeklemediğidir.

Soruyu bu şekilde hala kullanmaya devam ediyorsanız, piyasa güçlerinin Microsoft'u en son ve en yetenekli donanıma yönelik özellikler ve işlevler eklemeye teşvik etmesini öneririm, çünkü özellikle son kullanıcılar yeni sistemler satın aldıklarında işletim sisteminin daha fazla kopyasını satarlar. . Bu nedenle, herhangi bir zamanda, Windows'un en son sürümünün daha eski ve daha az yetenekli donanımlarda düşük performans gösterdiğini fark ediyorum.

Sorunu aşarsa beni affet.


Adam çekirdek hakkında konuşurken, işletim sisteminden bahsediyorsunuz. Peki, Windows çekirdeğinin şişirilmiş olup olmadığından emin değilseniz.
tshepang

@Tshepang: Adil olmak gerekirse, sorular "Linux çekirdeği ve / veya sistemi" hakkında soruyor. Windows 7 ve Windows Phone 7'de bir çekirdek var mı? Okuduğum küçük, çekirdeklerinin Ubuntu Sunucusu ve Android çekirdeklerinden daha az ortak kodları olabileceğini öne sürüyor.
RedGrittyBrick

Teşekkürler, ama soru gerçekten Linux'du, başka bir işletim sistemi değil. Orada birçok kişi var: en.wikipedia.org/wiki/List_of_operating_systems
Justin Ethier

NT çekirdeği aslında çok verimli, ama onu çevreleyen çok sayıda katman var
LawrenceC
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.