You are on page 1of 6

Nguyên lý hệ điều hành Khái niệm tiến trình

Nguyễn Hải Châu


Khoa Công nghệ thông tin
Trường Đại học Công nghệ

1 2

Tiến trình là gì? Tiến trình gồm có…


z Thuật ngữ: Process z Đoạn mã lệnh (code, có sách gọi là text)
(tiến trình/quá trình)
z Đoạn dữ liệu
z Là một chương trình
đang được thực hiện z Đoạn ngăn xếp và heap (stack/heap)
z Được xem là đơn vị z Các hoạt động hiện tại được thể hiện qua
làm việc trong các HĐH con đếm lệnh (IP) và nội dung các thanh ghi
z Có hai loại tiến trình: (registers) của bộ xử lý
z Tiến trình của HĐH z Chú ý:
z Tiến trình của NSD
z Tiến trình là thực thể chủ động
z Chương trình là thực thể bị động
3 4

Trạng thái tiến trình Khối điều khiển tiến trình


z Thuật ngữ: Process
new
Control Block (PCB) Con trỏ Trạng thái tiến trình
terminated
Bị ngắt z Các thông tin: Số hiệu tiến trình (Process
(Interrupt)
admitted number)
exit z Trạng thái tiến trình
z Con đếm Con đếm (program counter)
ready running
z Các thanh ghi
z Thông tin về lập lịch Các thanh ghi (registers)
Lập lịch
I/O hoặc sự kiện
Chờ I/O hoặc
z Thông tin về bộ nhớ
đã hoàn tất Giới hạn bộ nhớ
sự kiện z Thông tin accounting
waiting
z Thông tin vào/ra Danh sách các tệp đang mở

5 6
…..

1
Tại sao phải lập lịch?
Số lượng NSD, số lượng tiến trình luôn lớn
Lập lịch tiến trình z
hơn số lượng CPU của máy tính rất nhiều
z Tại một thời điểm, chỉ có duy nhất một tiến
trình được thực hiện trên một CPU
z Vấn đề:
z Số lượng yêu cầu sử dụng nhiều hơn số lượng tài
nguyên đang có (CPU)
z Do đó cần lập lịch để phân phối thời gian sử dụng
CPU cho các tiến trình của NSD và hệ thống
7 8

Hàng chờ lập lịch Hàng chờ lập lịch tiến trình
z Thuật ngữ: Queue Hàng chờ sẵn
sàng thực hiện CPU
z Các tiến trình chưa được phân phối sử dụng
CPU sẽ được đưa vào hàng chờ (queue) Vào/ra Hàng chờ vào/ra Yêu cầu vào/ra

z Có thể có nhiều hàng chờ trong hệ thống:


Hàng chờ sử dụng CPU, hàng chờ sử dụng Hết thời gian
sử dụng CPU
máy in, hàng chờ sử dụng ổ đĩa CD…
z Trong suốt thời gian tồn tại, tiến trình phải di Tiến trình con Tạo một tiến
thực hiện trình con
chuyển giữa các hàng chờ

9
Ngắt xuất hiện Chờ ngắt 10

Phân loại các bộ lập lịch Minh họa bộ lập lịch trung hạn
z Bộ lập lịch dài hạn (long-term scheduler)
swap in Các tiến trình swap out
z Thường dùng trong các hệ xử lý theo lô đang thực hiện
z Đưa tiến trình từ spool vào bộ nhớ trong dở bị swap out

z Bộ lập lịch ngắn hạn (short-term scheduler)


z Còn gọi là bộ lập lịch CPU Hàng chờ sẵn
CPU
sàng thực hiện
z Lựa chọn tiến trình tiếp theo được sử dụng CPU
z Bộ lập lịch trung hạn (medium-term scheduler)
z Hay còn gọi là swapping (tráo đổi) Vào/ra Hàng chờ vào/ra

z Di chuyển tiến trình đang trong trạng thái chờ giữa


bộ nhớ trong và bộ nhớ ngoài 11 12

2
Hàng chờ lập lịch tiến trình Chuyển trạng thái
swap in Các tiến trình đang thực swap out
hiện dở bị swap out
z Thuật ngữ: Context switch
Hàng chờ sẵn
sàng thực hiện CPU
z Xảy ra khi một tiến trình A bị ngắt ra khỏi
CPU, tiến trình B bắt đầu được sử dụng CPU
Vào/ra Hàng chờ vào/ra Yêu cầu vào/ra
z Cách thực hiện:
Hết thời gian z Nhân HĐH ghi lại toàn bộ trạng thái của A, lấy từ
sử dụng CPU PCB (khối điều khiển tiến trình) của A
z Đưa A vào hàng chờ
Tiến trình con Tạo một tiến
thực hiện trình con z Nhân HĐH nạp trạng thái của B lấy từ PCB của B
z Thực hiện B
Ngắt xuất hiện Chờ ngắt 13 14

Chuyển trạng thái


Các thao tác với
Việc chuyển trạng thái, nói chung, là lãng phí
z
thời gian của CPU tiến trình
z Do đó việc chuyển trạng thái cần được thực
hiện càng nhanh càng tốt
z Thông thường thời gian chuyển trạng thái
mất khoảng 1-1000 micro giây

15 16

Tạo tiến trình Cây tiến trình


z HĐH cung cấp hàm create-process để tạo z Tiến trình cha có thể có
một tiến trình mới nhiều tiến trình con
z Tiến trình gọi đến hàm create-process là tiến z Mỗi tiến trình con chỉ có P1
trình cha (parent process) một tiến trình cha
z Tiến trình được tạo ra sau khi thực hiện hàm z Các tiến trình con có P11 P12
create-process là tiến trình con (child process) thể tạo ra các tiến trình
con khác…
z Sau khi tiến trình con được tạo, tiến trình cha P111 P121 P122
có thể:
z Chờ tiến trình con kết thúc rồi tiếp tục thực hiện
z Thực hiện “song song” với tiến trình con 17
P1111 P1112
18

3
Minh họa tiến trình cha và con Kết thúc tiến trình
Tiến trình
cha gọi z Một tiến trình kết thúc khi:
create-process Tiến trình con z Thực hiện xong và gọi hàm hệ thống exit (kết
thúc bình thường)
z Gọi đến hàm abort hoặc kill (kết thúc bất thường
khi có lỗi hoặc có sự kiện)
z Bị hệ thống hoặc tiến trình cha áp dụng hàm
abort hoặc kill do:
Có thể gọi hoặc z Sử dụng quá quota tài nguyên
không gọi wait để Gọi exit để kết thúc
z Tiến trình con không còn cần thiết
chờ/không chờ
z Khi tiến trình cha đã kết thúc (trong một số HĐH)
tiến trình con kết thúc
19 20

Minh họa tiến trình trong UNIX Hợp tác giữa các tiến trình
#include <stdio.h>
main() z Các tiến trình có thể hoạt động độc lập hoặc
{ hợp tác với nhau
int pid=fork(); /* Tạo tiến trình mới bằng hàm fork() */
z Các tiến trình cần hợp tác khi:
if (pid<0) { perror(“Cannot create process”); return(-1); }
else if (pid==0) { /* Tiến trình con */ z Sử dụng chung thông tin
execlp(); z Thực hiện một số nhiệm vụ chung
} z Tăng tốc độ tính toán
else { /* Tiến trình cha */
wait(NULL); /* Nếu không có lệnh này tiến trình cha thực hiện z …
“song song” với tiến trình con */ z Để hợp tác các tiến trình, cần có các cơ chế
printf(“Child completed\n”); truyền thông/liên lạc giữa các tiến trình
return(0);
}
(Interprocess communication – IPC)
21 22
}

Các hệ thống truyền thông điệp


Truyền thông giữa các
Cho phép các tiến trình truyền thông với
tiến trình (IPC) z
nhau qua các toán tử send và receive
z Các tiến trình cần có tên để tham chiếu
z Cần có một kết nối (logic) giữa tiến trình P và
Q để truyền thông điệp
z Một số loại truyền thông:
z Trực tiếp hoặc gián tiếp
z Đối xứng hoặc không đối xứng
z Sử dụng vùng đệm tự động hoặc không tự động
23 24

4
Truyền thông trực tiếp Minh họa truyền thông trực tiếp
z Hai toán tử z Mỗi kết nối được thiết
z send(P, msg): Gửi msg đến tiến trình P lập cho một cặp tiến
P2
trình duy nhất P1
z receive(Q, msg): Nhận msg từ tiến trình Q P3
z Mỗi tiến trình chỉ cần
z Cải tiến: biết tên/số hiệu của tiến
z send(P, msg): Gửi msg đến tiến trình P trình kia là truyền thông
z receive(id, msg): Nhận msg từ bất kỳ tiến trình được P6
nào z Tồn tại duy nhất một
kết nối giữa một cặp P5 P4
tiến trình
25 26

Truyền thông gián tiếp Minh họa truyền thông gián tiếp
z Các thông điệp được gửi và nhận qua các z Hai tiến trình có kết nối
hộp thư (mailbox) hoặc qua các cổng (port) nếu sử dụng chung một
P2
hộp thư P1
z Hai toán tử: P3
z Một kết nối có thể sử
z send(A, msg): Gửi msg đến hộp thư A dụng cho nhiều tiến Hộp
thư
z receive(B, msg): Nhận msg từ hộp thư B trình (>=2) A Hộp
thư
z Minh họa: Topo mạng hình sao z Nhiều kết nối có thể tồn P6 B
tại giữa một cặp tiến
trình (nếu sử dụng các P5 P4
hộp thư khác nhau)
27 28

Vấn đề đồng bộ hóa Các phương thức send/receive


z Thuật ngữ: Synchronization send(P, msg) receive(Q, msg)
z Liên quan tới phương thức cài đặt các toán Blocking Tiến trình truyền thông Tiến trình nhận
tử send và receive: điệp chờ đến khi msg tạm dừng thực
z Phương thức có chờ (blocking) được nhận hoặc msg hiện cho đến khi
z Phương thức không chờ (non-blocking) được phân phát đến msg được chuyển
hộp thư tới
Non-blocking Tiến trình truyền không Tiến trình nhận trả
phải chờ msg đến đích lại kết quả là msg
để tiếp tục thực hiện (nếu nhận được)
hoặc báo lỗi (nếu
29
chưa nhận được) 30

5
Vấn đề sử dụng vùng đệm Luồng (thread)
z Các thông điệp nằm trong hàng chờ tạm thời z Sinh viên tự tìm hiểu trong giáo trình trang
z Cỡ của hàng chờ:
z Chứa được 0 thông điệp: send blocking
z Chứa được n thông điệp: send non-blocking cho
đến khi hàng chờ có n thông điệp, sau đó send
blocking
z Vô hạn: send non-blocking

31 32

Tóm tắt Bài tập


z Khái niệm tiến trình z Viết chương trình C trong Linux/Unix tạo ra
z Các trạng thái, chuyển trạng thái tiến trình 16 tiến trình con. Tiến trình cha chờ cho 16
z Khối điều khiển tiến trình tiến trình con này kết thúc rồi mới kết thúc
bằng hàm exit. Sử dụng các hàm fork và
z Lập lịch tiến trình, các loại bộ lập lịch wait để thực hiện yêu cầu.
z Truyền thông giữa các tiến trình z Hãy tìm một số ví dụ thực tế minh họa cho
z Gián tiếp, trực tiếp các khái niệm lập lịch/hàng chờ trong tình
z Blocking và non-blocking (đồng bộ hóa) huống có nhiều người sử dụng và ít tài
z Vấn đề sử dụng vùng đệm (buffer) nguyên.
33 34

Bài tập
z Hãy viết chương trình minh họa cho các cơ
chế truyền thông non-blocking, blocking
z Hãy viết chương trình minh họa các cơ chế
truyền thông điệp sử dụng buffer có độ dài n
trong hai trường hợp: n>0 và n=0
z Chú ý: Để làm hai bài tập trên cần sử dụng
hai tiến trình; có thể thực hiện bài tập với
UNIX/Linux hoặc Windows

35

You might also like