Assembly diliyle sıfırdan geliştirilen homebrew işletim sistemi Snowdrop OS
(sebastianmihai.com)- 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
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...
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ı
Hobi OS dışında, çok çekirdekli x64 makinelerde bunu gerçekten kim kullanır ki?
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
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
https://doc.cat-v.org/plan_9/3rd_edition/rio/rio_slides.pdf
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
[1] https://genode.org
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
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ı
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
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