- Linux kernel आज 3.6 करोड़ लाइनों वाला एक विशाल open source प्रोजेक्ट है, लेकिन इसका पहला वर्ज़न 10239 लाइनों का था (comments/blank lines हटाने पर 8670)
- Linux v0.01 अपनी सादगी की वजह से Unix-स्टाइल OS kernel के अंदरूनी हिस्सों को सीखने के लिए एक बेहतरीन शुरुआती बिंदु है
- v0.01 में केवल 66 system calls थे
- फ़ाइल/डायरेक्टरी बनाना, हटाना, लिखना
- chmod, chown, pipe, fork, execve
- Socket कॉन्सेप्ट अभी शामिल नहीं था, इसलिए network support संभव नहीं था
- mount अभी implement नहीं हुआ था
- यह Intel 386 architecture पर hardcode किया गया था (MINIX के लेखक ने इसकी आलोचना की थी)
strcpy को i386 instructions इस्तेमाल करने वाली assembly में लिखा गया था
- केवल PC/AT डिवाइसों को support करता था
- CMOS, PIT(Programmable Interval Timer), ATA(PIO), VGA(टेक्स्ट मोड), Intel 8042 PS2 keyboard (assembly)
- अभी drivers फ़ोल्डर भी नहीं था, और सब कुछ subsystem में hardcode था
- Linus द्वारा मूल रूप से दिया गया नाम "FREAX" Kernel लिखा हुआ comment Makefile में मौजूद है
- फ़ाइलसिस्टम के रूप में केवल MINIX support था (ext को MINIX से प्रेरणा मिली थी)
- scheduler code में एक comment है: "यह हिस्सा हर environment में काम करने वाला काफ़ी अच्छा code है, इसलिए इसे बदलने की कोई वजह नहीं होगी!"
- बेशक, अब इसमें कई सुधार और algorithms जुड़ चुके हैं, इसलिए यह भविष्यवाणी ग़लत साबित हुई
- kernel panic का implementation सिर्फ़ 5 लाइनों का है: "kernel panic: कारण" प्रिंट करो और
for(;;) से सिस्टम रोक दो
- kernel space में
fork(2) कॉल करने वाला हिस्सा मौजूद है
- ऐसा दिखता है, लेकिन असल में उससे पहले
move_to_user_mode() एक trick है
- Linus के पास 8Mb से ज़्यादा RAM वाला कोई सिस्टम नहीं था (उनके पास ऐसा सिस्टम नहीं था, इसलिए टेस्ट नहीं कर पाए; जिसके पास हो, वह ख़ुद आज़माए...)
- आधुनिक toolchain से इसे compile करना मुश्किल है
- GCC में backward compatibility है, लेकिन वह काफ़ी नहीं है
- Linus के पास
-mstring-insns विकल्प वाला अपना GCC था (शायद x86 string instructions support करने वाला option)
2 टिप्पणियां
दिलचस्प है।
Hacker News राय