16 पॉइंट द्वारा GN⁺ 2023-08-13 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 टिप्पणियां

 
arfwene 2023-10-31

दिलचस्प है।

 
GN⁺ 2023-08-13
Hacker News राय
  • आधुनिक Linux की जटिलता पर चर्चा, और यह सवाल कि क्या Linux v0.01 की code lines की संख्या से 4500 गुना अधिक जटिलता वास्तव में ज़रूरी है।
  • पाठक Linux के हर प्रमुख software module में इस्तेमाल हुई code lines और functionality का graphical analysis देखना चाहते हैं।
  • Linux, SQLite, vim जैसे classic codebase पढ़ने का सुझाव दिया गया, जिन्हें ज़्यादातर एक ही व्यक्ति ने लिखा था और जो बेहद सफल या प्रभावशाली रहे।
  • Linux के 'counter' के काम करने के तरीके की व्याख्या, यह दावा कि अगर कोई task runnable नहीं है तो यह 2 * priority तक exponential तरीके से घटता है।
  • यह रिपोर्ट कि Redhat ने IPO के समय shareholders को 0.01 source code वाला poster भेजा था, और पाठकों को इसे कभी-कभी पढ़ना रोचक लगता है।
  • GCC (GNU Compiler Collection) की backward compatibility पर चर्चा, एक टिप्पणी कि GCC लंबे समय तक अपने ही पुराने versions को compile नहीं कर पाता था।
  • पाठकों को annotated Linux Kernel Source Code की ओर निर्देशित किया गया ताकि वे उसे और गहराई से समझ सकें और पढ़ सकें।
  • यह सुझाव कि Linux जैसे बड़े सफल project के शुरुआती working version को पढ़ना समझने का अच्छा तरीका है, क्योंकि उसमें आमतौर पर बहुत ज़्यादा abstraction/generalization के बिना सिर्फ सबसे महत्वपूर्ण core features होते हैं।
  • कुछ पाठकों ने source code में tabs की जगह spaces इस्तेमाल होने पर ध्यान दिया, और अनुमान लगाया कि Torvalds बाद में tabs के समर्थक बने होंगे।
  • code में comments की गहराई और उनकी आवृत्ति की सराहना की गई, जिससे पाठकों के लिए उसे समझना आसान बनता है, और यह जिज्ञासा भी जताई गई कि क्या कोई इसे compile करने में सफल हुआ है।