Cách để Tạo hệ điều hành máy tính

Hệ điều hành cho phép người dùng tương tác với phần cứng máy tính, chúng được cấu thành bởi hàng trăm ngàn dòng lệnh. Thường được viết bằng C#, C, C++, và các loại hợp ngữ, hệ điều hành cho phép điều hướng trong máy tính, tạo bộ nhớ và thực thi câu lệnh. Việc tạo ra hệ điều hành không hề dễ dàng. Bạn sẽ cần đến rất nhiều kiến thức để làm được điều đó.

Các bước

  1. 1
    Học lập trình trước khi bắt đầu. Dù hợp ngữ là ngôn ngữ thiết yếu cần học, bạn cũng nên học thêm ngôn ngữ phụ trợ bậc cao khác, chẳng hạn như C.
  2. 2
    Xác định phương tiện bạn muốn dùng để tải hệ điều hành lên. Đó có thể là ổ CD, ổ DVD, USB, ổ cứng hoặc một máy tính khác.
  3. 3
    Xác định ý tưởng chính cho hệ điều hành. Chẳng hạn như, với Windows, đó là giao diện thân thiện với người dùng và tính năng bảo mật.
  4. 4
    Xác định nền tảng xử lý mà hệ điều hành của bạn sẽ hỗ trợ. Là nền tảng phổ biến nhất cho máy tính cá nhân, có lẽ IA-32, ARM và x86_64 sẽ là những lựa chọn tốt nhất của bạn.
  5. 5
    Xác định tự làm tất cả từ con số không hay xây dựng trên nhân hệ điều hành sẵn có nào đó. Chẳng hạn như với những ai muốn tự dựng hoàn toàn bản phân phối Linux của riêng mình, Linux là lựa chọn không tồi.
  6. 6
    Xác định dùng bộ tải khởi động riêng hay bộ tải khởi động sẵn có, ví dụ như Grand Unified Bootloader (GRUB). Việc viết bộ tải khởi động riêng cần đến kiến thức chuyên sâu về phần cứng cũng như BIOS và có thể sẽ khiến bạn phải lùi kế hoạch cho việc lập trình nhân hệ điều hành thật sự.
  7. 7
    Xác định ngôn ngữ lập trình mà bạn định dùng. Dù có thể viết hệ điều hành bằng ngôn ngữ như Pascal hay BASIC nhưng bạn vẫn nên sử dụng C hay Hợp ngữ. Hợp ngữ là thứ không thể thiếu, bởi một số phần quan trọng của hệ điều hành cần đến ngôn ngữ này. Mặt khác, từ khóa của C++ cần được chạy trên một hệ điều hành hoàn thiện khác.
    • Để lập trình hệ điều hành từ C hay C++, dĩ nhiên là bạn sẽ phải dùng đến trình biên dịch nào đó. Vì vậy, bạn nên đọc tài liệu/hướng dẫn sử dụng dành cho trình biên dịch C/C++ mà bạn chọn, dù đó là trình đi kèm phần mềm hay được cung cấp trên website của nhà phân phối. Bạn sẽ phải nắm được nhiều vấn đề phức tạp về trình biên dịch. Với C++, bạn nên biết về giao diện nhị phân và mangling scheme của trình biên dịch định dùng. Bạn còn phải hiểu về nhiều định dạng khả thi (ELF, PE, COFF, nhị phân đơn thuần, v.v) cũng như ý thức được rằng các định dạng riêng của Windows đã được đăng ký bản quyền.
  8. 8
    Xác định giao diện lập trình ứng dụng (API) sẽ dùng. Với nguồn tài liệu phong phú, POSIX là một lựa chọn khá tốt dành cho bạn. Mọi hệ thống Unix đều ít nhiều hỗ trợ POSIX. Vậy nên, việc chuyển đổi các chương trình Unix sang hệ điều hành sẽ không quá khó khăn.
  9. 9
    Định hình thiết kế. Nhân hệ điều hành có hai dạng: nguyên khối và vi nhân. Nhân nguyên khối thực thi mọi dịch vụ trên nhân trong lúc vi nhân phối hợp với trình nền người sử dụng để thực thi các dịch vụ. Nhìn chung, nhân nguyên khối nhanh hơn nhưng vi nhân đáng tin cậy và cô lập lỗi tốt hơn.
  10. 10
    Cân nhắc việc lập nhóm để làm việc. Bằng cách đó, bạn có thể tiết kiệm thời gian trong việc giải quyết nhiều vấn đề, dựng được hệ điều hành tốt hơn trong trong thời gian ngắn hơn.
  11. 11
    Đừng xóa hẳn ổ cứng. Làm vậy, mọi dữ liệu của bạn sẽ không thể phục hồi được nữa. Thay vào đó, bạn hãy dùng GRUB hay trình quản lý khởi động nào đó khởi động kép cùng hệ điều hành khác cho đến khi hệ điều hành mới của bạn đã có thể hoạt động tốt.
  12. 12
    Bắt đầu từ những bước nhỏ. Bạn hãy bắt đầu từ những bước nhỏ, chẳng hạn như hiển thị văn bản và ngắt đoạn, trước khi chuyển sang những nhiệm vụ phức tạp hơn như quản lý bộ nhớ và các chức năng đa nhiệm. Bạn cũng có thể thử sức với hệ điều hành đơn giản 16-bit trước.
  13. 13
    Sao lưu lần làm việc cuối, phòng khi có vấn đề nghiêm trọng với phiên bản hiện tại của hệ điều hành hay nội dung lập trình của bạn. Nó sẽ giúp bạn làm việc và xử lý sự cố khi máy tính bị hư và không thể khởi động được.
    • Nếu cần lưu trữ sao lưu, hãy đảm bảo là trên ổ cứng có từ 2-3 phân vùng. Một hệ điều hành được dùng để dựng hệ điều hành khác, một sao lưu phiên bản cũ (cũ hơn chứ không phải là cũ nhất) và một phân vùng cho phiên bản hiện tại.
  14. 14
    Xem xét việc thử hệ điều hành mới bằng máy tính ảo. Thay vì khởi động lại máy tính mỗi khi sửa đổi hay chuyển tập tin từ máy tính lập trình sang máy thử, bạn có thể dùng ứng dụng máy tính ảo để chạy hệ điều hành trong lúc hệ điều hành hiện tại vẫn hoạt động. Đó có thể là VMWare (công ty này còn cung cấp miễn phí sản phẩm máy chủ), mã nguồn mở thay thế, Bochs, Microsoft Virtual PC (không tương thích với Linux) và Oracle VirtualBox.
  15. 15
    Ra mắt phiên bản dùng thử "RC". Qua đó, bạn sẽ thu thập ý kiến của người dùng về những vấn đề tiềm ẩn cũng như đánh giá của họ dành cho hệ điều hành của bạn.
  16. 16
    Hệ điều hành có thể thân thiện với người sử dụng. Do đó, đừng quên thêm các tính năng thân thiện với người dùng, biến chúng thành phần không thể thiếu trong thiết kế của bạn.

Lời khuyên

  • Kiểm tra, tìm lỗi khóa chết tiềm ẩn và các lỗi khác. Lỗi, khóa chết và những vấn đề khác sẽ ảnh hưởng đến hệ điều hành của bạn.
  • Để hệ điều hành tồn tại được, đừng quên đặt tính năng bảo mật làm ưu tiên hàng đầu của bạn.
  • Tham khảo các trang như OSDev và OSDever để phát triển hệ điều hành riêng của bạn. Đồng thời, lưu ý rằng trong phần lớn trường hợp, cộng đồng OSDev.org khuyến khích bạn sử dụng wiki của họ thay vì tham gia vào diễn đàn. Nếu vẫn muốn tham gia vào diễn đàn, bạn phải đáp ứng được những điều kiện tiên quyết: Thành thạo C hoặc C++ và hợp ngữ x86. Ngoài ra, bạn còn phải hiểu những khái niệm lập trình chung cũng như phức tạp, chẳng hạn như Danh sách Liên kết, Hàng đợi v.v. Trong quy định của mình, cộng đồng OSDev nêu rõ ràng họ không ở đó để chỉ dẫn cho các lập trình viên mới.
  • Đừng tham gia diễn đàn OSDev.org và bắt đầu đặt những câu hỏi mà đáp án đã quá rõ ràng. Câu trả lời sẽ là "Đọc hướng dẫn". Bạn nên đọc Wikipedia và tài liệu hướng dẫn dành cho những công cụ mà bạn muốn sử dụng.
  • Khi muốn phát triển hệ điều hành, hẳn bạn phải là "chuyên gia" lập trình.
  • Bạn còn phải đọc tài liệu hướng dẫn dành cho kết cấu vi xử lý mà bạn chọn, bất kể đó là x86 (Intel), ARM, MIPS, PPC hay kết cấu nào khác. Bạn có thể tìm tài liệu này bằng công cụ tìm kiếm Google (Từ khóa "Intel Manuals", "ARM manuals",...).
  • Sau khi dựng xong, bạn cần cân nhắc phát hành hệ điều hành dưới dạng mã nguồn mở hay đóng.
  • Đừng khởi động dự án này để bắt đầu học lập trình. Nếu không hiểu rõ từ thao tác con trỏ, điều chỉnh bit cấp thấp, chuyển đổi bit, hợp ngữ nhúng đến những xử lý phức tạp hơn trong C, C++, Pascal hay một số ngôn ngữ phù hợp khác thì bạn chưa sẵn sàng cho việc phát triển hệ điều hành.
  • Có lẽ bạn nên tạo một phân vùng hoàn toàn mới cho việc 'phát triển' hệ điều hành.
  • Nếu muốn đơn giản, bạn có thể xem xét dùng những bản phân phối Linux như Fedora Revisor, Custom Nimble X, Puppy Remaster, PCLinuxOS Mk LiveCD, hay SUSE Studio và SUSE KIWI. Tuy nhiên, hệ điều hành mà bạn tạo ra sẽ thuộc về công ty đầu tiên bắt đầu dịch vụ đó (bạn có quyền phân phối miễn phí, điều chỉnh và chạy hệ điều hành này nhưng theo giấy phép Công cộng GPL).

Cảnh báo

  • Khi làm những điều dại dột, chẳng hạn như viết byte ngẫu nhiên cho cổng I/O ngẫu nhiên, bạn sẽ làm hỏng hệ điều hành và đôi khi (trên lý thuyết) còn có thể "luộc" luôn phần cứng.
  • Bạn sẽ không thể hoàn chỉnh hệ điều hành chỉ trong hai tuần. Hãy bắt đầu với hệ điều hành có khả năng khởi động rồi mới tiếp tục với những tính năng ngầu hơn.
  • Hãy cẩn thận. Việc viết hệ điều hành cho phần cứng một cách cẩu thả có thể sẽ phá hỏng hoàn toàn phần cứng của bạn.
  • Đừng nghĩ rằng việc dựng nên một hệ điều hành đúng nghĩa là dễ dàng. Có vô số tương quan phức tạp và rối rắm. Chẳng hạn như, để hệ điều hành xử lý được nhiều bộ xử lý, trình quản lý bộ nhớ của bạn phải "khóa" thiết bị để các bộ xử lý này không cùng lúc truy cập vào cùng một tài nguyên. "Khóa" dùng cho mục đích này cần có bộ lập lịch biểu để đảm bảo rằng tại bất kỳ thời điểm nào, chỉ một bộ xử lý truy cập vào nguồn tài nguyên quan trọng và mọi bộ xử lý khác đều được đặt lịch chờ. Vậy nhưng, bộ lập lịch biểu này lại cần đến trình quản lý bộ nhớ. Đây là một trường hợp khóa chết. Không có cách xử lý chuẩn nào cho những vấn đề như vậy: Nhà phát triển hệ điều hành cần có đủ kỹ năng để tìm được cách riêng cho mình.

Nguồn tài nguyên bổ trợ

Những thứ bạn cần

  • Máy vi tính
  • CPU cho kết cấu mà bạn sẽ phát triển
  • Đủ bộ nhớ (RAM) cho máy tính ảo
  • Một hệ điều hành 'chủ' (dùng để phát triển mã nguồn hợp ngữ (và những ngôn ngữ khác) cũng như dựng và đóng gói chúng ở những giai đoạn đầu: sau cùng, hệ điều hành riêng của bạn sẽ là hệ thống chủ)
  • Trình soạn thảo mã với các màu khác nhau cho các thuật ngữ khác nhau (dùng trong trường hợp không có môi trường phát triển tích hợp)
  • Trình biên dịch
  • Ổ CD/DVD

Thông tin Bài viết

Chuyên mục: Hệ Điều hành Khác

Ngôn ngữ khác:

English: Make a Computer Operating System, Italiano: Creare un Sistema Operativo, Español: crear un sistema operativo, Português: Fazer um Sistema Operacional de Computador, Deutsch: Ein eigenes Betriebssystem entwickeln, 中文: 建立一个电脑操作系统, Русский: разработать операционную систему для компьютера, Français: créer un système d'exploitation pour ordinateur, Nederlands: Een besturingssysteem maken, العربية: إنشاء نظام تشغيل لجهاز الكمبيوتر, Bahasa Indonesia: Membuat Sistem Operasi Komputer

Trang này đã được đọc 88 lần.

Bài viết này đã giúp ích cho bạn?