1 puan yazan GN⁺ 2025-01-26 | 1 yorum | WhatsApp'ta paylaş
  • Snowdrop OS, IBM PC mimarisi için 16 bit gerçek modda çalışan bir işletim sistemi; önyüklemeden uygulama çalıştırmaya kadar her şey yalnızca x86 assembly diliyle doğrudan uygulanmış bir homebrew OS'tir
  • Dağıtım, 1.44MB disket imajı ve CD-ROM imajı olarak sunulur; önyükleyici, kernel, kabuk, yardımcı araçlar, test uygulamaları ve Tetris klonu aSMtris'i birlikte içerir
  • 512 baytlık önyükleyici kernel'i bulup belleğe yükler; kernel ise uygulamalar için interrupt vector'leri ayarladıktan sonra başlangıç uygulamasını yükler
  • Dosya yöneticisi, metin düzenleyici, grafik uygulamaları, BASIC interpreter ve x86 assembler ile debugger dahil olduğundan, geliştirme ve deney yapmak işletim sisteminin içinde mümkündür
  • Kaynak kodu kullanım ve değiştirme kısıtlaması olmadan açık olduğundan, işletim sistemlerinin düşük seviyeli çalışma biçimini doğrudan takip etmek isteyen programcılar için bir referans niteliğindedir

Önyüklemeden uygulamaya kadar doğrudan uygulanmış yapı

  • Snowdrop OS, PC'ye güç verildiğinde neler olduğu, önyüklenebilir bir diskin ve işletim sisteminin iç yapısının nasıl çalıştığına duyulan meraktan doğmuş bir projedir
  • Hedef, IBM PC mimarisi için 16 bit gerçek modda çalışan bir OS'tir ve baştan sona yalnızca x86 assembly diliyle yazılmıştır
  • Dağıtım imajı iki biçimde sunulur
    • Disket 1.44MB imajı
    • CD-ROM imajı
  • İmajların içinde doğrudan yazılmış temel bileşenler yer alır
    • Kernel'i belleğe yükleyen önyükleyici
    • Kullanıcı uygulamaları için interrupt vector'leri ayarladıktan sonra başlangıç uygulamasını yükleyen kernel
    • Kabuk, yardımcı araçlar, test uygulamaları ve Tetris klonu aSMtris gibi kullanıcı uygulamaları
  • Önyükleme sırasında sabit disk algılanırsa kurulum istenir ve Snowdrop OS sabit diske kurulabilir
  • Dahil edilen uygulama ve araçlar; dosya yöneticisi, metin düzenleyici, grafik uygulamaları, BASIC interpreter, x86 assembler ve x86 debugger'a kadar uzanır
  • Snowdrop OS ile uygulamalarının kaynak kodu, kullanım ve değiştirme konusunda herhangi bir kısıtlama olmadan yayımlanmıştır

İncelenmeye değer kaynak kodu bölümleri

  • Boot loader: 512 bayta sığar ve kernel'i bulup yükler
  • kernel: uygulamalara temel servisler ve soyutlamalar sağlar
  • Graphics and GUI framework: grafik ve fare tabanlı uygulamalar oluşturmak için temel sağlar
  • x86 assembler: Snowdrop OS içinde doğrudan düşük seviyeli uygulamalar geliştirmeyi mümkün kılar
  • BASIC interpreter: yüksek seviyeli uygulamaları hızlıca oluşturmak için bir araçtır
  • x86 debugger: assembler ile birlikte kullanılabilir
  • Dynamic data structure libraries: bağlı listeler, ağaçlar ve BST gibi dinamik veri yapılarıyla çalışmayı destekler
  • All applications: oyunlar, metin düzenleyiciler, dosya yöneticileri, araçlar ve test uygulamalarını içerir

Sürümlere göre eklenen özellikler

  • Sürüm geçmişi, v1'deki tek görevli yapı, kabuk ve aSMtris ile başlayıp zaman içinde özelliklerin sürekli eklendiği bir akıştır
    • v2: PS/2 fare sürücüsü ve fare test uygulaması
    • v3: temel çoklu görev ve sanal ekran desteği
    • v4: FAT12 yazma/silme sürücüsü, dosya yöneticisi, metin düzenleyici
    • v6: seri port tabanlı çok oyunculu Snake oyunu
    • v16: GUI framework
    • v18: BASIC interpreter ve linker
    • v19: sabit disk kurulumu
    • v22: x86 assembler, çoklu disk desteği, dosya görüntüleme yardımcı aracı
    • v23: x86 debugger
    • v25: dinamik bellek ve veri yapıları
    • v28: yüksek çözünürlüklü GUI, çizim uygulaması, masaüstü uygulaması
    • v31: runtime library ve BASIC interpreter RTL

1 yorum

 
GN⁺ 2025-01-26
Hacker News yorumları
  • 90'ların ortasında benzer şekilde 32 bit hobi amaçlı bir GUI OS yapmıştım; bu kitap gerçekten mutlaka okunması gerekenlerdendi
    https://www.amazon.com/Developing-32-Bit-Operating-System-Cd...

    • Ücretsiz okunabiliyor
      https://web.archive.org/web/20140704223135/https://www.ipdat...
      Sensory Publishing hakları aldıktan sonra başlığı değiştirip 1.000 adet daha bastı, ancak şu anda yaklaşık 200 adet kaldı ve artık satılmıyor. Artık bu kitap public domain ve kalan kitapların Great Alexandria Library için saklanacağı söyleniyor
  • Bu tür projeler ilginizi çekiyorsa MenuetOS ve KolibriOS'a da bakmaya değer. KolibriOS, uzun zaman önce MenuetOS'tan ayrılmış bir fork
    MenuetOS'un SMP destekleyen bir x64 sürümü de var; fakat bunun kaynak kodu kapalı

    • Assembly öğrenmek istiyorum ama Coursera'da tamamen yeni başlayanlara uygun bir ders bulamadım. Java deneyimim var ve donanıma daha yaklaşmak için C/C++ dersi alıyorum
    • 2025'te böyle bir şeyi neden kapalı kaynak yaptıklarını anlamıyorum
      Hobi OS dışında, çok çekirdekli x64 makinelerde bunu gerçekten kim kullanır ki?
    • Daha da çılgın bir şey isterseniz TempleOS da var
  • Kullanıcı bakış açısından ve OS hacker'ı bakış açısından, günümüzde OS tasarımındaki en yeni havalı fikirlerin neler olduğunu merak ediyorum

    • Sessizce yayımlamış durumdayım ama yeni bir çekirdek tasarımı üzerinde çalışıyorum. Bu 12. ve son yeniden yazım; yaklaşık 1 yıldır geliştiriliyor
      https://github.com/oro-os/kernel
      Kullanıcıları da capability'leri de olmayan bir microkernel tasarımı; erişim denetimini çekirdeğin varlık hiyerarşisi üzerinden zorunlu kılıyor. Birden çok güvenlik seviyesine sahip paylaşımlı bellek portları ana IPC yöntemi ve çekirdek seviyesinde tipli
      Şu anda çekirdeğin kullanışlılığını doğrulamanın son aşamalarındayım. Tasarımı kanıtlayabilirsem daha resmî bir yazı yazmayı planlıyorum. Kafamdaki bir proje olarak 8 yıl, editör içinde ise yaklaşık 4 yıl oldu
    • Plan 9'ın havalı fikirleri büyük ölçüde hâlâ aşılmış ya da düzgün biçimde yeniden uygulanmış değil
      https://doc.cat-v.org/plan_9/3rd_edition/rio/rio_slides.pdf
    • Fuchsia'da oldukça cesur fikirler var. Microkernel, capability, sıra dışı bir uygulama yükleme sistemi gibi şeyler içeriyor ve uygulamaları web sitelerine daha yakın hâle getirmeye çalışıyor gibi görünüyor
      https://rtic.rs/ gömülü RTOS benzeri alanda epey ilginç bir fikir
      Dürüst olmak gerekirse Plan 9'da Linux'un hâlâ çok ilerisinde olan özellikler de var. Örneğin https://9p.io/sys/doc/lexnames.html
    • Genode [1], bir framework olması açısından OS tasarımına yaklaşımı ilginç. Ancak ne kadar assembly içerdiğini bilmiyorum
      [1] https://genode.org
    • Geniş tutulmuş iki uç noktayı düşününce, bence en iyi cevap Redox OS
      https://redox-os.org/
  • Benzer bağlamda, robotik için yüksek performanslı RTOS tarafında ne gibi ilerlemeler olduğunu merak ediyorum. Bu alan görece daha az ilgi görüyor gibi
    ROS/ROS2 bir işletim sistemi değil ve çoğu da yüksek performanslı yazılım denebilecek şeyler değil

    • x86 ve RTOS, SMM ve karmaşık önbellekler gibi etkenler yüzünden pek iyi uyuşmuyor. Yüksek performanslı bir işiniz varsa, muhtemelen ayrı bir gömülü MCU'yu ya da birkaç tanesini bağlayıp kontrol etmeyi tercih edersiniz
      Gömülü tarafta FreeRTOS, Zephyr, ThreadX gibi pek çok OS var; Nvidia DriveOS gibi çeşitli tescilli çözümler de mevcut
      Ancak gömülü OS'ler, Linux gibi genel amaçlı OS'lere kıyasla oldukça sınırlı. Görev zamanlayıcıları var ama süreçler, dosya sistemi, dinamik dosya yükleme, binary araçlar gibi şeyler çoğu zaman yok ya da isteğe bağlı
    • Ciddi iş yapanlar QNX veya VxWorks kullanıyor gibi görünüyor. Ne yazık ki çoğu robotik projesi o kadar ciddi değil ve Ubuntu çalıştırıyor
    • Genel olarak anlaşılan anlamda bir RTOS değil ama RTIC fena değil. Bildiğim kadarıyla başlangıçta robotik için geliştirilmişti
      https://rtic.rs
  • İlgili yazılar olarak şunlar var. Başka var mı?
    Homebrew an OS from Scratch? Snowdrop Shows How It's Done - https://news.ycombinator.com/item?id=39005640 - Ocak 2024 (1 yorum)
    Snowdrop OS – a homebrew operating system from scratch, in assembly language - https://news.ycombinator.com/item?id=28090574 - Ağustos 2021 (3 yorum)

  • Tam olarak söylemek gerekirse x86 assembly

    • Daha da doğru söylemek gerekirse 16 bit real mode x86 assembly
  • Yapılan araç ve uygulama koleksiyonu etkileyici. Buna rağmen self-hosting cazibesine kapılmamış gibi görünüyor
    Assembler'ı nasm seviyesine getirmek için daha fazla çalışma gerekebilir ya da tüm kaynak kodunu Snowdrop ASM'ye daha yakın hâle getirmek gerekebilir

  • V32 için bir BASIC derleyicisi de olsa güzel olurdu
    Özellik isteği açılabilir gibi

  • Bunun esp32'ye port edilmiş hâlini görmek isterdim. Örneğin ttgo vga32 kartı gibi bir yerde çalışacak şekilde
    SD kart, VGA, ses, klavye/fare, WiFi, Bluetooth olan temel bir GUI ve shell tarzı OS güzel olurdu. Modern bir Commodore 64 hissiyle; WiFi üzerinden yazdırma yalnızca metin olsa bile olur, lynx tarzı tarayıcı, e-posta, IRC, gopher gibi şeyler de olsa güzel olurdu

  • Snowdrop OS'nin build gereksinimleri etkileyici
    Works on: Windows XP 32bit, Windows 98, Windows 95