2.1.6 Thực hiện các quy trình
để thực hiện các mô hình quy trình, hệ thống điều hành duy trì một bảng (mảng của cấu trúc),
gọi là bảng tiến trình, với một mục nhập cho mỗi quá trình. (Một số tác giả gọi những quá trình mục
khối điều khiển.) Mục nhập này có chứa thông tin về trạng thái của tiến trình, truy cập chương trình của mình,
chồng con trỏ, cấp phát bộ nhớ, tình trạng của các tập tin mở của nó, kế toán và lập kế hoạch
thông tin, và mọi thứ khác về quá trình phải được lưu lại khi quá trình này được
chuyển từ chạy tới trạng thái sẵn sàng hoặc bị chặn để nó có thể được khởi động lại sau đó như thể nó chưa bao giờ
được dừng lại.
Hình 2-4 cho thấy một số lĩnh vực quan trọng hơn trong một hệ thống điển hình. Các lĩnh vực trong đầu
cột liên quan để xử lý quản lý. Hai cột khác liên quan đến quản lý bộ nhớ và
quản lý tập tin, tương ứng. Cần lưu ý rằng chính xác các trường bảng tiến trình có
rất hệ thống phụ thuộc, nhưng con số này cho một ý tưởng chung của các loại thông tin
cần thiết.
Quy trình quản lý
Thanh ghi
truy cập chương trình
từ trạng thái chương trình
stack pointer
Process nhà nước
ưu tiên
thông số Scheduling
Process ID
quá trình Chánh
nhóm quá trình
Tín hiệu
Thời gian khi bắt đầu quá trình
thời gian CPU được sử dụng
thời gian CPU trẻ em
Thời gian tiếp báo động
quản lý bộ nhớ
Pointer để văn bản phân khúc
Pointer để phân đoạn dữ liệu
Pointer để ngăn xếp đoạn
quản lý tập tin
thư mục gốc
Làm việc thư mục
tập tin mô tả
User ID
Group ID
Hình 2-4. Một số lĩnh vực của một mục bảng quá trình điển hình.
Bây giờ chúng ta đã xem xét các bảng tiến trình, nó có thể giải thích thêm một chút về cách các
ảo tưởng của nhiều quy trình tuần tự được duy trì trên một máy tính với một CPU và nhiều I / O
thiết bị. Kết hợp với mỗi lớp thiết bị I / O (ví dụ, đĩa mềm, đĩa cứng, giờ, thiết bị đầu cuối)
là một địa điểm (thường gần cuối của bộ nhớ) được gọi là các vector ngắt. Nó chứa các
địa chỉ của thủ tục gián đoạn dịch vụ. Giả sử rằng người sử dụng quy trình 3 đang chạy khi một đĩa
ngắt xảy ra. Sử dụng quá trình 3 của chương trình truy cập, từ trạng thái chương trình, và có thể một hoặc
nhiều thanh ghi này được đẩy lên (hiện tại) stack bằng phần cứng ngắt. Các máy tính sau đó
nhảy đến địa chỉ được chỉ định trong vector đĩa bị gián đoạn. Đó là tất cả các phần cứng không. Từ
đây trở đi, đó là vào các phần mềm, đặc biệt là các thủ tục gián đoạn dịch vụ.
Tất cả các ngắt bắt đầu bằng việc lưu sổ đăng ký, thường trong các entry bảng tiến trình cho quá trình hiện tại.
Sau đó thông tin bị đẩy vào ngăn xếp bởi các ngắt được loại bỏ và con trỏ ngăn xếp được
thiết lập để trỏ đến một chồng tạm thời được sử dụng bởi các quá trình xử lý. Hành động như tiết kiệm các thanh ghi
và thiết lập con trỏ ngăn xếp có thể thậm chí không được thể hiện trong ngôn ngữ cấp cao như C, do đó, họ
được thực hiện bởi một thói quen ngôn ngữ lắp ráp nhỏ, thường là một trong những giống cho tất cả các ngắt từ
việc tiết kiệm các thanh ghi là giống hệt nhau, không có vấn đề gì là nguyên nhân của sự gián đoạn.
Khi thói quen này được hoàn thành, nó gọi một thủ tục C để làm phần còn lại của công trình cho cụ thể này
bị gián đoạn loại. (Chúng tôi giả định các hệ điều hành được viết bằng C, sự lựa chọn thông thường cho tất cả các thực
hệ điều hành). Khi nó đã làm công việc của mình, có thể làm cho một số quá trình bây giờ đã sẵn sàng,
lên lịch và được gọi là để xem ai chạy tới. Sau đó, điều khiển được chuyển trở lại lắp ráp
mã ngôn ngữ để tải lên các thanh ghi và bộ nhớ đồ cho quá trình doanh nghiệp hiện tại và bắt đầu nó
chạy. Xử lý ngắt và lập lịch trình được tóm tắt trong hình. 2-5. Điều đáng chú ý là các
chi tiết khác nhau đôi chút từ hệ thống để hệ thống.
1. Phần cứng ngăn xếp chương trình truy cập, vv
2. Phần cứng tải đếm chương trình mới từ vector ngắt.
3. Thủ tục đăng ký lưu ngôn ngữ lắp ráp.
4. Thủ tục ngôn ngữ hội thành lập mới stack.
5. C chạy gián đoạn dịch vụ (thường đọc và bơ đầu vào).
6. Scheduler sẽ quyết định quá trình là để chạy tới.
7. Thủ tục C trả về cho mã lắp ráp.
8. Thủ tục ngôn ngữ hội khởi động quá trình hiện hành mới.
Hình 2-5. Skeleton của những mức thấp nhất của hệ điều hành nào khi một ngắt
xảy ra.
đang được dịch, vui lòng đợi..