9
0
CHƯƠNG 4. QUẢN TRỊ QUÁ TRÌNH
4.1 Quá trình trong UNIX
4.1.1. Sơ bộ về quá trình
Quá trình là đối tượng trong hệ thống tương ứng với một phiên thực hiện của một
chương trình. Quá trình bao gồm ba thành phần là text, data, stack. Text là thành phần câu
lệnh thực hiện, data là thành phần dữ liệu còn stack là thành phần thông tin tạm thời hoạt
động theo cơ chế LIFO. Các câu lệnh trong text chỉ thao tác tới vùng data, stack tương ứng
của quá trình, không truy nhập được tới data và stack của các quá trình khác, ngoại trừ các
vùng dữ liệu dùng chung.
Các quá trình được hệ thống phân biệt bằng số hiệu của quá trình, viết tắt là PID
(Proccess Index). Quá trình được tạo khi khởi động hệ điều hành là quá trình 0. Mọi quá
trình khác đều được tạo ra từ một quá trình khác thông qua lời gọi hệ thống fork: quá trình
thực hiện lời gọi hệ thống fork được gọi là quá trình cha, còn quá trình được tạo ra theo lời
gọi fork được gọi là quá trình con. Trừ quá trình 0 không có cha, mọi quá trình có trong hệ
thống đều có một cha và một cha có thể có nhiều con.
Kết quả dịch chương trình nguồn sẽ tạo ra file chương trình đích gồm một số phần như
sau (lưu trữ trên vật dẫn ngoài):
Phần đầu file mô tả một số đặc tính của file chương trình (tương tự File
header của file chương trình trong MS-DOS),
Phần text của chương trình,
Các giá trị mở đầu về việc phân phối bộ nhớ đối với vùng data của chương
trình,
Một số bảng thông tin liên quan đến đặt file.
Khi có lời gọi fork, thông qua lời gọi hệ thống exec, nhân sẽ tải nội dung
của file chương trình vào bộ nhớ trong theo các vùng text, data và stack:
Vùng text của quá trình tương ứng với file chương trình,
Vùng data của quá trình tương ứng với các giá trị được quy định trong file
chương trình,
Vùng stack được nhân tự động tạo với kích thước theo sự linh hoạt của
nhân.
Phần stach bao gồm các stack frame (khung) lôgic: mỗi satck frame được đặt vào khi
gọi một hàm và lấy ra khi quay về. Mỗi stack frame chứa tham sô của hàm, các biến địa
phương v.v. Tương ứng trong stack có một stack pointer liên quan đến chiều sâu của stack.
Trong mã chương trình có các dòng lệnh quản lý hình trạng của stack, và nhân sẽ định vị
không gian đối với stack theo yêu cầu.
4.1.2. Sơ bộ cấu trúc điều khiển của UNIX
Theo phân cấp, hệ thống thực hiện theo ba mức: mức người dùng, mức nhân và mức
phần cứng.
•
Mức người dùng (user level): gồm có chương trình người dùng và chương trình
trong các thư viện. Các chương trình này chạy (phần lệnh của chúng thực hiện)