Ủng hộ tôi
PCB là thuật ngữ viết tắt của Process Control Block (Khối điều khiển tiến trình). PCB là một cấu trúc dữ liệu đặc biệt được Hệ điều hành sử dụng để lưu trữ tất cả dữ liệu liên quan đến tiến trình, bao gồm: trạng thái, PC, con trỏ ngăn xếp, giá trị các thanh ghi, .....
Chuyển ngữ cảnh (context switching) là thuật ngữ đề cập tới việc thay đổi tiến trình được thực thi (nghĩa là thay đổi tiến trình sử dụng CPU).
Giả sử CPU đang thực thi tiến trình P0, quy trình chuyển ngữ cảnh để CPU thực thi tiến trình P1 đang ở đầu của hàng đợi sẵn sàng sẽ diễn ra như sau:
Lưu PC và các thanh ghi vào PCB của P0 (PCB0) và thay đổi trạng thái của P0 trong PCB0.
Chuyển PCB0 tới hàng đợi thích hợp (hàng đợi sẵn sàng đối với trường hợp P0 hết khoảng thời gian sử dụng CPU, hàng đợi I/O đối với trường hợp P0 yêu cầu nhập/xuất) hoặc giải phóng PCB0 (nếu P0 đã hoàn thành thực thi hoặc bị ép chấm dứt).
Chuyển trạng thái của P1 trong PCB1 sang thực thi và lấy PCB1 ra khỏi hàng đợi sẵn sàng.
Nạp PC và các thanh ghi từ PCB1 lên CPU để thực thi.
Việc chuyển ngữ cảnh trong ví dụ trên bắt nguồn tự việc lập lịch CPU. Bên cạnh nguyên nhân lập lịch CPU thì còn 2 nguyên nhân khác dẫn đến chuyển ngữ cảnh, bao gồm:
Xử lý ngắt (Interrupt handler): Ngắt là một cơ chế dùng để các thiết bị phần cứng giao tiếp với CPU, ... (chỗ này sẽ bổ sung sau khi viết về ngắt và hỏi vòng - pulling)
Chuyển chế độ thực thi (giữa người dùng và kernel): Tiến trình người dùng có rất ít đặc quyền, vì thế nếu muốn thực thi các chức năng liên quan đến hệ thống thì phải nhờ tiến trình kernel thực thi giúp.