Nhưng bộ khởi động nhỏ này khởi động được các lệnh từ hệ điều hành như thế nào?
Vì bạn không thể làm được gì nhiều trong 512 byte mã (mặc dù, trên thực tế, một bộ nạp khởi động không phải là Nghiêm giới hạn ở 512 byte), một bootloader sẽ thường không nhiều hơn so với tải một khối lớn mã từ đĩa vào RAM và sau đó thực hiện nó.
Trình khởi động tiếp tục chạy và vẫn hoạt động như một "bộ phát" giữa phần mềm và phần cứng? Hoặc là điều khiển hoàn toàn được cung cấp cho hệ điều hành?
Tôi nghĩ rằng một khi mã bootloader đã làm công việc của mình, và nhảy vào mã bổ sung mà nó đã được nạp vào bộ nhớ, nó có thể sau đó được ghi đè, vì nó không còn cần thiết.
Tại sao tất cả bộ nạp khởi động được ghi bằng bộ lắp ráp?
Tôi cho rằng đây là chủ yếu vì một lý do: Nếu bạn viết một bootloader bằng một ngôn ngữ cấp cao, các mã được sản xuất sẽ hoàn toàn có thể dựa vào một số loại thư viện runtime, chứa các chức năng cần thiết. Tuy nhiên, những người này thường không cần thiết cho một bộ nạp khởi động, và do đó sẽ làm tăng kích thước mã của nó.
Và tại sao bạn phải quay trở lại từ C++ thành C khi viết hệ điều hành?
Bạn không nhất thiết phải làm như vậy. Nó chỉ là mã C gần máy hơn C++. Với C++ bạn không thể lúc nào cũng đoán được mã nào sẽ được tạo ra và liệu nó có hiệu quả như bạn muốn hay không.
Chỉnh sửa: Tôi cũng đã nghe lý lẽ rằng một số nhà phát triển hệ điều hành tuân thủ ngôn ngữ C vì có ít sự lựa chọn hơn trong các mô hình và kiểu lập trình khác nhau. trong C++. Do đó nó dễ dàng hơn để làm việc cho một nhóm với cơ sở mã thông thường, bởi vì mọi người sẽ viết nhiều mã "tương tự" hơn. (Vì bản thân tôi không tham gia vào bất kỳ sự phát triển mã nguồn mở hoặc hệ điều hành nào, tôi không thể đánh giá kinh nghiệm dù đây là một tuyên bố hợp lệ hay không.)
Quay lại? ** Quay lại?! ** C++ không phải là cải tiến trên C, nó là * ngôn ngữ khác * –
@StephenCanon Đồng ý. Mặc dù tôi đoán cho nó cùng một lá thư và tăng nó hai lần đã không thực sự giúp đỡ. – uSeRnAmEhAhAhAhAhA