Assembly भाषा में शुरुआत से विकसित होमब्रू ऑपरेटिंग सिस्टम Snowdrop OS
(sebastianmihai.com)- Snowdrop OS IBM PC आर्किटेक्चर के लिए 16-bit real mode ऑपरेटिंग सिस्टम है, एक होमब्रू OS जिसे booting से लेकर app execution तक सिर्फ x86 assembly language में सीधे implement किया गया है
- distribution 1.44MB floppy image और CD-ROM image के रूप में उपलब्ध है, जिसमें boot loader, kernel, shell, utilities, test apps और Tetris clone aSMtris साथ में शामिल हैं
- 512-byte boot loader kernel को ढूंढकर memory में load करता है, और kernel apps के लिए interrupt vectors set करने के बाद startup app load करता है
- file manager, text editor, graphics apps, BASIC interpreter, x86 assembler और debugger तक शामिल हैं, जिससे OS के अंदर ही development और experiments किए जा सकते हैं
- source code बिना use और modification restrictions के public है, इसलिए operating system के low-level behavior को खुद follow करना चाहने वाले programmers के लिए यह reference material बनता है
Booting से app तक सीधे implement किया गया structure
- Snowdrop OS ऐसा project है जिसकी शुरुआत इस curiosity से हुई कि PC power on करने पर क्या होता है, और bootable disk व operating system internals कैसे काम करते हैं
- target IBM PC architecture के लिए 16-bit real mode OS है, और इसे शुरुआत से सिर्फ x86 assembly language में लिखा गया है
- distribution images दो forms में उपलब्ध हैं
- floppy disk 1.44MB image
- CD-ROM image
- image में खुद लिखे गए core components साथ में शामिल हैं
- kernel को memory में load करने वाला boot loader
- user apps के लिए interrupt vectors set करने के बाद startup app load करने वाला kernel
- shell, utilities, test apps, और Tetris clone aSMtris जैसे user apps
- booting के दौरान hard disk detect होने पर यह install करना है या नहीं पूछता है, और Snowdrop OS को hard disk पर install किया जा सकता है
- included apps और tools file manager, text editor, graphics applications, BASIC interpreter, x86 assembler और x86 debugger तक विस्तृत हैं
- Snowdrop OS और apps का source code use और modification पर बिना restrictions के public है
पढ़ने लायक source code areas
- Boot loader: 512 bytes में समाता है और kernel को ढूंढकर load करता है
- kernel: applications को basic services और abstractions provide करता है
- Graphics and GUI framework: graphics और mouse-based applications बनाने का आधार है
- x86 assembler: Snowdrop OS के अंदर low-level applications सीधे बनाने देता है
- BASIC interpreter: high-level applications जल्दी बनाने का tool है
- x86 debugger: assembler के साथ use किया जा सकता है
- Dynamic data structure libraries: linked list, tree, BST जैसी dynamic data structures के साथ काम करने में support करती हैं
- All applications: games, text editor, file manager, tools और test applications शामिल हैं
Versions के हिसाब से बढ़ी capabilities
- version history v1 के single task, shell और aSMtris से शुरू होकर लगातार features जोड़ने की दिशा दिखाती है
- v2: PS/2 mouse driver और mouse test app
- v3: basic multitasking और virtual display support
- v4: FAT12 write/delete driver, file manager, text editor
- v6: serial port-based multiplayer Snake game
- v16: GUI framework
- v18: BASIC interpreter और linker
- v19: hard disk installation
- v22: x86 assembler, multi-disk support, file viewing utility
- v23: x86 debugger
- v25: dynamic memory और data structures
- v28: high-resolution GUI, drawing app, desktop app
- v31: runtime library और BASIC interpreter RTL
1 टिप्पणियां
Hacker News रायें
90 के दशक के मध्य में मैंने भी इसी तरह का 32-bit hobby GUI OS बनाया था, और यह किताब सचमुच must-read थी
https://www.amazon.com/Developing-32-Bit-Operating-System-Cd...
https://web.archive.org/web/20140704223135/https://www.ipdat...
Sensory Publishing ने अधिकार हासिल करने के बाद शीर्षक बदला और 1,000 अतिरिक्त प्रतियां छापीं, लेकिन अब सिर्फ करीब 200 प्रतियां बची हैं और वे अब बेची नहीं जातीं। कहा जाता है कि यह किताब अब public domain में है और बची हुई किताबें Great Alexandria Library के लिए सुरक्षित रखी जाएंगी
अगर ऐसे projects में रुचि है तो MenuetOS और KolibriOS भी देखने लायक हैं। KolibriOS बहुत पहले MenuetOS से अलग हुआ fork है
MenuetOS का एक x64 version भी है जो SMP support करता है, लेकिन वह closed source है
hobby OS के अलावा, असल में multi-core x64 machine पर इसे कौन इस्तेमाल करेगा, ऐसा लगता है
user के नजरिए और OS hacker के नजरिए से, आजकल OS design में सबसे नए और शानदार ideas कौन से हैं, यह जानने की उत्सुकता है
https://github.com/oro-os/kernel
यह एक microkernel design है जिसमें users भी नहीं हैं और capabilities भी नहीं हैं, और kernel की entity hierarchy के जरिए access control enforce करता है। कई safety levels वाले shared memory ports मुख्य IPC mechanism हैं, और kernel level पर typed हैं
फिलहाल kernel utility validate करने के अंतिम चरण में है। अगर design साबित कर पाया तो इस पर ज्यादा formal तरीके से लिखूंगा। दिमाग में project के रूप में 8 साल, और editor के अंदर करीब 4 साल हो गए हैं
https://doc.cat-v.org/plan_9/3rd_edition/rio/rio_slides.pdf
https://rtic.rs/ embedded RTOS जैसी space में काफी दिलचस्प idea है
ईमानदारी से कहें तो Plan 9 के कुछ features अब भी Linux से काफी आगे हैं। उदाहरण के लिए https://9p.io/sys/doc/lexnames.html
[1] https://genode.org
https://redox-os.org/
इसी संदर्भ में, robotics के लिए high-performance RTOS में क्या प्रगति हुई है, यह जानने की उत्सुकता है। इस क्षेत्र पर अपेक्षाकृत कम ध्यान लगता है
ROS/ROS2 operating system नहीं हैं, और उनमें से ज्यादातर को high-performance software कहने लायक भी नहीं माना जाएगा
embedded side में FreeRTOS, Zephyr, ThreadX जैसे कई OS हैं, और Nvidia DriveOS जैसे कई proprietary solutions भी हैं
लेकिन embedded OS, Linux जैसे general OS की तुलना में काफी limited होते हैं। task scheduler होता है, लेकिन processes, filesystem, dynamic file loading, binary tools जैसी चीजें अक्सर नहीं होतीं या optional होती हैं
https://rtic.rs
संबंधित posts के रूप में ये हैं। क्या और भी हैं?
Homebrew an OS from Scratch? Snowdrop Shows How It's Done - https://news.ycombinator.com/item?id=39005640 - Jan 2024 (1 comment)
Snowdrop OS – a homebrew operating system from scratch, in assembly language - https://news.ycombinator.com/item?id=28090574 - Aug 2021 (3 comments)
ठीक-ठीक कहें तो यह x86 assembly है
बनाए गए tools और apps का collection प्रभावशाली है। फिर भी लगता है कि self-hosting के आकर्षण में नहीं फंसे
assembler को nasm के स्तर तक लाने के लिए और काम करना पड़ेगा, या पूरे source code को Snowdrop ASM के ज्यादा करीब लाना होगा
V32, BASIC compiler भी हो तो अच्छा होगा
शायद feature request की जा सकती है
इसे esp32 पर port होते देखना चाहूंगा। जैसे ttgo vga32 board पर चलाने जैसा
SD card, VGA, sound, keyboard/mouse, WiFi, Bluetooth के साथ basic GUI और shell-type OS अच्छा रहेगा। आधुनिक Commodore 64 जैसा feel, जिसमें WiFi printing सिर्फ text-only हो तो भी चलेगा, और lynx-style browser, email, IRC, gopher जैसी चीजें भी हों
Snowdrop OS की build requirements प्रभावशाली हैं
Works on: Windows XP 32bit, Windows 98, Windows 95