2010-01-27 30 views
30

cách để tạo hệ điều hành của riêng tôi bằng cách sử dụng C++. Tôi đã được tạo bộ nạp khởi động (sử dụng nasm, qemu) nhưng tôi chưa biết thêm một hạt nhân vào bộ nạp khởi động này.Viết hệ điều hành trong C++

+9

Tôi nghĩ đây thực sự là một câu hỏi hay, mang tính xây dựng. – Renra

+1

Có lẽ nó rộng với bản chất của nó nhưng nó chắc chắn đã cho tôi gợi ý tốt để khám phá – Renra

+1

Không có câu hỏi câm, chỉ có người ngu ngốc. – SasQ

Trả lời

13

Đây là ton of information mà cuối cùng bạn sẽ cần, Câu hỏi thường gặp về lập trình hệ điều hành đáng sợ.

5

Bạn có thể cân nhắc xem MINIX là hệ điều hành nhỏ cho hệ thống x86. Nó ban đầu được thiết kế như một dự án giảng dạy và đã phát triển thành một cái gì đó được dự định là hữu ích trong thế giới thực.

2

bạn có thể xem mã nguồn của minix 3. nó là một os rất đơn giản, được tạo ra với mục đích hiểu cách hoạt động của hệ điều hành.

bạn cũng có thể nghiên cứu tất cả sách tanenbaum về os. tất cả chúng đều rất hoàn chỉnh và tôi nhớ rằng một cuốn sách có nguồn minix hoàn chỉnh kèm theo và đã nhận xét

7

Ngoài ra, thêm This book bởi Tanenbaum, nơi ông giải thích chi tiết triển khai minix.

+1

+1: Tôi có cuốn sách đó và sẽ đề xuất tương tự. Ngay cả khi bạn không kết thúc bằng cách sử dụng các khái niệm tương tự như Tanenbaum, ít nhất bạn sẽ biết những khái niệm đó là gì! –

+0

cuốn sách tuyệt vời ... thú vị đọc;) – t0mm13b

2

Tôi không quen với chi tiết, nhưng theo kiến ​​thức của tôi BeOS được viết bằng C++. Nguồn phải là freeley có sẵn cũng như các tài liệu hướng dẫn.

+0

Đối với hạt nhân bạn có thể xem http://newos.org/ (viết một cựu nhân viên Be * và * đang được sử dụng bởi http://haiku-os.org/ cho Bản sao của họ). –

13

Hãy cẩn thận, C++ là khá nặng đối với hạt nhân hệ điều hành.

  • Có các dịch vụ như trường hợp ngoại lệ mà bạn sẽ phải hỗ trợ với thư viện thời gian chạy.
  • Nó sẽ không cảm thấy như C++ cho đến khi bạn thêm một đống.
  • Hạt nhân rất nhạy cảm với nơi các đối tượng được phân bổ; mô hình một heap thường được sử dụng trong C++ không thực sự phù hợp.
  • API ghép nối với cấu trúc dữ liệu là một ý tưởng tồi. BeOS có vấn đề với điều này. Bạn cần phải ẩn kích thước của các cấu trúc bên trong của bạn từ người dùng, và điều đó có nghĩa là nhảy qua các vòng (Pimpl, hàm tạo riêng, các hàm ảo) khi các API là các hàm thành viên.

Có vẻ như bạn đã đi xa hơn hầu hết, vì vậy hãy đặt câu hỏi và có thể bạn sẽ kết thúc ở đâu đó tốt đẹp! : vD

1

Đối với hệ điều hành C++, bạn có thể muốn xem NewOS hoặc UnixLite.

1

Một hệ điều hành có thể sử dụng có thể được phát triển ở đầu L4, ngay cả bởi một sinh viên trong một học kỳ cùng với các khóa học khác (nhưng với tất cả các vấn đề trình điều khiển đã được giải quyết). Nếu tìm thấy đây là một cuộc phiêu lưu tuyệt vời, và L4 microkernel cũng là loại tiên tiến.

Các vấn đề liên quan