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

Bài giảng 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 (3.92 MB, 87 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
Mụctiêucủamônhọc
z Cung cấp những khái niệm cơ bản về hệ điều
hành máy tính: phân loại, nguyên lý, cách làm
việc, phân tích thiết kế và chi tiết về một số hệ
điều hành cụ thể
z Yêu cầu sinh viên: Nắm vững các nguyên lý
cơ bản, làm tốt các bài tập để lấy đólàm cơ
sở - nguyên lý cho các vấn đề khác trong thiết
kế và cài đặt các hệ thống thông tin
z Chú ý liên hệ nội dung môn học với các tình
huống thực tế về khía cạnh quản lý, tổ chức
3
Nội dung
z Gồmcó6 phần chính:
z Tổng quan (3 tiết)
z Quảnlýtiến trình (12 tiết)
z Quảnlýlưutrữ (12 tiết)
z Hệ vào/ra (9 tiết)
z Bảovệ và an ninh (6 tiết)
z HệđiềuhànhLinux (optional) + Ôn tập(3 tiết)
4
Tài liệuthamkhảo
z Abraham Silberschatz, Peter Baer Galvin, Greg Gagne, Operating
System Concepts, 7th edition, John Wiley & Sons, Inc., 2005.


z William Stallings, Operating Systems: Internals and Design Principles
5th edition, Prentice-Hall, 2005.
z Andrew S. Tanenbaum, Modern Operating Systems, 2nd edition,
Prentice-Hall, 2001.
z Andrew S. Tanenbaum, Albert S Woodhull, Operating Systems: Design
and Implementation, 3rd edition, Prentice-Hall. 2006. (Có mã nguồnkèm
theo).
z Hà Quang Thụy, Nguyên lý hệđiều hành, NXB KHKT, 2002.
z Robert Love, Linux Kernel Development, Sams Publishing, 2003.
z Daniel P. Bovet, Marco Cesati, Understanding Linux Kernel, 2nd edition,
O'Reilly & Associates, 2002.
z W. Richard Stevens, Advanced Programming in the UNIX Environment,
Addison-Wesley, 1992.
5
Giáo trình
6
Bản điệntử củagiáotrình
z Website củaBộ môn Các hệ thống thông tin:
/>z Chọn“Góchọctập” ở menu bên trái
z Chọn “Nguyên lý hệđiều hành” ở phầnnội
dung chính củatrangweb
z Download sách theo chỉ dẫn
Simpo PDF Merge and Split Unregistered Version -
2
7
Thi và kiểm tra
z Kiểm tra giữa kỳ: viết, 45-60 phút
z Là điều kiện bắt buộc để được thi cuối kỳ
z Sau phần quản lý bộ nhớ/lưu trữ
z Được sử dụng tài liệu

z Thi cuối kỳ:
z Thi viết 60-90 phút
z Được sử dụng tài liệu
8
Giớithiệu
9
Máy tính - tài nguyên máy tính
z Tài nguyên:
z CPU
z Bộ nhớ trong
z Đĩa cứng
z Thiết bị ngoại vi (máy in,
màn hình, bàn phím, card
giao tiếp mạng, USB )
10
Hệđiềuhànhlàgì?
z Hệđiều hành là mộtchương trình “trung gian”
(nhân – kernel) giữa NSD và máy tính :
z Quảnlýphầncứng máy tính (các tài nguyên)
z Cung cấp cho NSD môi trường làm việc tiệnlợi và
hiệuquả
Hệ
điều
hành
11
Các
chương
trình
hệ thống


ứng dụng
Hệ thống máy tính
Hệ
điều
hành
Phầncứng
Ngườisử dụng
12
Haicáchnhìnhệđiềuhành
z Phầncứng: Quảnlý& cấp phát tài nguyên để
sử dụng tối đa năng lực phần cứng
z Ngườisử dụng: Dễ sử dụng, hiệuquả, ứng
dụng phong phú
Hệ
điều
hành
Phầncứng
Người
sử
dụng
Simpo PDF Merge and Split Unregistered Version -
3
13
Mộtsố loạihệđiềuhành
z Xử lý theo lô (batch processing)
z Đachương trình (multiprogramming)
z Phân chia thời gian (time-sharing/multitasking)
z Hệđiều hành cho máy cá nhân
z Xử lý song song (parallel)
z Thờigianthực (real-time)

z Nhúng (embedded)
z Cầm tay (portable)
z Đaphương tiện (multimedia)
z Chuyên dụng (special-purpose)
14
Các hệ xử lý theo lô đơngiản
z Thuậtngữ: Batch processing
z Các chương trình được đưa vào hàng chờ
z Máy tính thựchiệntuầntự các chương trình
củangườisử dụng
z Chương trình không có giao tiếpvớingười
sử dụng
15
Đachương trình
z Thuậtngữ: Multiprogramming
z Các chương trình đượcxếphàng
z Mộtchương trình đượcthựchiệnvàchiếm
giữ CPU cho đến khi (1) có yêu cầu vào/ra,
hoặc(2) kếtthúc
z Khi (1) hoặc(2) xảyra, chương trình khác sẽ
đượcthựchiện
z Tậndụng CPU tốthơnxử lý theo lô đơngiản
16
Phân chia thờigian/đanhiệm
Máy tính
Trạmlàmviệc
Trạmlàmviệc
Ngườisử dụng
Thờigian
z Thuậtngữ: time-sharing hoặc multitasking

17
Mộtsố hệđiềuhành
z UNIX (UNiplexed Information and Computing
Service): (1) AT&T System V (2) Berkeley
(BSD)
z AIX dựa trên System V (IBM)
z HP-UX dựa trên BSD (Hewlett-Packard)
z IRIX dựa trên System V (Silicon Graphics Inc.)
z Linux
z Solaris, SunOS (Sun Microsystems)
z Minix
18
Mộtsố hệđiềuhành
z Windows (Microsoft): Windows 3.x, Windows
95, Windows 98, Windows 2000, Windows
NT, Windows XP, Windows Vista
z Mac OS, Mac OS X (Apple Inc.)
z BeOS
z OS 9
z OS/2
z DOS
z PalmOS, Symbian
Simpo PDF Merge and Split Unregistered Version -
4
19
Cấutrúchệđiềuhành
20
Các thành phầncủahệ thống
z Quảnlýtiếntrình
z Quảnlýbộ nhớ trong

z Quảnlýtệp
z Quản lý vào/ra
z Quảnlýlưutrữ trên bộ nhớ ngoài
z Liên kếtmạng
z Bảovệ và an ninh
z Thông dịch lệnh
21
Các dịch vụ củahệđiềuhành
z Giao diệnvớingườisử dụng
z Thựchiệncácchương trình
z Thựchiện các thao tác vào/ra
z Quảnlýhệ thống tệp
z Truyền thông
z Phát hiệnlỗi
z Cấp phát tài nguyên
z “Kế toán”
z Đưaracáccơ chế bảovệ và an ninh
22
Các hàm hệ thống
z Các hàm hệ thống (system calls) cung cấp
giao diệnlậptrìnhtớicácdịch vụ do hệđiều
hành cung cấp
z Ví dụ trong hệđiềuhànhUnix:
z Tạomộttiếntrìnhmới: fork();
z Thoát khỏitiếntrìnhđang thựchiện: exit(1);
z fork và exit là các hàm hệ thống (Hàm HT)
23
Hàm HT điềukhiểntiếntrình
z Kếtthúctiến trình bình thường/bấtthường
z Nạp, thựchiệntiếntrình

z Tạo, kết thúc tiếntrình
z Đọchoặcthiếtlậpcácthuộc tính cho tiến
trình
z Yêu cầutiếntrìnhvàotrạng thái chờ
z Cấpphátvàgiải phóng bộ nhớ
z Xử lý các sự kiện không đồng bộ
24
Hàm HT quảntrị tệp
z Tạo, xóa tệp
z Đóng, mở tệp
z Đọc, ghi, định vị con trỏ tệp
z Đọc, thiếtlậpthuộc tính củatệp
Simpo PDF Merge and Split Unregistered Version -
5
25
Hàm HT quảntrị thiếtbị
z Yêu cầusử dụng hoặcthôisử dụng thiếtbị
z Đọc, ghi, định vị con trỏ
z Đọc, thiếtlậpthuộc tính cho thiếtbị
z Attach/detach thiếtbị về mặt logic
26
Hàm HT bảo trì thông tin
z Đọc, thiếtlậpthờigianhệ thống
z Đọc, ghi dữ liệuvề hệ thống
z Đọcthuộc tính tệp, thiếtbị, tiếntrình
z Thiếtlậpthuộc tính tệp, thiếtbị, tiếntrình
27
Hàm HT về truyền thông
z Tạo, hủycáckếtnốimạng
z Truyềnnhận các thông điệp

z Lấy thông tin trạng thái truyền thông
z Attach/detach các thiếtbịởxa
28
Các chương trình hệ thống
z Các chương trình hệ thống cung cấpmôitrường
thuậntiệnchoviệcthựchiện và phát triển
chương trình. Chúng được phân loạinhư sau:
z Thao tác vớitệp
z Thông tin về trạng thái củahệ thống
z Sửa đổitệp
z Hỗ trợ ngôn ngữ lậptrình
z Nạpvàthựchiệnchương trình
z Truyền thông
z Cách nhìn HĐH củaNSD đượcxácđịnh qua các
chương trình hệ thống, không thựcsự qua các hàm
hệ thống (system calls).
29
Cấutrúc HĐH: Đơngiản
z Thuậtngữ: Simple approach
z Ví dụ MS-DOS. (tương tự: UNIX thờigian
đầu)
Chương trình ứng dụng
Chương trình resident
Điềukhiểnthiếtbị
Điềukhiểnthiếtbị của
ROM-BIOS
30
Cấutrúc HĐH: Phân tầng
z Thuậtngữ: Layered apparoach
Simpo PDF Merge and Split Unregistered Version -

6
31
Cấutrúc HĐH: Phân tầng
z Ví dụ UNIX
32
Cấutrúc HĐH: Vi nhân
z Thuậtngữ: Microkernel
z Giữ chonhâncócácđủ các chứcnăng thiết
yếunhất để giảmcỡ
z Các chứcnăng khác được đưarangoài
nhân
z Ví dụ: Mach, Tru64 UNIX, QNX
33
Cấutrúc HĐH: Module
z Thuậtngữ: Module approach
z Hiệntại đây là cách tiếpcậntốtnhất(sử
dụng đượccáckỹ thuậtlậptrìnhhướng đối
tượng). Ví dụ: Solaris của Sun Microsystem:
34
Máy ảo
z Thuậtngữ (Virtual Machine)
z Ví dụ: VMware (sảnphẩmthương mại)
35
Tóm tắt
z Khái niệm HĐH, nhân
z Hai cách nhìn HĐH từ NSD và hệ thống
z Các khái niệmxử lý theo lô, đachương trình
và phân chia thờigian
z Các thành phầnvàdịch vụ của HĐH
z Các hàm hệ thống

z Mộtsố cấutrúcphổ biếncủa HĐH
z Máy ảo
36
Tìm hiểuthêm
z Không bắtbuộc
z Bổ sung mộthàmhệ thống mới vào nhân
Linux và sử dụng hàm đó:
z Đọchướng dẫn trong giáo trình từ trang 74-78
z Thử nghiệm trên RedHat Fedora hoặc
Ubuntu/Debian
Simpo PDF Merge and Split Unregistered Version -
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
Simpo PDF Merge and Split Unregistered Version -
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
Simpo PDF Merge and Split Unregistered Version -
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
Simpo PDF Merge and Split Unregistered Version -
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
Simpo PDF Merge and Split Unregistered Version -
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)
Simpo PDF Merge and Split Unregistered Version -
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
Simpo PDF Merge and Split Unregistered Version -
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
Lậplịch CPU
3
Tạisaophảilậplịch CPU?
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 Nhu cầusử dụng nhiềuhơn tài nguyên (CPU)
đang có
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
4
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
5
CPU-burst và IO-burst
z Trong suốtthờigiantồntạitronghệ thống,
tiếntrìnhđược xem như thựchiệnhailoại
công việcchính:
z Khi tiếntrìnhở trạng thái running: Sử dụng CPU
(thuậtngữ: CPU-burst)

z Khi tiếntrìnhthựchiện các thao tác vào ra: Sử
dụng thiếtbị vào/ra (thuậtngữ: I/O burst)
6
Microsoft
Office
Outlook
CPU-burst
Adobe
Photoshop
CPU-burst
Simpo PDF Merge and Split Unregistered Version -
2
7
Hai loạitiếntrìnhchính
z Căn cứ theo cách sử dụng CPU của tiến
trình, có hai loại tiến trình:
z Tiếntrìnhloại CPU-bound: Tiếntrìnhcómộthoặc
nhiều phiên sử dụng CPU dài
z Tiếntrìnhloại I/O-bound: Tiến trình có nhiều
phiên sử dụng CPU ngắn(tứclàthờigianvàora
nhiều)
8
Bộ lậplịch ra hoạt động khi…
1. Mộttiến trình chuyểntừ trạng thái running
sang waiting
2. Mộttiến trình chuyểntừ trạng thái running
sang ready
3. Mộttiến trình chuyểntừ trạng thái waiting
sang ready
4. Mộttiếntrìnhkếtthúc

9
Các phương pháp lậplịch
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
2
1
3
4
z 1 và 4: Lậplịch non-preemptive
z Ngượclại: Lậplịch preemptive
10
Lậplịch non-preemptive
z Mộttiếntrìnhgiữ CPU đếnkhinókết thúc
hoặcchuyển sang trạng thái waiting.
z Ví dụ: Microsoft Windows 3.1, Apple
Macintosh sử dụng lậplịch non-preemptive
z Có thể sử dụng trên nhiềuloạiphầncứng vì
không đòi hỏitimer
11

Lậplịch preemptive
z Hiệuquả hơnlậplịch non-preemptive
z Thuậttoánphứctạphơn non-preemptive và
sử dụng nhiều tài nguyên CPU hơn
z Ví dụ: Microsoft Windows XP, Linux, UNIX
sử dụng lậplịch preemptive
12
Bộđiềuphối (dispatcher)
z Nhiệmvụ:
z Chuyểntrạng thái (context switch)
z Chuyểnvề user-mode
z Thựchiệntiến trình theo trạng thái đãlưu
z Cầnhoạt động hiệuquả (tốc độ nhanh)
z Thờigiancần để bộđiềuphốidừng mộttiến
trình và thựchiệntiến trình khác gọilàđộ trễ
(latency) củabộđiềuphối
Simpo PDF Merge and Split Unregistered Version -
3
13
Các tiêu chí đánh giá lậplịch
z Khả năng tậndụng CPU (CPU utilization):
Thể hiệnqua tảiCPU –làmộtsố từ 0% đến
100%.
z Trong thựctế các hệ thống thường có tảitừ 40%
(tảithấp) đến 90% (tảicao)
z Thông lượng (throughput): Là số lượng các
tiến trình hoàn thành trong một đơnvị thời
gian
14
Các tiêu chí đánh giá lậplịch

z Thời gian hoàn thành (turnaround time):
z t
turnaround
= t
o
-t
i
với t
i
là thời điểmtiếntrìnhvàohệ
thống, t
o
là thời điểmtiếntrìnhrakhỏihệ thống
(kếtthúcthựchiện)
z Như vậy t
turnaround
là tổng: thờigiantảivàobộ nhớ,
thờigianthựchiện, thời gian vào ra, thờigian
nằm trong hàng chờ…
15
Các tiêu chí đánh giá lậplịch
z Thờigianchờ (waiting time): Là tổng thời
gian tiến trình phảinằm trong hàng chờ
ready (t
waiting
)
z Các thuậttoánlậplịch CPU không có ảnh hưởng
đếntổng thờigianthựchiệnmộttiến trình mà chỉ
có ảnh hưởng đếnthờigianchờ củamộttiến
trình trong hàng chờ ready

z Thờigianchờ trung bình (average waiting time):
t
averagewaiting
=t
waiting
/ n, n là số lượng tiến trình trong
hàng chờ
16
Các tiêu chí đánh giá lậplịch
z Thờigianđáp ứng (response time): Là
khoảng thờigiantừ khi tiếntrìnhnhận được
mộtyêucầuchođếnkhibắt đầu đáp ứng
yêu cầu đó
z t
res
= t
r
– t
s
, trong đó t
r
là thời điểmnhậnyêu
cầu, t
s
là thời điểmbắt đầu đáp ứng yêu cầu
17
Đánh giá các thuậttoánlậplịch
XấuTốtThờigianđáp ứng (response
time)
XấuTốtThờigianchờ (waiting time)

-> Thờigianchờ trung bình
XấuTốtThờigianhoànthành
(turnaround time)
TốtXấuThông lượng (throughput)
TốtXấuKhả năng tậndụng CPU
(CPU utilization)
Giá trị caoGiá trị thấpTiêu chí
18
Các thuậttoánlậplịch
Simpo PDF Merge and Split Unregistered Version -
4
19
FCFS (First Come First Served)
z Tiến trình nào có yêu cầusử dụng CPU
trướcsẽđượcthựchiệntrước
z Ưu điểm: Thuậttoánđơngiảnnhất
z Nhược điểm: Hiệuquả củathuậttoánphụ
thuộcvàothứ tự củacáctiến trình trong hàng
chờ, vì thứ tự này ảnh hưởng rấtlớn đến thời
gian chờ trung bình (average waiting time)
20
Ví dụ FCFS 1a
z Giả sử có 3 tiếntrìnhP
1
, P
2
, P
3
vớithờigian
thựchiệntương ứng là 24ms, 3ms, 6ms

z Giả sử 3 tiếntrìnhxếphàngtheothứ tự P
1
, P
2
,
P
3
. Khi đótacóbiểu đồ Gantt như sau:
z Thờigianchờ củacáctiếntrìnhlà: P
1
chờ
0ms, P
2
chờ 24ms, P
3
chờ 27ms
z Thờigianchờ trung bình: (0+24+27)/3=17ms
P
1
P
2
P
3
0242733
21
Ví dụ FCFS 1b
z Xét ba tiếntrìnhtrongvídụ 1a vớithứ tự xếp
hàng P
3
, P

2
, P
1
z Biểu đồ Gantt:
z Thờigianchờ củacáctiếntrìnhlà: P
3
chờ
0ms, P
2
chờ 6ms, P
3
chờ 9ms
z Thờigianchờ trung bình: (0+6+9)/3=5ms
z Thờigianchờ trung bình thấphơnthờigian
chờ trung bình trong ví dụ 1a
P
1
P
2
P
3
069 33
22
Hiệntượng “đoàn hộ tống”
z Thuậtngữ: convoy effect
z Xảyrakhicómộttiến trình “lớn” P nằm ởđầu
hàng chờ và nhiềutiến trình “nhỏ” Q
i
xếphàng
sau P.

z “Lớn”: Sử dụng nhiềuthờigianCPU vàvàora
z “Nhỏ”: Sử dụng ít thời gian CPU và vào ra
z Thuậttoánlậplịch đượcsử dụng là FCFS.:
z Hiệntượng xảy ra: CPU, thiếtbị vàoracónhiều
thờigianrỗi, thờigianchờ trungbìnhcủacác
tiến trình cao
23
Ví dụ convoy effect
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
Q
3
(10) Q
2
(10) Q
1
(10) P (40)
P (50) Q

1
(10) Q
2
(10) Q
3
(10)
24
Convoy effect: Thờigiansử
dụng CPU và thiếtbị vào ra
Thiếtbị
vào ra
CPU
0
40 50 60 70
P
Q
1
Q
2
Q
3
40
0
Rỗi
90
P
90
Rỗi
Q
1

Q
2
Q
3
100 110 120 130
130
P
Rỗi
140
Q
1
Q
2
Q
3
150 160 180
180
P
z Giả sử P là tiến trình “lớn” có chu kỳ sử dụng CPU trong 40ms
và vào ra trong 50ms
z Q
1
, Q
2
, Q
3
là 3 tiến trình “nhỏ”cóchukỳ sử dụng CPU trong
10ms và vào ra trong 10ms
z Thứ tự xếp hàng: P, Q
1

, Q
2
, Q
3
Rỗi
Simpo PDF Merge and Split Unregistered Version -
5
25
SJF (Shortest Job First)
z Với SJF, tham số lậplịch có thêm độ dài của
phiên sử dụng CPU tiếp theo t
nextburst
z Tiếntrìnhcót
nextburst
nhỏ nhấtsẽđượclập
lịch sử dụng CPU trước
z Nếu hai tiếntrìnhcót
nextburst
bằng nhau thì
FCFS đượcápdụng
26
SJF (Shortest Job First)
z Vớilậplịch dài hạn: Có thể biết t
nextburst
vì có
tham số chỉ ra thờigianchạycủatiếntrìnhkhi
đưatiếntrìnhvàohệ thống (job submit)
z Khó khăn: Chỉ có thể phỏng đoán được t
nextburrt
vớilậplịch ngắnhạn

z Đọc ở nhà: Dựđoán t
nextburst
bằng công thức
trung bình mũ (exponential average) trang
160-162 trong giáo trình
z SJF không tối ưu đượcvớilậplịch ngắnhạn
z SJF thường đượcápdụng cho lậplịch dài hạn
27
Lậplịch có độ ưutiên
z Thuậtngữ: Priority scheduling
z Mỗitiếntrìnhđượcgắnmộtthamsố lậplịch gọilàđộ
ưutiênp, với p là mộtsố thực
z Tiếntrìnhcóđộ ưutiêncaonhất đượcsử dụng CPU
z Qui ướctrongmônhọcnày:
z TiếntrìnhP
1
và P
2
có độ ưutiênp
1
, p
2
tương ứng
z p
1
>p
2
có nghĩalàtiếntrìnhP
1
có độ ưutiênthấphơn P

2
z SJF là trường hợp đặcbiệtcủalậplịch có ưutiênvới
ưutiêncủacáctiếntrìnhlànghịch đảo độ dài phiên
sử dụng
28
Lậplịch có độ ưutiên
z Hai cách xác định độ ưu tiên:
z Độ ưutiêntrong: Được tính toán dựatrêncác
tham sốđịnh lượng củatiếntrìnhnhư giớihạnvề
thờigian, bộ nhớ, số file đang mở, thờigiansử
dụng CPU
z Độ ưutiênngoài: Dựavàocácyếutố như mức
độ quan trọng, chi phí thuê máy tính…
z Chờ không xác định: Mộttiếntrìnhcóđộ ưu
tiên thấpcóthể nằm trong hàng chờ trong
mộtkhoảng thờigiandàinếu trong hàng chờ
luôn có các tiếntrìnhcóđộ ưutiêncaohơn
29
Lậplịch có độ ưutiên
z Để tránh hiệntượng chờ không xác định, có
thêm tham số tuổi để xác định thờigiantiến
trình thờigiannằm trong hàng chờ
z Tham số tuổi đượcsử dụng để làm tăng độ
ưutiêncủatiếntrình
z Ví dụ thựctế: Khi bảodưỡng máy tính IBM
7094 của MIT năm 1973, ngườitathấymột
tiếntrìnhnằm trong hàng chờ từ năm 1967
nhưng vẫnchưa đượcthựchiện
30
Ví dụ lậplịch có độ ưutiên

z Xét 5 tiến trình như trong
bảng vớithứ tự trong hàng
chờ là P
1
, P
2
, P
3
, P
4
, P
5
z Sử dụng thuậttoánlậplịch
có ưu tiên, ta có thứ tự
thựchiệncủacáctiếntrình
như sau biểu đồ dưới
z Thờigianchờ trung bình là
(1+6+16+18)/5=8.2ms
3
1
4
5
2
10
1
2
1
5
P
1

P
2
P
3
P
4
P
5
Độ ưu
tiên
Thờigian
thựchiện
(ms)
Tiến
trình
P
1
(3)P
5
(2)
06 16
P
2
(1)
1
P
3
(4) P
4
(5)

18
19
Simpo PDF Merge and Split Unregistered Version -
6
31
Round-robin (RR)
z Còn gọilàlậplịch quay vòng
z Đượcthiếtkếđểáp dụng cho các hệ phân
chia thời gian (time-sharing)
z RR hoạt động theo chếđộpreemptive
z Tham số lượng tử thời gian (time quantum)
t
quantum
: Mỗitiếntrìnhđượcsử dụng CPU
trong nhiềunhấtbằng t
quantum
, sau đó đến
lượttiến trình khác
32
Round-robin (RR)
z Hiệuquả của RR phụ thuộc độ lớncủa
t
quantum
z Nếu t
quantum
nhỏ thì hiệuquả của RR giảmvìbộ
điềuphốiphảithựchiệnnhiềuthaotácchuyển
trạng thái, lãng phí thờigianCPU
z Nếu t
quantum

lớnthìsố thao tác chuyểntrạng thái
giảm đi
z Nếu t
quantum
rấtnhỏ (ví dụ 1ms) thì RR được
gọi là processor sharing
z Nếu t
quantum
= ∞ thì RR trở thành FCFS
33
Ví dụ RR
z Giả sử có 3 tiếntrìnhP
1
, P
2
, P
3
vớithờigianthực
hiệntương ứng là 24ms, 3ms, 6ms, thứ tự trong
hàng chờ P
1
, P
2
, P
3
,vào hàng chờ cùng thời điểm0
z Giả sử t
quantum
=4ms
z RR lậplịch các tiến trình như sau:

P
2
P
3
P
1
P
3
P
1
P
1
P
1
P
1
P
1
0
4 7 11 15 17 21 25 29 33
z
Thờigianchờ
z P
1
: 0+(11-4)+(17-15)=9ms
z P
2
: 4ms
z P
3

: 7+(15-11)=11ms
z Thờigianchờ trung bình:
(9+4+11)/3=8ms
34
Lậplịch vớihàngchờđamức
z Thuậtngữ: Multilevel queue scheduling
z Đượcsử dụngkhitacóthể chia các tiến
trình thành nhiềulớp khác nhau để lậplịch
theo các tiêu chí khác nhau, ví dụ:
z Lớpcáctiến trình có tương tác (interactive hoặc
foreground process) cầncóđộ ưutiêncaohơn
z Lớpcáctiếntrìnhchạynền (background) thường
khôngcótương tác vớiNSD: Độ ưutiênthấphơn
35
Lậplịch vớihàngchờđamức
z Thuậttoánlậplịch với hàng chờđamứcchia
hàng chờ ready thành nhiềuhàngchờ con
khác nhau, mỗihàngchờ con đượcápdụng
mộtloạithuật toán khác nhau, ví dụ:
z Hàng chờ các tiến trình background: FCFS
z Hàng chờ các tiếntrìnhcótương tác:RR
z Các tiếntrìnhđượcphânlớpdựavàođặc
tính như bộ nhớ, độ ưu tiên, …
z Cầncóthuậttoánlậplịchchocáchàngchờ
con, ví dụ: preemptive có độ ưutiêncốđịnh
36
Ví dụ hàng chờđamức
z Ví dụ các hàng chờđamứccóđộ ưutiên
giảmdần:
z Hàng chờ các tiếntrìnhhệ thống

z Hàng chờ các tiếntrìnhcótương tác
z Hàng chờ các tiến trình là editor
z Hàng chờ các tiếntrìnhhoạt động theo lô
z Hàng chờ các tiếntrìnhthựctậpcủasinhviên
Simpo PDF Merge and Split Unregistered Version -
7
37
Lậplịch vớihàngchờđamức
có phảnhồi
z Thuậtngữ: Multilevel feedback-queue
scheduling
z Thuậttoánlậplịch kiểu này nhằmkhắcphục
nhược điểm không mềmdẻo củalậplịch với
hàng chờđamức
z Ý tưởng chính: Cho phép tiến trình chuyểntừ
hàng chờ này sang hàng chờ khác, trong khi
lậplịch với hàng chờđamức không cho phép
điềunày
38
Lậplịch vớihàngchờđamức
có phảnhồi
z Cách thựchiện:
z Độ dài phiên sử dụng CPU và thờigianđãnằm
tronghàngchờ là tiêu chuẩnchuyểntiếntrình
giữa các hàng chờ
z Tiến trình chiếmnhiềuthờigianCPU sẽ bị
chuyểnxuống hàng chờ có độ ưutiênthấp
z Tiếntrìnhnằm lâu trong hàng chờ sẽđược
chuyển lên hàng chờ có độ ưutiêncaohơn
39

Các tham số củabộ lậplịch
hàng chờđamứccóphảnhồi
z Số lượng các hàng chờ
z Thuậttoánlậplịch cho mỗihàngchờ
z Phương pháp tăng độ ưutiênchomộttiếntrình
z Phương pháp giảm độ ưutiênchomộttiếntrình
z Phương pháp xác định hàng đợinàođể đưa
mộttiếntrìnhvào
40
Các thuậttoánlậplịch khác
z Sinh viên tìm hiểu trong giáo trình:
z Lậplịch đaxử lý
z Lậplịch thờigianthực
41
Các phương pháp đánh
giá thuậttoánlậplịch
42
Mô hình xác định
z Thuậtngữ: Deterministic modeling
z Dựa vào các trường hợpcụ thể (chẳng hạn
các ví dụđã nói trong bài giảng này) để rút ra
các kếtluận đánh giá
z Ưu điểm: Nhanh và đơngiản
z Nhược điểm: Không rút ra đượckếtluận
đánh giá cho trường hợptổng quát
Simpo PDF Merge and Split Unregistered Version -
8
43
Mô hình hàng chờ
z Thuậtngữ: Queueing model

z Dựatrênlýthuyếtxácsuất, quá trình ngẫu nhiên. Tài
liệuthamkhảo:
z Leonard Kleinrock, Queueing Systems: Volume I – Theory
(Wiley Interscience, New York, 1975)
z Leonard Kleinrock, Queueing Systems: Volume II –
Computer Applications (Wiley Interscience, New York, 1976)
z Ưu điểm: So sánh đượccácthuật toán lậplịch trong
mộtsố trường hợp
z Hạnchế: Phứctạpvề mặttoánhọc, lớpcácthuật
toán phân tích so sánh đượccònhạnchế
44
Mô phỏng
z Thuậtngữ: Simulation
z Thựchiện các tình huống giảđịnh trên máy
tính để đánh giá hiệuquả củacácthuật toán
lậplịch, kiểm nghiệmcáckếtquả lý thuyết
z Mô phỏng thường tốnthờigianCPU và
không gian lưutrữ
z Đượcsử dụng nhiều trong công nghiệp
z Ví dụ các hệ mô phỏng mạng (có module
hàng chờ): OPNET, NS-2, Qualnet
45
Cài đặtthử trong thựctế
z Mô phỏng có thể xem như “qui nạp không
hoàn toàn”
z Có thể xây dựng hệ thống thử trong thựctế
z Ưu điểm: Đánh giá đượchiệuquả thựcsự
khi sử dụng
z Nhược điểm:
z Chi phí cao

z Hành vi củangườisử dụng có thể thay đổi theo
môi trường hệ thống
46
Tóm tắt
z Khái niệmlậplịch, các tiêu chí đánh giá thuật
toán lậplịch
z Các phương thứchoạt động preemptive và
non-preemptive
z Các thuật toán lậplịch FCFS, SJF, ưu tiên,
RR
z Lậplịch vớihàngchờđamức, có và không
có phảnhồi
z Các phương pháp đánh giá thuậttoánlập
lịch
47
Bài tập
z Thựchiệnvídụ RR vớilượng tử thờigian
2ms, 6ms và 6ms.
z Tính thờigianchờ trungbìnhcủacáctiếntrình
trong các trường hợp này.
z Khi lượng tử thời gian thay đổi, thờigianchờ
trung bình thay đổithế nào?
z Tính thời gian hoàn thành (turnaround time) của
tấtcả các tiến trình trong các trường hợptrên
z Nhậnxétvề sự thay đổithời gian hoàn thành của
các tiếntrìnhkhilượng tử thời gian thay đổi
48
Bài tập
z Hãy xây dựng mộtvídụ về hiệntượng convoy
effect sao cho thờigianrỗicủathiếtbị vào ra

ít hơnthờigianrỗicủaCPU. Giả sử có 4 tiến
trình, trong đó P là tiếntrình“lớn”, Q
1
, Q
2
, Q
3
là các tiến trình “nhỏ” đượcnằm trong hàng
chờ theo thứ tự: P, Q
1
, Q
2
, Q
3
z Tìm hai ví dụ trong thựctế về hàng chờđa
mức và hàng chờđamứccóphảnhồivàgiải
thích các ví dụ này.
Simpo PDF Merge and Split Unregistered Version -
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
Đồng bộ hóa tiếntrình
3
Ví dụđồng bộ hóa (1)
TiếntrìnhghiP:
while (true) {

while (counter==SIZE) ;
buf[in] = nextItem;
in = (in+1) % SIZE;
counter++;
}
buf: Buffer
SIZE: cỡ của buffer
counter: Biến chung
Tiếntrìnhđọc Q:
while (true) {
while (counter==0) ;
nextItem = buf[out];
out = (out+1) % SIZE;
counter ;
}
z Đây là bài toán vùng
đệmcógiớihạn
4
Ví dụđồng bộ hóa (2)
z counter++
register
1
= counter;
register
1
= register
1
+ 1;
counter = register
1

;
z counter
register
2
= counter;
register
2
= register
2
-1;
counter = register
2
;
z Các toán tử ++ và có thểđượccàiđặtnhư sau:
P và Q có thể nhận được các giá trị khác nhau của
counter tại cùng 1 thời điểmnếunhưđoạnmãxanh
và đỏ thựchiệnxenkẽ nhau.
5
Ví dụđồng bộ hóa (3)
z Giả sử P và Q thựchiện song song vớinhau
và giá trị của counter là 5:
register
1
= counter; // register
1
=5
register
1
= register
1

+ 1; // register
1
=6
register
2
= counter; // register
2
=5
register
2
= register
2
-1; // register
2
=4
counter = register
1
; // counter=6 !!
counter = register
2
; // counter=4 !!
6
Ví dụđồng bộ hóa (4)
z Lỗi: Cho phép P và Q đồng thờithao táctrên
biếnchungcounter. Sửalỗi:
register
1
= counter; // register
1
=5

register
1
= register
1
+ 1; // register
1
=6
counter = register
1
; // counter=6
register
2
= counter; // register
2
=6
register
2
= register
2
-1; // register
2
=5
counter = register
2
; // counter=5
Simpo PDF Merge and Split Unregistered Version -
2
7
Tương tranh và đồng bộ
z Tình huống xuấthiệnkhinhiềutiếntrìnhcùng

thao tác trên dữ liệu chung và kếtquả các
thao tác đóphụ thuộcvàothứ tự thựchiện
củacáctiếntrìnhtrêndữ liệu chung gọilàtình
huống tương tranh (race condition)
z Để tránh các tình huống tương tranh, các tiến
trình cần được đồng bộ theo mộtphương
thứcnàođó ⇒ Vấn đề nghiên cứu: Đồng bộ
hóa các tiếntrình
8
Khái niệmvềđoạnmãgăng (1)
z Thuậtngữ: Critical section
z Thuậtngữ tiếng Việt: Đoạnmãgăng, đoạn
mã tớihạn.
z Xét mộthệ có n tiếntrìnhP
0
, P
1
, , P
n
, mỗi
tiến trình có một đoạnmãlệnh gọilàđoạn
mã găng, ký hiệulàCS
i
, nếunhư trong đoạn
mã này, các tiến trình thao tác trên các biến
chung, đọc ghi file (tổng quát: thao tác trên
dữ liệu chung)
9
Khái niệmvềđoạnmãgăng (2)
z Đặc điểm quan trọng mà hệ n tiến trình này

cầncólà: KhimộttiếntrìnhP
i
thựchiện đoạn
mã CS
i
thì không có tiếntrìnhP
j
nào khác
đượcphépthựchiện CS
j
z MỗitiếntrìnhP
i
phải “xin phép” (entry
section) trướckhithựchiện CS
i
và thông báo
(exit section) cho các tiến trình khác sau khi
thựchiện xong CS
i
.
10
Khái niệmvềđoạnmãgăng (3)
z Cấu trúc chung của P
i
để thựchiện đoạnmã
găng CS
i
.
do {
Xin phép (ENTRY

i
) thựchiện CS
i
; // Entry section
Thựchiện CS
i
;
Thông báo (EXIT
i
) đãthựchiệnxongCS
i
; // Exit section
Phầnmãlệnh khác (REMAIN
i
); // Remainder section
} while (TRUE);
11
Khái niệmvềđoạnmãgăng (4)
z Viếtlạicấutrúcchungcủa đoạnmãgăng:
do {
ENTRY
i
; // Entry section
Thựchiện CS
i
; // Critical section
EXIT
i
; // Exit section
REMAIN

i
; // Remainder section
} while (TRUE);
12
Giải pháp cho đoạnmãgăng
z Giải pháp cho đoạnmãgăng cầnthỏa mãn 3
điềukiện:
z Loạitrừ lẫn nhau (mutual exclusion): Nếu P
i
đang
thựchiện CS
i
thì P
j
không thể thựchiện CS
j
∀j≠i.
z Tiếntriển (progress): Nếu không có tiếntrìnhP
i
nào
thựchiện CS
i
và có m tiếntrìnhP
j1
, P
j2
, , P
jm
muốn
thựchiện CS

j1
, CS
j2
, , CS
jm
thì chỉ có các tiếntrình
không thựchiện REMAIN
jk
(k=1, ,m) mới đượcxem
xét thựchiện CS
jk
.
z Chờ có giớihạn (bounded waiting): sau khi mộttiến
trình P
i
có yêu cầuvàoCS
i
và trướckhiyêu cầu đó
đượcchấpnhận, số lầncáctiếntrìnhP
j
(với j≠i) được
phép thựchiện CS
j
phảibị giớihạn.
Simpo PDF Merge and Split Unregistered Version -
3
13
Ví dụ: giảiphápcủa Peterson
z Giả sử có 2 tiếntrìnhP
0

và P
1
với hai đoạn
mã găng tương ứng CS
0
và CS
1
z Sử dụng mộtbiến nguyên turn vớigiátrị khởi
tạo0 hoặc1 vàmảng boolean flag[2]
z turn có giá trị i có nghĩalàP
i
đượcphépthực
hiện CS
i
(i=0,1)
z nếu flag[i] là TRUE thì tiếntrìnhP
i
đãsẵn
sàng để thựchiện CS
i
14
Ví dụ: giảiphápcủa Peterson
z Mã lệnh của P
i
:
do {
flag[i] = TRUE;
turn = j;
while (flag[j] && turn == j) ;
CS

i
;
flag[j] = FALSE;
REMAIN
i
;
} while (1);
15
Chứng minh giải pháp Peterson
z Xem chứng minh giảiphápcủa Peterson
thỏa mãn 3 điềukiệncủa đoạnmãgăng
trong giáo trình (trang 196)
z Giải pháp “kiểu Peterson”:
z Phứctạpkhisố lượng tiếntrìnhtăng lên
z Khó kiểm soát
16
Semaphore
17
Thông tin tham khảo
z Edsger Wybe Dijkstra
(người Hà Lan) phát
minh ra khái niệm
semaphore trong khoa
học máy tính vào năm
1972
z Semaphore được sử
dụng lần đầutiêntrong
cuốnsách“The
operating system” của
ông

Edsger Wybe Dijkstra
(1930-2002)
18
Định nghĩa
z Semaphore là mộtbiến nguyên, nếu không tính
đếntoántử khởitạo, chỉ có thể truy cập thông
qua hai toán tử nguyên tố là wait (hoặcP) và
signal (hoặcV).
z P: proberen – kiểmtra(tiếng Hà Lan)
z V: verhogen–tăng lên (tiếng Hà Lan)
z Các tiếntrìnhcóthể sử dụng chung semaphore
z Các toán tử là nguyên tốđểđảmbảo không xảy
ra trường hợpnhư ví dụđồng bộ hóa đãnêu
Simpo PDF Merge and Split Unregistered Version -
4
19
Toán tử wait và signal
wait(S) // hoặcP(S)
{
while (S<=0);
S ;
}
z Toán tử wait: Chờ khi
semaphore S âm và
giảmS đi1 nếuS>0
signal(S) // hoặcV(S)
{
S++;
}
z Toán tử signal: Tăng S

lên 1
20
Sử dụng semaphore (1)
z Với bài toán đoạnmãgăng:
do {
wait(mutex); // mutex là semaphore khởitạo1
CS
i
;
signal(mutex);
REMAIN
i
;
} while (1);
21
Sử dụng semaphore (2)
z P
1
:

O
1
;
signal(synch);

z P
2
:

wait(synch);

O
2
;

z Xét hai tiếntrìnhP
1
và P
2
, P
1
cầnthựchiện
toán tử O
1
, P
2
cầnthựchiện O
2
và O
2
chỉ
đượcthựchiện sau khi O
1
đãhoànthành
z Giải pháp: Sử dụng semaphore synch = 0
22
Cài đặt semaphore cổđiển
z Định nghĩacổđiểncủawait chotathấytoán
tử này có chờ bận (busy waiting), tứclàtiến
trình phảichờ toán tử wait kết thúc nhưng
CPU vẫnphảilàmviệc: Lãng phí tài nguyên

z Liên hệ cơ chế polling trong kiến trúc máy tính
z Cài đặt semaphore theo định nghĩacổđiển:
z Lãng phí tài nguyên CPU với các máy tính 1 CPU
z Có lợinếuthờigianchờ wait ít hơnthờigianthực
hiện context switch
z Các semaphore loạinàygọilàspinlock
23
Cài đặt semaphore theo cấutrúc
z Khắcphụcchờ bận: Chuyểnvònglặpchờ
thành việcsử dụng toán tử block (tạmdừng)
z Để khôi phụcthựchiệntừ block, ta có toán tử
wakeup
z Khi đó để cài đặt, ta có cấutrúcdữ liệumới
cho semaphore:
typedef struct {
int value; // Giá trị của semaphore
struct process *L; // Danh sách tiếntrìnhchờ
} semaphore;
24
void wait(semaphore *S)
{
S->value ;
if (S->value<0) {
Thêm tiếntrìnhgọi
toán tử vào s->L;
block();
}
}
void signal(semaphore *S)
{

S->value++;
if (S->value<=0) {
Xóa mộttiếntrìnhP
ra khỏis->L;
wakeup(P);
}
}
Cài đặt semaphore theo cấutrúc
Simpo PDF Merge and Split Unregistered Version -
5
25
Semaphore nhị phân
z Là semaphore chỉ nhậngiátrị 0 hoặc1
z Cài đặt semaphore nhị phân đơngiảnhơn
semaphore không nhị phân (thuậtngữ:
counting semaphore)
26
Mộtsố bài toán
đồng bộ hóa cơ bản
27
Bài toán vùng đệmcógiớihạn
z Đãxétở ví dụđầu tiên (the bounded-buffer
problem)
z Ta sử dụng 3 semaphore tên là full, empty và
mutex để giải quyết bài toán này
z Khởitạo:
z full: Số lượng phầntử buffer đãcódữ liệu(0)
z empty: Số lượng phầntử buffer chưacódữ liệu(n)
z mutex: 1 (Chưacótiến trình nào thựchiện đoạn
mã găng)

28
Bài toán vùng đệmcógiớihạn
TiếntrìnhghiP:
do {
wait(empty);
wait(mutex);
// Ghi mộtphầntử mới
// vào buffer
signal(mutex);
signal(full);
} while (TRUE);
Tiếntrìnhđọc Q:
do {
wait(full);
wait(mutex);
// Đọcmộtphầntử ra
// khỏi buffer
signal(mutex);
signal(empty);
} while (TRUE);
29
Bài toán tiếntrìnhđọc - ghi
z Thuậtngữ: the reader-writer problem
z Tình huống: Nhiềutiến trình cùng thao tác trên mộtcơ
sở dữ liệutrongđó
z Mộtvàitiếntrìnhchỉđọcdữ liệu(kýhiệu: reader)
z Mộtsố tiếntrìnhvừa đọcvừa ghi (ký hiệu: writer)
z Khi có đọc/ghi đồng thờicủanhiềutiến trình trên cùng
mộtcơ sở dữ liệu, có 2 bài toán:
z Bài toán 1: reader không phảichờ,trừ khi writer đã đượcphép

ghi vào CSDL (hay các reader không loạitrừ lẫn nhau khi đọc)
z Bài toán 2: Khi writer đãsẵn sàng ghi, nó sẽ được ghi trong
thời gian sớm nhất (nói cách khác khi writer đã sẵn sàng,
không cho phép các reader đọcdữ liệu)
30
Bài toán tiếntrìnhđọc-ghi số 1
z Sử dụng các semaphore vớigiátrị khởitạo:
wrt (1), mutex (1)
z Sử dụng biến rcount (khởitạo0) để đếmsố
lượng reader đang đọcdữ liệu
z wrt: Đảmbảoloạitrừ lẫn nhau khi writer ghi
z mutex: Đảmbảoloạitrữ lẫnnhaukhicập
nhậtbiến rcount
Simpo PDF Merge and Split Unregistered Version -

×