2012-08-02 32 views
5

Tôi có một vài nghi ngờ về cách hoạt động của hệ điều hành.Hệ điều hành: trình lập biểu quy trình có chạy trong quy trình riêng lẻ

Trình lập lịch biểu: Trình lập lịch biểu có chạy trong một quy trình riêng biệt (giống như bất kỳ quy trình nào khác) hay không. Chính xác những gì xảy ra tại thời điểm hoán đổi trong quá trình mới (tôi biết thanh ghi của bộ xử lý và các bảng bộ nhớ được cập nhật, câu hỏi của tôi là cách chúng được cập nhật. Chúng ta có thể viết chương trình để cập nhật sổ đăng ký (sc, pc) quá trình).

+0

Điều đó phụ thuộc vào kiến ​​trúc hệ điều hành. Một hệ điều hành được xây dựng tùy chỉnh thậm chí có thể chỉ có một tiến trình cho mỗi lõi CPU. Đối với hầu hết các hệ điều hành trưởng thành, quá trình hệ thống xử lý lịch trình được kích hoạt bằng phần cứng gián đoạn. – Jay

Trả lời

5

Lịch trình quy trình có thể chạy trong một quy trình riêng biệt, nhưng thiết kế như vậy sẽ không hiệu quả vì bạn sẽ phải hoán đổi từ một quy trình sang quy trình lập lịch biểu (sau đó phải thực hiện nhiều cuộc gọi hệ thống tới hạt nhân) và sau đó quay trở lại quy trình mới, trái ngược với việc chỉ đặt trình lên lịch trong hạt nhân nơi bạn sẽ không cần các cuộc gọi hệ thống cũng như không cần trao đổi ngữ cảnh nhiều lần. Vì vậy, lịch trình thường nằm trong lĩnh vực độc quyền của hạt nhân.

Dưới đây là các bước mà xảy ra:

  1. Scheduler xác định quá trình sẽ chạy trong khoảng thời gian tiếp theo (thông qua thuật toán khác nhau khác nhau).

  2. Trình lập lịch biểu báo cho Bộ quản lý bộ nhớ (MMU) sử dụng bảng trang để tiến trình tiếp theo chạy (điều này được thực hiện bằng cách đặt thanh ghi để trỏ tới bảng).

  3. Trình lập lịch biểu có thể lập trình ngắt thời gian lập trình (PIT) để tạo gián đoạn sau chu kỳ đồng hồ N.

  4. Scheduler khôi phục trạng thái của thanh ghi từ khi quá trình này là chạy cuối cùng (hoặc đặt chúng để giá trị mặc định cho các quy trình mới)

  5. Scheduler nhảy đến địa chỉ của lệnh cuối cùng mà không được thực hiện trong quá trình.

  6. Sau chu kỳ đồng hồ N, xảy ra gián đoạn và hệ điều hành nhận ra nó do PIT gây ra, được đăng ký để được trình lên lịch xử lý.

  7. Trình lên lịch lưu trạng thái của thanh ghi (bao gồm con trỏ ngăn xếp, v.v.) và lấy bộ đếm chương trình của nơi xảy ra gián đoạn (và lưu nó làm địa chỉ để chuyển đến lần tiếp theo) và sau đó quay lại bước 1.

Đây chỉ là một ví dụ về cách thực hiện và nhiều chi tiết cấp thấp là kiến ​​trúc cụ thể. Về cơ bản tất cả các thanh ghi (trạng thái chương trình) có thể được lưu vào bất kỳ vị trí nào trong RAM (nói một danh sách liên kết các cấu trúc đại diện cho các tiến trình có không gian cho thanh ghi, vv) và không gian địa chỉ ảo (được định nghĩa bởi các bảng trang) có thể tùy ý đổi chỗ.

Vì vậy, về bản chất câu hỏi của bạn:

"Chúng tôi có thể viết chương trình cập nhật sổ đăng ký để trỏ đến một quy trình khác không?"

được chỉ định đơn giản, nhưng câu trả lời là chính xác. Chúng tôi chắc chắn có thể.

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