Tải bản đầy đủ (.pdf) (6 trang)

Tiến trình nguyên lý hệ điều hành

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (273.97 KB, 6 trang )

1
1
Nguyên lý hệđiềuhành
NguyễnHải Châu
Khoa Công nghệ thông tin
Trường Đạihọc Công nghệ
2
Khái niệmtiếntrình
3
Tiếntrìnhlàgì?
z Thuật ngữ: Process
(tiến trình/quá trình)
z Là một chương trình
đang được thực hiện
z Đượcxemlàđơnvị
làm việc trong các HĐH
z Có hai loạitiến trình:
z Tiếntrìnhcủa HĐH
z TiếntrìnhcủaNSD
4
Tiếntrìnhgồmcó…
z Đoạnmãlệnh (code, có sách gọilàtext)
z Đoạndữ liệu
z Đoạnngănxếp và heap (stack/heap)
z Các hoạt động hiệntại đượcthể hiện qua
con đếmlệnh (IP) và nội dung các thanh ghi
(registers) củabộ xử lý
z Chú ý:
z Tiếntrìnhlàthựcthể chủđộng
z Chương trình là thựcthể bịđộng
5


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

Giớihạnbộ nhớ
Danh sách các tệp đang mở

Con trỏ Trạng thái tiếntrình
2
7
Lậplịch tiếntrình
8
Tạisaophảilậplịch?
z Số lượng NSD, số lượng tiến trình luôn lớn
hơnsố lượng CPU củamáytínhrất nhiều
z Tạimộtthời điểm, chỉ có duy nhấtmộttiến
trình đượcthựchiệntrênmộtCPU
z Vấn đề:
z Số lượng yêu cầusử dụng nhiềuhơnsố lượng tài
nguyên đangcó(CPU)
z Do đócầnlậplịch để phân phốithờigiansử dụng
CPU cho các tiếntrìnhcủa NSD và hệ thống
9
Hàng chờ lậplịch
z Thuậtngữ: Queue
z Các tiếntrìnhchưa được phân phốisử dụng
CPU sẽđược đưavàohàng chờ (queue)
z Có thể có nhiềuhàngchờ trong hệ thống:
Hàng chờ sử dụng CPU, hàng chờ sử dụng
máy in, hàng chờ sử dụng ổđĩa CD…
z Trong suốtthờigiantồntại, tiến trình phảidi
chuyểngiữa các hàng chờ
10
Hàng chờ lậplịch tiếntrình

Hàng chờ sẵn
sàng thựchiện
Hàng chờ vào/ra
Yêu cầuvào/ra
Hếtthờigian
sử dụng CPU
Tạomộttiến
trình con
Chờ ngắt
CPU
Vào/ra
Tiếntrìnhcon
thựchiện
Ngắtxuấthiện
11
Phân loạicácbộ lậplịch
z Bộ lậplịch dài hạn (long-term scheduler)
z Thường dùng trong các hệ xử lý theo lô
z Đưatiếntrìnhtừ spool vào bộ nhớ trong
z Bộ lậplịch ngắnhạn (short-term scheduler)
z Còn gọilàbộ lậplịch CPU
z Lựachọntiếntrìnhtiếptheođượcsử dụng CPU
z Bộ lậplịch trung hạn (medium-term scheduler)
z Hay còn gọi là swapping (tráo đổi)
z Di chuyểntiếntrìnhđang trong trạng thái chờ giữa
bộ nhớ trong và bộ nhớ ngoài
12
Minh họabộ lậplịch trung hạn
CPU
Hàng chờ vào/ra

Hàng chờ sẵn
sàng thựchiện
Các tiếntrình
đang thựchiện
dở bị swap out
Vào/ra
swap out
swap in
3
13
Hàng chờ lậplịch tiếntrình
Hàng chờ sẵn
sàng thựchiện
Hàng chờ vào/ra Yêu cầuvào/ra
Hếtthờigian
sử dụng CPU
Tạomộttiến
trình con
Chờ ngắt
CPU
Vào/ra
Tiến trình con
thựchiện
Ngắtxuấthiện
Các tiếntrìnhđang thực
hiệndở bị swap out
swap outswap in
14
Chuyểntrạng thái
z Thuậtngữ: Context switch

z XảyrakhimộttiếntrìnhA bị ngắtrakhỏi
CPU, tiếntrìnhB bắt đầu đượcsử dụng CPU
z Cách thựchiện:
z Nhân HĐH ghi lại toàn bộ trạng thái củaA, lấytừ
PCB (khối điềukhiểntiến trình) củaA
z ĐưaA vàohàngchờ
z Nhân HĐH nạptrạng thái củaB lấytừ PCB củaB
z ThựchiệnB
15
Chuyểntrạng thái
z Việcchuyểntrạng thái, nói chung, là lãng phí
thờigiancủaCPU
z Do đóviệc chuyểntrạng thái cần đượcthực
hiệncàngnhanhcàngtốt
z Thông thường thời gian chuyểntrạng thái
mấtkhoảng 1-1000 micro giây
16
Các thao tác với
tiếntrình
17
Tạotiếntrình
z HĐH cung cấp hàm create-process để tạo
mộttiếntrìnhmới
z Tiếntrìnhgọi đếnhàmcreate-process là tiến
trình cha (parent process)
z Tiếntrìnhđượctạorasaukhithựchiệnhàm
create-process là tiến trình con (child process)
z Sau khi tiến trình con đượctạo, tiến trình cha
có thể:
z Chờ tiến trình con kết thúc rồitiếptụcthựchiện

z Thựchiện “song song” vớitiến trình con
18
Cây tiếntrình
z Tiến trình cha có thể có
nhiềutiếntrìnhcon
z Mỗitiến trình con chỉ có
mộttiến trình cha
z Các tiếntrìnhcon có
thể tạoracáctiếntrình
con khác…
P
1
P
11
P
12
P
121
P
122
P
111
P
1111
P
1112
4
19
Minh họatiến trình cha và con
create-process

Gọi exit để kếtthúc
Tiếntrình
cha gọi
Tiếntrìnhcon
Có thể gọihoặc
không gọi wait để
chờ/không chờ
tiến trình con kếtthúc
20
Kết thúc tiếntrình
z Mộttiếntrìnhkếtthúckhi:
z Thựchiệnxongvàgọihàmhệ thống exit (kết
thúc bình thường)
z Gọi đến hàm abort hoặc kill (kếtthúcbấtthường
khi có lỗihoặccósự kiện)
z Bị hệ thống hoặctiến trình cha áp dụng hàm
abort hoặc kill do:
z Sử dụng quá quota tài nguyên
z Tiến trình con không còn cầnthiết
z Khi tiếntrìnhcha đãkết thúc (trong mộtsố HĐH)
21
Minh họatiếntrìnhtrongUNIX
#include <stdio.h>
main()
{
int pid=fork(); /* Tạotiếntrìnhmớibằng hàm fork() */
if (pid<0) { perror(“Cannot create process”); return(-1); }
else if (pid==0) { /* Tiến trình con */
execlp();
}

else { /* Tiếntrìnhcha */
wait(NULL); /* Nếu không có lệnh này tiến trình cha thựchiện
“song song” vớitiến trình con */
printf(“Child completed\n”);
return(0);
}
}
22
Hợptácgiữacáctiếntrình
z Các tiếntrìnhcóthể hoạt động độclập hoặc
hợptácvớinhau
z Các tiếntrìnhcầnhợptáckhi:
z Sử dụng chung thông tin
z Thựchiệnmộtsố nhiệmvụ chung
z Tăng tốc độ tính toán
z …
z Để hợptáccáctiếntrình, cầncócáccơ chế
truyền thông/liên lạcgiữacáctiếntrình
(Interprocess communication – IPC)
23
Truyền thông giữacác
tiếntrình(IPC)
24
Các hệ thống truyền thông điệp
z Cho phép các tiếntrìnhtruyền thông với
nhau qua các toán tử send và receive
z Các tiếntrìnhcầncótên để tham chiếu
z Cầncómộtkếtnối(logic) giữatiếntrìnhP và
Q để truyền thông điệp
z Mộtsố loạitruyền thông:

z Trựctiếphoặcgiántiếp
z Đốixứng hoặckhôngđốixứng
z Sử dụng vùng đệmtựđộng hoặckhôngtựđộng
5
25
Truyền thông trựctiếp
z Hai toán tử
z send(P, msg): Gửi msg đếntiếntrìnhP
z receive(Q, msg): Nhận msg từ tiếntrìnhQ
z Cảitiến:
z send(P, msg): Gửi msg đếntiếntrìnhP
z receive(id, msg): Nhận msg từ bấtkỳ tiếntrình
nào
26
Minh họatruyền thông trựctiếp
z Mỗikếtnối đượcthiết
lậpchomộtcặptiến
trình duy nhất
z Mỗitiếntrìnhchỉ cần
biếttên/số hiệucủatiến
trình kia là truyền thông
được
z Tồntại duy nhấtmột
kếtnốigiữamộtcặp
tiếntrình
P
1
P
2
P

3
P
6
P
5
P
4
27
Truyền thông gián tiếp
z Các thông điệp đượcgửivànhận qua các
hộpthư (mailbox) hoặc qua các cổng (port)
z Hai toán tử:
z send(A, msg): Gửi msg đếnhộpthư A
z receive(B, msg): Nhận msg từ hộpthư B
z Minh họa: Topo mạng hình sao
28
Minh họatruyềnthônggiántiếp
z Hai tiếntrìnhcókếtnối
nếusử dụng chung một
hộpthư
z Mộtkếtnốicóthể sử
dụng cho nhiềutiến
trình (>=2)
z Nhiềukếtnốicóthể tồn
tạigiữamộtcặptiến
trình (nếusử dụng các
hộpthư khác nhau)
P
1
P

2
P
3
P
6
P
5
P
4
Hộp
thư
A
Hộp
thư
B
29
Vấn đề đồng bộ hóa
z Thuậtngữ: Synchronization
z Liên quan tớiphương thứccàiđặt các toán
tử send và receive:
z Phương thứccóchờ (blocking)
z Phương thức không chờ (non-blocking)
30
Các phương thứcsend/receive
Tiếntrìnhnhậntrả
lạikếtquả là msg
(nếunhận được)
hoặcbáolỗi(nếu
chưanhận được)
Tiếntrìnhtruyền không

phảichờ msg đến đích
để tiếptụcthựchiện
Non-blocking
Tiếntrìnhnhận
tạmdừng thực
hiệnchođếnkhi
msg đượcchuyển
tới
Tiếntrìnhtruyềnthông
điệpchờđếnkhimsg
đượcnhậnho
ặc msg
đượcphânphátđến
hộpthư
Blocking
receive(Q, msg)send(P, msg)
6
31
Vấn đề sử dụng vùng đệm
z Các thông điệpnằm trong hàng chờ tạmthời
z Cỡ củahàngchờ:
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
32
Luồng (thread)
z Sinh viên tự tìm hiểu trong giáo trình trang
33

Tóm tắt
z Khái niệmtiếntrình
z Các trạng thái, chuyểntrạng thái tiếntrình
z Khối điềukhiểntiếntrình
z Lậplịch tiến trình, các loạibộ lậplịch
z Truyền thông giữacáctiếntrình
z Gián tiếp, trựctiếp
z Blocking và non-blocking (đồng bộ hóa)
z Vấn đề sử dụng vùng đệm (buffer)
34
Bài tập
z Viếtchương trình C trong Linux/Unix tạora
16 tiếntrìnhcon. Tiến trình cha chờ cho 16
tiến trình con này kếtthúcrồimớikết thúc
bằng hàm exit. Sử dụng các hàm fork và
wait để thựchiệnyêucầu.
z Hãy tìm mộtsố ví dụ thựctế minh họacho
các khái niệmlậplịch/hàng chờ trong tình
huống có nhiềungườisử dụng và ít tài
nguyên.
35
Bài tập
z Hãy viếtchương trình minh họachocáccơ
chế truyền thông non-blocking, blocking
z Hãy viếtchương trình minh họacáccơ chế
truyền thông điệpsử 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ậptrêncầnsử dụng
hai tiến trình; có thể thựchiệnbàitậpvới
UNIX/Linux hoặc Windows

×