สิ่งที่คุณต้องทำคือออกแบบระบบปฏิบัติการ แม้ว่าตัวอย่างเช่นคุณตัดสินใจว่าควรเป็นระบบที่เหมือน UNIX แต่ก็ยังมีการตัดสินใจมากมาย คุณต้องการให้มันเป็น UNIX มากแค่ไหน? ส่วนไหนของ UNIX ที่คุณชอบและคุณคิดว่าจำเป็นต้องปรับปรุงอะไรบ้าง
หากคุณไม่ได้ตั้งค่าว่ามันเหมือน UNIX คุณจะต้องตอบคำถามให้มากขึ้น : ควรสร้างรูปต้นไม้หรือพวกมัน "แบน" หรือไม่? คุณต้องการสนับสนุนการสื่อสารระหว่างกระบวนการประเภทใด คุณต้องการที่จะเป็นผู้ใช้หลายคนหรือเพียงแค่มัลติทาสกิ้ง คุณต้องการให้มันเป็นระบบเรียลไทม์หรือไม่? คุณต้องการแยกความแตกต่างระหว่างงานอะไร คุณต้องการให้มันอยู่ในระดับเสาหินเทียบกับไมโครเคอร์เนล? คุณต้องการให้มันสนับสนุนการดำเนินงานแบบกระจาย (ถ้ามี) ในระดับใด
ฉันมักจะให้คำแนะนำกับการศึกษาเคอร์เนลลินุกซ์สำหรับแรงบันดาลใจของคุณ นั่นไม่ใช่สิ่งใดเทียบกับเคอร์เนลลินุกซ์ แต่ข้อเท็จจริงที่ว่าลีนุกซ์มีจุดประสงค์เพื่อการใช้งานจริงไม่ใช่เพื่อการศึกษา มันมีการเพิ่มประสิทธิภาพมากมายแฮ็กที่เข้ากันได้แบบย้อนหลังและอื่น ๆ ซึ่งมีประโยชน์อย่างมากสำหรับการผลิต แต่มีแนวโน้มที่จะเบี่ยงเบนความสนใจมากกว่าให้ความรู้
หากคุณสามารถหาได้หนังสือของไลอ้อน ( ความเห็นของไลออนส์ใน UNIX 6th Editionพร้อมด้วยซอร์สโค้ดโดย John Lions) เป็นจุดเริ่มต้นที่ง่ายกว่ามาก รุ่นที่ 6 UNIX ยังเล็กและเรียบง่ายพอที่จะอ่านและทำความเข้าใจได้อย่างรวดเร็วโดยไม่ต้องใช้ระบบของเล่นขนาดใหญ่
หากคุณวางแผนที่จะกำหนดเป้าหมาย x86 (อย่างน้อยที่สุด) คุณอาจต้องการดูMMURTL V 1.0โดย Richard Burgess สิ่งนี้นำเสนอระบบสำหรับ x86 ที่ใช้ฮาร์ดแวร์ x86 มากขึ้นตามที่ผู้ออกแบบซีพียูตั้งใจไว้ แต่เดิมเป็นสิ่งที่ระบบจริงส่วนใหญ่หลีกเลี่ยงการพกพาไปยัง CPU อื่น ๆ ในขณะที่คุณอาจเดาได้ว่าสิ่งนี้มีแนวโน้มที่จะมุ่งเน้นไปที่จุดสิ้นสุดของฮาร์ดแวร์ สำเนาที่พิมพ์ออกมาดูเหมือนจะมีราคาแพงและหายาก แต่คุณสามารถดาวน์โหลดข้อความและรหัสได้ฟรี
โชคดีที่มีความเป็นไปได้ค่อนข้างน้อยเช่นกัน - การออกแบบและการใช้งานระบบปฏิบัติการโดย Andrew Tanenbaum และ Albert Woodhull