İçeriğe atla

BareMetal

Vikipedi, özgür ansiklopedi
06.59, 4 Kasım 2024 tarihinde 81.212.99.73 (mesaj) tarafından oluşturulmuş 34169414 numaralı sürüm (İngilizce sayfadan çevrildi.)
(fark) ← Önceki hali | Güncel sürüm (fark) | Sonraki hali → (fark)
BareMetal
Geliştirici(ler)Return Infinity
Son kararlı sürümü1.0.0 (13 Kasım 2017 (7 yıl önce) (2017-11-13)[1])
Kaynak türüAçık-kaynak
LisansBSD Lisansı[2]
Çekirdek türüExokernel, SASOS
Platform desteğix86-64
Programlama diliAssembly
Kullanıcı alanıBilinmiyor
Kullanıcı arayüzüKomut satırı
Web sitesireturninfinity.com
Pazarlama hedefiHPCler, HTC, Bulut bilişim
Dil sayısıİngilizce

BareMetal, Return Infinity tarafından oluşturulan exokernel tabanlı tek adres alanlı işletim sistemidir.

"Just enough operating system" (JeOS - "Yeterince işletim sistemi") yaklaşımıyla[3] minimum ayak izi[4][5] ile yüksek performanslı bilgi işlem elde etmek için Assembly dilinde yazılmıştır. İşletim sistemi, hafif çekirdek (LWK - lightweight kernel) olarak tasarlanması nedeniyle öncelikle bulut bilişim veya HPCler için sanallaştırılmış ortamlarını hedeflemektedir. Bir unikernel olarak kullanılabilir.

Assembly ile yazılmış başka bir işletim sistemi olan MikeOS'tan[2] esinlenilmiştir ve C veya C++ ile yazılmamış veya Unix benzeri çekirdeklere dayanmayan yeni bir işletim sistemi örneğidir.[6]

Genel bakış

Donanım gereksinimleri

  • AMD/Intel tabanlı 64-bit bilgisayar
  • Memory: 4 MB (her ek çekirdek için 2 MB ilave)
  • Hard Disk: 32 MB[7]

BareMetal üzerinde çoklu görev modern işletim sistemleri için alışılmadık bir durumdur. BareMetal, tüm CPU çekirdeklerinin yokladığı dahili bir çalışma kuyruğu kullanır. İş kuyruğuna eklenen bir görev, sistemdeki herhangi bir CPU çekirdeği tarafından işlenir ve tamamlanana kadar yürütülür, bu da bağlam değiştirme ek yüküne neden olmaz.[8]

Programlama

Belgelenmiş bir API mevcuttur[9] ancak, felsefesine uygun olarak, işletim sistemi sistem çağrıları için giriş noktalarını zorlamaz (örneğin: çağrı kapıları veya diğer güvenlik mekanizmaları yoktur).

BareMetal işletim sistemi, en son kodu almak, gerekli değişiklikleri yapmak ve ardından Newlib C standart kütüphanesini[10] kullanarak C kodunu derlemek için bir derleme komut dosyasına (build script) sahiptir.[11]

Ring 0'da çalışmak için çoğunlukla eksiksiz bir C++11 Standart Kütüphanesi tasarlanmış ve geliştirilmiştir.[12] Bu kütüphanenin temel amacı, kütüphane düzeyinde, dikkatlice tasarlanmış sınıfların yardımıyla klasik işletim sistemlerinde kullanılan donanım bellek korumasına bir alternatif sağlamaktır.[13]

Kasım 2014'te programlara, BareMetal işletim sistemi için Rust programları yazma becerisini gösteren bir Rust programı gösterimi eklenmiştir.[14]

TCP/IP yığını

Bir TCP/IP yığını, 1 numaralı özellik isteğiydi.[15] Ekim 2014'te lwIP'in C dilinde yazılmış bir portu duyuruldu.[16]

minIP,[17] ANSI C'de basit bir statik web sayfası sunmak için yeterli işlevleri sağlayabilen minimalist bir IP yığını, gelecekte planlanan bir x86-64 assembly yeniden yazımına hazırlık olarak temelleri öğrenmek için bir kavram kanıtı olarak geliştirilmektedir.

Kaynakça

  1. ^ Seyler, Ian. "kernel.asm". BareMetal OS GitHub repository. Erişim tarihi: 24 Mayıs 2017. 
  2. ^ a b Voorsanger, Conrad (2 Haziran 2011). "Interview With Baremetal OS' Ian Seyler". OSNews. Erişim tarihi: 26 Mayıs 2014. 
  3. ^ Seyler, Ian. "Return Infinity (home page), The BareMetal advantage". Return Infinity. Erişim tarihi: 2 Şubat 2015. 
  4. ^ Adams, David (14 Temmuz 2010). "BareMetal OS". OSNews. Erişim tarihi: 26 Mayıs 2014. 
  5. ^ Benchoff, Brian (27 Mayıs 2011). "64-bit OS written entirely in assembly". Hack A Day. Erişim tarihi: 26 Mayıs 2014. 
  6. ^ Smith, Jesse (19 Temmuz 2010). "DistroWatch Weekly, Issue 363". DistroWatch. Erişim tarihi: 26 Mayıs 2014. 
  7. ^ "BareMetal OS Requirements". Return Infinity (archived copy at Wayback Machine). 6 Eylül 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 6 Eylül 2014. 
  8. ^ "BareMetal OS Queue". Erişim tarihi: 28 Nisan 2015. 
  9. ^ Seyler, Ian. "API documentation". BareMetal OS GitHub repository. Erişim tarihi: 26 Haziran 2015. 
  10. ^ Seyler, Ian (17 Ocak 2014). "Newlib build script". BeareMetal OS Google Group. Erişim tarihi: 2 Şubat 2015. 
  11. ^ Seyler, Ian. "newlib.sh". Build scripts for BareMetal OS and its related utilities, GitHub repository. Erişim tarihi: 2 Şubat 2015. 
  12. ^ Lodyagin, Sergei (17 Kasım 2013). "Bare C++ library". BeareMetal OS Google Group. Erişim tarihi: 2 Şubat 2015. 
  13. ^ Lodyagin, Sergei. "The Bare C++ library". The Bare C++ library GitHub repository. Erişim tarihi: 2 Şubat 2015. 
  14. ^ Seyler, Ian. "Add Rust example". BareMetal OS GitHub repository (legacy version). Erişim tarihi: 18 Mart 2018. 
  15. ^ Seyler, Ian (22 Ağustos 2013). "TCP/IP". BeareMetal OS Google Group. Erişim tarihi: 2 Şubat 2015. 
  16. ^ Seyler, Ian (31 Ekim 2014). "BareMetal and lwIP". BeareMetal OS Google Group. Erişim tarihi: 2 Şubat 2015. 
  17. ^ Seyler, Ian. "minIP - A minimalist IP stack written in ANSI C". BareMetal OS GitHub repository. Erişim tarihi: 24 Mayıs 2017. 

Dış başlantılar