Mô tả tiến trình

Một phần của tài liệu Cấu trúc, nguyên lý, phân tích mã nguồn CentOS (Trang 51)

Tiến trình là một đối tượng trong hệ thống tương ứng với một phiên thực hiện của chương trình. Tiến trình bao gồm ba thành phần 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, 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ỉ tương tác tới vùng data và stack tương ứng của tiến trình, không truy nhập tới vùng data và stack của tiến trình khác, ngoại trừ vùng dùng chung. Một tiến trình được gọi là “live” nếu nó đang ở trong thời gian được thực thi, thời gian sống của mỗi tiến trình có thể ngắn hoặc dài. Khi tiến trình bị dừng thì tiến trình đó được coi là đã “die”.

Một tiến trình sẽ bao gồm một tập các thông số sau:

- pid: được dùng để định danh cho một tiến trình, số pid cho mỗi tiến trình sẽ được nhân của HDH xác định.

- ppid: là pid của tiến của tiến trình cha.

- uid và gid: dùng để chỉ đến người và nhóm sở hữu, có quyền đối với tiến trình.

- Có một đầu vào chuẩn(stdin), một đầu ra chuẩn(stdout), một kênh báo lỗi(stderr).

- Thời gian sử dụng CPU (time slice) và mức độ ưu tiên.

- Thư mục hoạt động của tiến trình.

- Bảng tham chiếu đến các file được tiến trình sử dụng.

HDH sẽ chia tiến trình ra thành 2 mức: mức người dùng(user mode), mức nhân của hệ thống (kernel mode). Khi một tiến trình của user thực hiện ở mức nhân thông qua lời gọi hệ thống (system call) thì tiến trình sẽ chuyển từ mức người dùng sang mức nhân hệ thống để thực hiện và trả lại kết quả mà user yêu cầu. Kernel mode là một chế độ độc quyền, kernel sử dụng tất cả các lệnh của CPU, các thanh ghi của CPU, kiểm soát bộ nhớ, liên lạc trực tiếp với các

thiết bị ngoại vi. Kernel sẽ tiếp nhận và xử lý các tiến trình mà user yêu cầu và trả lại kết quả cho user. User mode được hiểu là mức thực hiện bình thường của một tiến trình, ở mức này sẽ có nhiều áp đặt lên tiến trình. Như: tiến trình chỉ có thể truy nhập được các lệnh và dữ liệu của nó, không truy nhập được lệnh và dữ liệu của kernel hay của một tiến trình khác. Tiến trình được thực hiện dưới dạng lệnh thông qua shell và được quản lý bằng một terminal. Một tiến trình ở mức user mode khi muốn truy nhập tài nguyên cần thực hiện thông qua lời gọi hệ thống. Một tiến trình có thể được thực hiện ở hai chế độ, chế độ hiện (foreground) hoặc chế độ ngầm (background). Ở chế độ foreground, tiến trình sẽ chạy và được mô tả trực tiếp trên terminal và như vậy trong quá trình thực hiện tiến trình con thì người sử dụng không thể truy xuất được đến tiến trình cha. Ở chế độ background, sẽ thực hiện chạy tiến trình ngầm (không hiển thị tiến trình trên terminal), việc thực thi tiến trình cha và con sẽ diễn ra độc lập, vì vậy khi chạy ở chế độ này có thể truy xuất được cả tiến trình cha và con cùng lúc. Khi ở chế độ hiện user không thể thực hiện nhiều hơn một tác vụ cùng lúc, nhưng user lại có thể thực hiện nhiều hơn một tác vụ cùng lúc khi ở chế độ ngầm.

Một phần của tài liệu Cấu trúc, nguyên lý, phân tích mã nguồn CentOS (Trang 51)

Tải bản đầy đủ (DOCX)

(64 trang)
w