Phương pháp Tạo hệ điều hành máy tính Tainghetrothinh

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à những 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 đó.

những bước

1Họ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. 2Xá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. 3Xá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. 4Xá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. 5Xá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. 6Xá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ự. 7Xá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 dùng C hay Hợp ngữ. Hợp ngữ là thứ không thể thiếu, bởi một vài 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/chỉ dẫn 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 những định dạng riêng của Windows đã được đăng ký bản quyền.8Xá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 những chương trình Unix sang hệ điều hành sẽ không quá khó khăn. 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 dùng để thực thi những 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. 10Câ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Đừ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. 12Bắ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à những 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. 13Sao 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.14Xem 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), Quemu (cho linux và windows) và Oracle VirtualBox. 15Ra 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. 16Hệ điều hành có thể thân thiện với người dùng. Do đó, đừng quên thêm những 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à những 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 những 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 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 những 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 chỉ dẫn”. Bạn nên đọc Wikipedia và tài liệu chỉ dẫn dành cho những công cụ mà bạn muốn 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 chỉ 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 vài 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ị để những 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ợ

Tài liệu chỉ dẫn: Linux From ScratchBộ nạp khởi động: GRUBỨng dụng máy tính ảo: Bochs, VM Ware, XM Virtual Box.chỉ dẫn dùng bộ xử lý: Intel manualsWebsite phát triển hệ điều hành: OSDev, OSDever

Những thứ bạn cần

Máy vi tínhCPU cho kết cấu mà bạn sẽ phát triểnĐủ bộ nhớ (RAM) cho máy tính ảoMộ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 những màu khác nhau cho những 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