SORU
8 Temmuz 2009, ÇARŞAMBA


Ne tür bir C bir işletim sistemi yazılmış?

Bir işletim sistemi gibi bir şey C'de yazılmış olabilir Ama ne kadar ve ne tür bir C mantıklı? Eğer bazı yığın bellek ihtiyacın varsa C, malloc diyorsunuz yani. Ancak, hatta bir işletim sistemi yokvarbir yığın? Biliyorum, malloc kadarıylahafıza işletim sistemini sorarve sonra bir bağlı liste, ikili ağaç, ya da bir şeyler katıyor. Ne bir çağrı yığını? İşletim sistemi tüm bu ayarlama sorumludurşeylerdiğer uygulamalar kullanan, ama nasıl oluyor bu? Veya C açık bir dosya oluşturmak istediğinizde, uygun fonksiyonlarıişletim sistemi sorbu dosya için. Peki Ne çeşit C o görüşmenin diğer tarafında mı? Ya da bir bellek ayırma diğer ucunda?

Ayrıca, ne kadar bir işletim sistemi aslında C ile yazılmış olabilir? Hepsi mi? Ne mimari bağımlı kod dersin? Ne soyutlama--daha yüksek seviyeleri ile ilgili hiç C gibi yüksek seviyeli dilde yazılmış ?

Sadece sırf meraktan soruyorum yani. Şimdi en son linux çekirdeği indiriyorum ama sonsuza kadar süreceğe benziyor. Eğer şifreyi takip edebilme rüzgar miyim emin değilim ya da eğer bir şeyler kaçınılmaz karmaşık bir web yakalanmış olacak Eğer daha önce hiç görmemiştim.

CEVAP
8 Temmuz 2009, ÇARŞAMBA


Mükemmel bir soru. Cevap: standart C kütüphanesi hiçbiri biraz "" C " bir işletim sistemi yazmak için kullanılır. lehçesi mevcuttur Örneğin Linux çekirdeği, standart bellek ayırma fonksiyonları malloc, ücretsiz vb nmalloc. onların kullanımı konusunda özel kısıtlamalar ile çekirdek internel özel bellek ayırma fonksiyonları kmalloc ve kfree ile değiştirilir. İşletim sistemi kendi" Linux çekirdeği kullanmak için ayrılmış, çekirdek, fiziksel bellek sayfaları olmayan ve fiziksel olarak diske alınabilir continguous sık olmalı. "yığın sağlamak gerekir This linux journal article on kmalloc and kfree bkz. Benzer şekilde, işletim sistemi çekirdeği kullanımı, bellek, GCC derleyici özel desteği gerektirir kendi özel çağrı yığını korur.

Ayrıca, ne kadar bir işletim sistemi aslında C ile yazılmış olabilir? Tüm ?

Bildiğim kadarıyla farkındayım, işletim sistemleri, ezici bir çoğunlukla C ile yazılmış Bazı mimarisine özgü özellikleri vardır kodlu çevirici, ama genellikle çok küçük geliştirmek için taşınabilirlik ve sürdürülebilirliği: Linux çekirdeği olan bazı çevirici çalışır ama en aza indirmek için mümkün olduğunca.

Ne mimari bağımlı hakkında kodu? Ne yüksek seviyeleri hakkında soyutlama--hiç olur mu öyle yüksek seviyeli dilde yazılmış, C gibi mi ?

Genellikle çekirdek saf C ile yazılmış olacak, ama bazen daha üst düzey çerçeve ve API yüksek seviyeli bir dilde yazılmış olması. Örneğin, MacOS Kakao çerçeve/API Objective C ile yazılmış, ve Event daha yüksek düzey API, C ile yazılmış . Microsoft'un çok .NET çerçeve C ile yazılmış#, çalışma Zamanı" C karışımı ve çevirici yazılı. "Ortak Dil ile QT widget genellikle Linux üzerinde kullanılan kümesi C ile yazılmış . Tabii ki, bu "işletim sistemi." olarak sayar ne hakkında felsefi sorular tanıtır

Linux çekirdeği kesinlikle bunun için bakmaya değer, söylenmesi gerekir, ancak herkesin okuması için büyük ve korkutucu olduğu sıfırdan.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrew_Huang

    Andrew_Huang

    10 ŞUBAT 2006
  • engineerguy

    engineerguy

    10 Ocak 2010
  • TecNoob

    TecNoob

    15 AĞUSTOS 2013