Các thao tác với tiến trình

Một phần của tài liệu Giáo trình Hệ điều hành (Trang 44 - 47)

CHƯƠNG 2 : QUẢN LÝ TIẾN TRÌNH

2.1. CÁC KHÁI NIỆM LIÊN QUAN ĐẾN TIẾN TRÌNH

2.1.5. Các thao tác với tiến trình

Hoạt động quản lý tiến trình bao gồm một số công việc như tạo mới và kết thúc tiến trình, chuyển đổi giữa các tiến trình, điều độ, đồng bộ hóa, đảm bảo liên lạc giữa các tiến trình. Trong phần này, ta sẽ xem xét các thao tác tạo mới, kết thúc và chuyển đổi giữa các tiến trình. Những nội dung khác sẽđược xem xét trong các phần sau.

To mi tiến trình

Một tiến trình có thể tạo ra tiến trình mới bằng cách gọi lời gọi hệ thống tương ứng của hệ điều hành. Khi người dùng chạy chương trình, trình dịch lệnh của hệ điều hành, ví dụ

Tiến trình 1 Tiến trình 2 Tiến trình 3 Tiến trình n …. Con trỏ tới bảng tiến trình PCB 1 PCB n Bảng tiến trình Đang chạy Sẵn sàng Chờ đợi đọc đĩa PCB PCB PCB PCB PCB PCB PTIT

Windows Explorer, chính là tiến trình u cầu thực hiện lời gọi hệ thống để tạo mới tiến trình. Tiến trình được tạo mới gọi là tiến trình con, tiến trình tạo ra tiến trình con gọi là tiến trình cha. Nếu tiến trình con tiếp tục tạo ra tiến trình mới thì dần dần sẽ có một cây tiến trình.

Để tạo ra tiến trình mới, hệđiều hành thực hiện một sốbước sau:

a) Gán sđịnh danh cho tiến trình được tạo mới và tạo một ơ trong bảng tiến trình.

b) To khơng gian nh cho tiến trình và PCB. Kích thước khơng gian nhớ được tính tốn dựa trên thơng tin về tiến trình mà hệ điều hành có. Tùy theo cách tạo mới, không gian nhớ của tiến trình con có thể chia sẻ hoặc không chia sẻ với tiến trình cha.

c) Khi to PCB. Hệđiều hành gán giá trị cho các thành phần của PCB. Đa số giá trị ban đầu được gán theo mặc định (ví dụ giá trị khơng), trừ sốđịnh danh tiến trình, con trỏ lệnh, con trỏngăn xếp và một số giá trị khác.

d) Liên kết PCB ca tiến trình vào các danh sách quản lý, ví dụ danh sách tiến trình mới khởi tạo, đặt con trỏ trong bảng tiến trình trỏ tới PCB.

Có hai kiểu tạo mới tiến trình khác nhau:

- Tiến trình con là một bản sao của tiến trình cha, tức là có cùng phần mã chương trình

và phần dữ liệu. Cách này được thực hiện trong hệ điều hành UNIX bằng cách gọi lệnh fork().

- Tiến trình con được tạo thành từ một chương trình mới. Đây là cách tạo tiến trình được sử dụng trong Windows (bằng cách gọi lời gọi hệ thống CreateProcess()).

Kết thúc tiến trình

Tiến trình có thể yêu cầu hệ điều hành kết thúc mình bằng cách gọi lời gọi hệ thống exit(). Tiến trình thường kết thúc khi đã thực hiện xong và được gọi là kết thúc bình thường. Ngồi ra, tiến trình có thể kết thúc trong một sốtrường hợp sau:

- Bị tiến trình cha kết thúc. Thơng thường, tiến trình cha có quyền kết thúc tiến trình con do mình tạo ra và có thể sử dụng quyền này khi khơng cần tiến trình con nữa hoặc khi tiến trình con dùng quá nhiều tài nguyên. Khi tiến trình cha kết thúc, hệ điều hành

cũng có thể xóa mọi tiến trình con và tiến trình hậu duệ của tiến trình cha.

- Do các lỗi. Có nhiều loại lỗi có thể dẫn tới tiến trình bị kết thúc như: lỗi truy cập vùng bộ nhớ hoặc thiết bị vào/ra không được phép truy cập; các lỗi số học như chia cho

không, tràn số; lỗi vào/ra như khi ghi ra đĩa một số lần không thành công.

- Tiến trình yêu cầu nhiều bộ nhớhơn so với lượng bộ nhớ hệ thống có thể cung cấp. - Tiến trình thực hiện lâu hơn thời gian giới hạn. Tình huống này xảy ra đối với hệ

thống nhiều người dùng như các siêu máy tính và địi hỏi đăng ký trước thời gian chạy cho tiến trình. Giới hạn thời gian cũng có thể dùng với các hệ thống tương tác trực tiếp và được tính bằng thời gian từlúc người dùng yêu cầu cho tới khi tiến trình phản

ứng lại.

- Do quản trị hệ thống hoặc hệ điều hành kết thúc. Ví dụ khi xảy ra các tình huống như

bế tắc (xem phần về bế tắc).

Chuyển đổi gia các tiến trình

Trong quá trình thực hiện, CPU có thể được chuyển từ tiến trình hiện thời sang thực hiện tiến trình khác hoặc mơ đun xử lý ngắt của hệđiều hành. Trong những trường hợp như

vậy, hệđiều hành cần lưu giữ các thơng tin về tình trạng của tiến trình hiện thời để có thể khơi phục và thực hiện lại tiến trình từđiểm bị dừng. Thơng tin về tiến trình hiện thời được gọi là

ng cnh (context) của tiến trình, việc chuyển giữa tiến trình, do vậy, còn được gọi là chuyn đổi ng cnh.

Việc chuyển tiến trình xảy ra trong hai trường hợp sau:

1) Khi có ngt. Ngắt là kết quả của các sự kiện bên ngồi tiến trình (gọi là ngắt ngoài) hoặc do lỗi phát sinh trong bản thân tiến trình (gọi là ngắt trong).

Một số loại ngắt ngồi thơng dụng bao gồm: ngắt do đồng hồ, được sinh ra do đồng hồ của hệ thống sau những khoảng thời gian nhất định và thường được sử dụng để

phân phối CPU cho tiến trình khác sau khi tiến trình hiện thời đã chạy hết khoảng thời gian được phân bổ; ngắt vào/ra, ví dụkhi người dùng gõ bàn phím hoặc khi kết

thúc đọc dữ liệu từđĩa.

Ngắt trong là ngắt sinh ra khi có các lỗi nghiêm trọng hoặc những tình huống khiến tiến trình khơng thể thực hiện tiếp. CPU sẽ chuyển sang thực hiện mô đun xử lý lỗi của hệđiều hành.

2) Khi tiến trình gi li gi h thng. Ví dụ tiến trình có thể gọi lệnh đọc file của hệ điều hành. Do kết quả các lệnh như vậy, hệ thống sẽ chuyển từ tiến trình gọi lời gọi hệ thống sang thực hiện hàm xử lý lời gọi hệ thống nằm trong thành phần hệ điều hành.

Như đã nói ở trên, ngữ cảnh của tiến trình được chứa trong PCB. Trước khi chuyển sang thực hiện tiến trình khác, ngữ cảnh (bao gồm nội dung các thanh ghi, thông tin về bộ nhớ…) được lưu vào PCB. Khi tiến trình được cấp phát CPU để thực hiện trở lại, ngữ cảnh sẽđược khôi phục từ PCB vào thanh ghi và những bảng tương ứng.

Vấn đềởđây là ngữ cảnh phải bao gồm những thông tin nào ? Nói cách khác, thơng tin nào phải được cập nhật và lưu vào PCB khi chuyển tiến trình? Tùy từng trường hợp cụ thể, những thơng tin này có thể khác nhau.

Trong trường hợp đơn giản nhất, hệ thống chuyển sang thực hiện ngắt vào/ra, sau đó

quay lại thực hiện tiếp tiến trình hiện thời. Ngữ cảnh cần lưu khi đó sẽ bao gồm những thơng tin có thể bị hàm xử lý ngắt làm thay đổi, cụ thể là nội dung các thanh ghi và trạng thái CPU. Những thông tin này được lưu vào các vùng tương ứng trong PCB. Khi kết thúc ngắt, giá trị

các thanh ghi và trạng thái CPU được cập nhật lại từ PCB và tiến trình có thể thực hiện lại từ

vịtrí trước khi bị ngắt.

Trong trường hợp phức tạp hơn, sau khi thực hiện ngắt, hệ thống có thể chuyển sang thực hiện tiến trình khác, chẳng hạn do kết quảđiều độ tiến trình. Trong trường hợp như vậy,

việc chuyển đổi ngữ cảnh sẽ bao gồm thêm một sốthao tác khác như: thay đổi trạng thái tiến trình, cập nhật thông tin thống kê trong PCB, chuyển liên kết PCB của tiến trình vào danh sách ứng với trạng thái mới, cập nhật PCB của tiến trình mới được chọn, cập nhật nội dung thanh ghi và trạng thái CPU bằng thông tin lấy từ PCB của tiến trình mới được chọn.

Như vậy, để chuyển tiến trình, hệ thống cần thực hiện một số bước liên quan tới việc

lưu và khôi phục ngữ cảnh. Việc chuyển tiến trình, do vậy, đòi hỏi thời gian cùng với tài nguyên hệ thống và có thểảnh hưởng tới tốc độ nếu diễn ra quá thường xuyên.

Một phần của tài liệu Giáo trình Hệ điều hành (Trang 44 - 47)

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

(184 trang)