วิธีสร้างระบบปฏิบัติการคอมพิวเตอร์: 13 ขั้นตอน (พร้อมรูปภาพ)

สารบัญ:

วิธีสร้างระบบปฏิบัติการคอมพิวเตอร์: 13 ขั้นตอน (พร้อมรูปภาพ)
วิธีสร้างระบบปฏิบัติการคอมพิวเตอร์: 13 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: วิธีสร้างระบบปฏิบัติการคอมพิวเตอร์: 13 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: วิธีสร้างระบบปฏิบัติการคอมพิวเตอร์: 13 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: การติดตั้ง MySQL 8 บน Linux (Ubuntu 18.04) 2024, เมษายน
Anonim

บทความวิกิฮาวนี้จะแนะนำวิธีการวางแผนและพัฒนาระบบปฏิบัติการ หากคุณไม่ทราบวิธีเขียนโค้ดในภาษา C หรือ C++ ระบบปฏิบัติการจะจัดการฮาร์ดแวร์คอมพิวเตอร์และจัดหาทรัพยากรที่แอปพลิเคชันจำเป็นต้องใช้ การเขียนระบบปฏิบัติการตั้งแต่เริ่มต้นต้องใช้ความเชี่ยวชาญด้านวิทยาการคอมพิวเตอร์ ภาษาโปรแกรมอย่าง C หรือ C++ การประกอบ และการจัดการโค้ด

ขั้นตอน

ส่วนที่ 1 จาก 2: การเรียนรู้พื้นฐาน

สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 1
สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 1

ขั้นตอนที่ 1 ลงเรียนหลักสูตรวิทยาการคอมพิวเตอร์ขั้นพื้นฐาน

ต่างจากการพัฒนาสำหรับเว็บ การสร้างระบบปฏิบัติการต้องมีความเข้าใจอย่างลึกซึ้งเกี่ยวกับอัลกอริธึม โครงสร้างข้อมูล ฮาร์ดแวร์คอมพิวเตอร์ และการจัดการทรัพยากร ผู้คนได้รับปริญญาในด้านนี้ ดังนั้นอย่าคาดหวังที่จะเขียนระบบปฏิบัติการทั้งหมดหลังจากอ่านบทช่วยสอนออนไลน์! หลักสูตร Intro to Computer Science ของ Harvard เปิดสอนทางออนไลน์ผ่าน EDX โดยไม่มีค่าใช้จ่าย

สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 2
สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 2

ขั้นตอนที่ 2 เรียนรู้ภาษาการเขียนโปรแกรมระดับสูงเช่น Python

เมื่อคุณมีความเข้าใจพื้นฐานที่มั่นคงเกี่ยวกับวิทยาการคอมพิวเตอร์แล้ว ขั้นตอนต่อไปคือการเรียนรู้ C และ/หรือ C++ เช่นเดียวกับการเรียนรู้เกี่ยวกับวิทยาการคอมพิวเตอร์ การเรียนรู้ภาษาไม่ได้เป็นทางเลือก คุณจะไม่สามารถเขียนโค้ดระบบปฏิบัติการได้ หากคุณไม่สามารถเขียนแอปพลิเคชันที่เป็นของแข็งได้

หากคุณเพิ่งเริ่มใช้ C ให้ลองดูหลักสูตร C Programming: Getting Started ของ Dartmouth ซึ่งให้บริการฟรีผ่าน EDX เมื่อคุณเรียนจบหลักสูตรนั้นแล้ว คุณสามารถเรียนหลักสูตรต่อไปในซีรีส์: C Programming: Language Foundations จากนั้น ไปที่หลักสูตรต่อๆ ไป เช่น การเขียนโปรแกรมโมดูลาร์และการจัดการหน่วยความจำ และพอยน์เตอร์ และการจัดการหน่วยความจำ

สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 4
สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 4

ขั้นตอนที่ 3 เรียนรู้ภาษาแอสเซมบลี

ภาษาแอสเซมบลีเป็นภาษาระดับต่ำที่ออกแบบมาเพื่อสื่อสารกับโปรเซสเซอร์ต่างๆ เนื่องจากแอสเซมบลีนั้นแตกต่างกันไปสำหรับโปรเซสเซอร์ประเภทต่างๆ (เช่น ภาษาแอสเซมบลี x86 สำหรับ Intel, AMD, VIA และโปรเซสเซอร์อื่นๆ) คุณจะต้องเรียนรู้เวอร์ชันสำหรับประเภทของโปรเซสเซอร์ที่คุณเข้ารหัส

  • หนังสือโอเพนซอร์ซเล่มนี้ หากอ่านอย่างครบถ้วน จะทำให้คุณมีความเข้าใจที่เพียงพอสำหรับการสร้างระบบปฏิบัติการ
  • Art of Assembly Language เป็นหนังสือเกี่ยวกับการประกอบที่ขอแนะนำทั้งแบบออนไลน์และออฟไลน์
  • คุณควรค้นคว้าเกี่ยวกับประเภทของโปรเซสเซอร์ที่ระบบปฏิบัติการของคุณควรจะทำงานให้มาก คู่มือสำหรับสถาปัตยกรรมโปรเซสเซอร์สามารถพบได้ง่ายโดยใช้การค้นหาโดย Google ("คู่มือ Intel, " "คู่มือ ARM, " เป็นต้น)
สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 5
สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 5

ขั้นตอนที่ 4 ทำแบบฝึกหัดระบบปฏิบัติการให้สมบูรณ์

บทช่วยสอนเกี่ยวกับระบบปฏิบัติการจะแนะนำคุณตลอดขั้นตอนการสร้างระบบปฏิบัติการพื้นฐาน วิธีนี้จะทำให้คุณเคยชินกับกระบวนการนี้ และช่วยให้คุณทราบว่ามีชิ้นส่วนใดที่คุณขาดหายไปหรือไม่ เมื่อคุณเสร็จสิ้นบทช่วยสอนหรือสองบท คุณจะสามารถสร้างระบบปฏิบัติการของคุณเองได้

  • Bare Bones เป็นบทช่วยสอนที่ช่วยให้คุณเขียนเคอร์เนลแบบง่าย 32 บิตตัวแรกของคุณ หลังจากเสร็จสิ้นการกวดวิชา ขั้นตอนต่อไปคือการใช้ Meaty Skeleton เพื่อจัดโครงสร้างระบบปฏิบัติการของคุณเอง
  • Linux from Scratch เป็นหนังสือออนไลน์ที่จะแนะนำคุณเกี่ยวกับการสร้างระบบปฏิบัติการ Linux ของคุณเอง
  • ระบบปฏิบัติการตั้งแต่ 0 ถึง 1 เป็นหนังสือฟรีเกี่ยวกับการสร้างระบบปฏิบัติการต่างๆ ตั้งแต่ต้นจนจบ
สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 3
สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 3

ขั้นตอนที่ 5. กำหนดเป้าหมายระบบปฏิบัติการของคุณ

คุณต้องการให้ระบบปฏิบัติการของคุณทำอะไร? ควรมีลักษณะอย่างไร? คุณจำเป็นต้องเขียนระบบปฏิบัติการทั้งหมดจริง ๆ หรือคุณเพียงแค่ต้องการสร้างรูปลักษณ์บางอย่างสำหรับเดสก์ท็อปของคุณหรือไม่? สิ่งเหล่านี้เป็นสิ่งที่ควรพิจารณาก่อนเริ่มเขียนโค้ด

  • พิจารณาพัฒนาร่วมกับทีมโปรแกรมเมอร์คนอื่นๆ การมีทีมนักพัฒนาที่ทำงานในโครงการจะช่วยลดเวลาในการพัฒนาได้อย่างมาก
  • เพิ่มเป้าหมายโครงการ แผนงาน และคำถามของคุณลงในที่เก็บข้อมูลสาธารณะ เพื่อให้ผู้อื่นช่วยเหลือคุณได้ง่าย

ส่วนที่ 2 จาก 2: การสร้างระบบปฏิบัติการของคุณ

ขอให้สนุกกับคอมพิวเตอร์ ขั้นตอนที่ 16
ขอให้สนุกกับคอมพิวเตอร์ ขั้นตอนที่ 16

ขั้นตอนที่ 1 เลือกสภาพแวดล้อมการพัฒนา

นี่คือแพลตฟอร์มที่คุณจะใช้เพื่อเขียนโค้ดระบบปฏิบัติการใหม่ของคุณ มันเป็นเรื่องของความชอบส่วนบุคคล แต่คนส่วนใหญ่ใช้ Windows หรือยูนิกซ์ หากคุณใช้ Windows ขอแนะนำให้ติดตั้งสภาพแวดล้อม UNIX เช่น Cygwin หรือ MinGW โดยทั่วไป คุณจะต้องแน่ใจว่าสภาพแวดล้อมที่คุณใช้มีดังต่อไปนี้:

  • GCC (คอมไพเลอร์ Gnu) หากคุณใช้ Windows คุณสามารถติดตั้งได้ใน Cygwin หรือ MinGW
  • Binutils คือชุดเครื่องมือที่ใช้สำหรับจัดการไฟล์อ็อบเจ็กต์ อีกครั้ง หากคุณใช้ Windows คุณสามารถติดตั้งใน Cygwin ได้
  • โปรแกรมแก้ไขข้อความที่ดี Vim และ emacs มักใช้ในสภาพแวดล้อม UNIX ผู้ใช้ Windows สามารถใช้ Notepad หรือดู Notepad++ สำหรับการอัปเกรดแบบหลายแท็บ
  • Perl และ/หรือ Python แนะนำให้ใช้อย่างใดอย่างหนึ่งหรือทั้งสองอย่างสำหรับการจัดการสตริง
สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 13
สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 13

ขั้นตอนที่ 2 ตั้งค่าระบบควบคุมเวอร์ชันของคุณ

การเขียนระบบปฏิบัติการหมายความว่าคุณจะต้องสร้างโค้ดเป็นร้อย (หรือเป็นพัน!) เมื่อคุณกำลังแก้ไข อาจสร้างความสับสนได้ บางตัวเลือกที่จะเช็คเอาท์คือ CVS, Mercurial และ Subversion

สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 6
สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 6

ขั้นตอนที่ 3 ตัดสินใจเลือก bootloader

หากคุณไม่ต้องการสร้างของคุณเอง คุณสามารถใช้อันที่มีอยู่เช่น Grand Unified Bootloader (GRUB) หากคุณรู้สึกกล้าพอที่จะเขียนโค้ด bootloader ให้ลองดู Rolling Your Own Bootloader บน OSDev.org

สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 9
สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 9

ขั้นตอนที่ 4 เลือกการออกแบบเคอร์เนล

เคอร์เนลเป็นแกนหลักของระบบปฏิบัติการของคุณ โดยมีส่วนต่อประสานระหว่างผู้ใช้กับฮาร์ดแวร์คอมพิวเตอร์ มีเมล็ดแบบเสาหินและเมล็ดไมโคร เคอร์เนลเสาหินใช้บริการทั้งหมดในเคอร์เนลในขณะที่ไมโครเคอร์เนลมีเคอร์เนลขนาดเล็กรวมกับภูตผู้ใช้ที่ใช้บริการ โดยทั่วไป เมล็ดแบบเสาหินจะเร็วกว่า แต่ไมโครเคอร์เนลมีการแยกข้อบกพร่องและความน่าเชื่อถือที่ดีกว่า

สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 12
สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 12

ขั้นตอนที่ 5. เริ่มเล็ก ๆ

เริ่มต้นด้วยสิ่งเล็กๆ น้อยๆ เช่น การแสดงข้อความและการขัดจังหวะก่อนที่จะทำสิ่งต่างๆ เช่น การจัดการหน่วยความจำและการทำงานหลายอย่างพร้อมกัน คุณยังสามารถลองทำระบบปฏิบัติการ 16 บิตแบบง่าย ๆ แทนการก้าวกระโดดครั้งใหญ่

คุณจะไม่เต็มระบบภายในสองสัปดาห์ เริ่มต้นด้วยระบบปฏิบัติการที่บูท จากนั้นไปยังสิ่งที่ยอดเยี่ยม

สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 14
สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 14

ขั้นตอนที่ 6 ทดสอบระบบปฏิบัติการใหม่ของคุณด้วยเครื่องเสมือน

แทนที่จะรีบูตเครื่องคอมพิวเตอร์ทุกครั้งที่ทำการเปลี่ยนแปลงหรือต้องถ่ายโอนไฟล์จากคอมพิวเตอร์ที่กำลังพัฒนาไปยังเครื่องทดสอบ ให้ใช้แอปพลิเคชันเครื่องเสมือน VMWare เป็นตัวเลือกทั่วไปที่ใช้งานได้กับทั้ง Windows และ Linux และ Bochs ก็เช่นกัน ตรวจสอบการชะงักงันที่อาจเกิดขึ้นและข้อบกพร่องอื่นๆ และซ่อมแซมตามความจำเป็น

สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 15
สร้างระบบปฏิบัติการคอมพิวเตอร์ ขั้นตอนที่ 15

ขั้นตอนที่ 7 ปล่อย "ปล่อยตัวผู้สมัคร

คุณสามารถทำได้โดยอัปโหลดโค้ดที่ทดสอบแล้วไปยังพื้นที่เก็บข้อมูลสาธารณะ ซึ่งจะช่วยให้ผู้คนสามารถทดสอบระบบปฏิบัติการของคุณและรายงานปัญหาที่พวกเขาพบกลับมาได้

ขอให้สนุกกับคอมพิวเตอร์ ขั้นตอนที่ 28
ขอให้สนุกกับคอมพิวเตอร์ ขั้นตอนที่ 28

ขั้นตอนที่ 8 เครือข่ายกับผู้พัฒนาระบบปฏิบัติการอื่น

มีชุมชนนักพัฒนาระบบปฏิบัติการทั้งหมดรวมตัวกันในฟอรัมต่างๆ รวมถึง /r/osdev บน Reddit และ Software Engineering Stack Exchange สิ่งที่คุณเข้าใจเกี่ยวกับการพัฒนาระบบปฏิบัติการพื้นฐาน อ่านโพสต์ที่มีอยู่เพื่อดูว่ามีอะไรเกิดขึ้นบ้างในระหว่างกระบวนการพัฒนา

วิดีโอ - การใช้บริการนี้ อาจมีการแบ่งปันข้อมูลบางอย่างกับ YouTube

เคล็ดลับ

  • ตรวจสอบให้แน่ใจว่าได้นำคุณลักษณะด้านความปลอดภัยมาใช้เป็นความสำคัญสูงสุดของคุณ หากคุณต้องการให้ระบบของคุณทำงานได้
  • หลังจากการพัฒนาทั้งหมดเสร็จสิ้น ให้ตัดสินใจว่าคุณต้องการเผยแพร่โค้ดเป็นโอเพ่นซอร์สหรือเป็นกรรมสิทธิ์
  • เพื่อให้ระบบปฏิบัติการสามารถจัดการกับโปรเซสเซอร์หลายตัวได้ Memory Manager ของคุณต้องมีกลไก "ล็อค" เพื่อป้องกันไม่ให้โปรเซสเซอร์หลายตัวเข้าถึงทรัพยากรเดียวกันในเวลาเดียวกัน "การล็อก" ที่ใช้สำหรับสิ่งนี้จะต้องมีตัวกำหนดตารางเวลาเพื่อให้แน่ใจว่ามีตัวประมวลผลเพียงตัวเดียวที่เข้าถึงทรัพยากรที่สำคัญในเวลาใดก็ตาม และตัวอื่นๆ ทั้งหมดถูกทำให้รอ ทว่าตัวจัดกำหนดการขึ้นอยู่กับการมีอยู่ของตัวจัดการหน่วยความจำ นี่เป็นกรณีของการพึ่งพากันชะงักงัน ไม่มีวิธีมาตรฐานในการแก้ปัญหาเช่นนี้ ในฐานะโปรแกรมเมอร์ คุณถูกคาดหวังให้มีทักษะเพียงพอที่จะคิดหาวิธีจัดการกับมันเอง
  • ระบบปฏิบัติการยังเป็นมิตรกับผู้ใช้อีกด้วย ตรวจสอบให้แน่ใจว่าได้เพิ่มคุณสมบัติที่เป็นมิตรกับผู้ใช้ ทำให้สิ่งเหล่านี้เป็นส่วนสำคัญของการออกแบบของคุณ
  • ไม่เข้าร่วม ฟอรัม OSDev.org และเริ่มถามคำถามที่ชัดเจน ก็จะส่งผลให้ "อ่านคู่มือ" คำตอบ คุณควรลองอ่าน Wikipedia และคู่มือสำหรับเครื่องมือต่างๆ ที่คุณต้องการใช้
  • อย่าเริ่ม โครงการระบบปฏิบัติการเพื่อเริ่มต้นการเรียนรู้การเขียนโปรแกรม หากคุณยังไม่รู้จัก C, C++, Pascal หรือภาษาอื่นๆ ที่เหมาะสม เช่น การจัดการตัวชี้ การจัดการบิตระดับต่ำ การเปลี่ยนบิต ภาษาแอสเซมบลีแบบอินไลน์ ฯลฯ แสดงว่าคุณยังไม่พร้อมสำหรับการพัฒนาระบบปฏิบัติการ.
  • หากคุณทำสิ่งที่ไม่ได้รับคำแนะนำที่ดี เช่น เขียนไบต์สุ่มไปยังพอร์ต I/O แบบสุ่ม คุณจะขัดข้อง OS ของคุณ และ (ในทางทฤษฎี) อาจทำให้ฮาร์ดแวร์ของคุณพังได้

แนะนำ: