Professional Documents
Culture Documents
HỆ ĐIỀU HÀNH
Email : bht.ktmt@gmail.com
Fanpage : www.facebook.com/bht.ktmt
1
Chương 5
Minigame Chương 6
Chương 8 Chương 7
MỤC LỤC 2
C5 3 tính chất
Busy waiting
3
Phân loại giải pháp
Nhóm giải pháp Nhóm giải pháp
Sleep & Wakeup Busy Waiting
Sử dụng
các biến cờ hiệu
Semaphone
Sử dụng
Monitor việc kiểm tra luân phiên
Cấm ngắt
4
Các giải pháp “Busy waiting”
1
Tiếp tục tiêu thụ Không đòi hỏi
CPU khi chờ vào sự trợ giúp của
vùng tranh chấp hệ điều hành
2
5
Các giải pháp “Sleep & wake-up”
1
Từ bỏ CPU khi
chưa vào vùng Cần hệ điều
6
Giải thuật luân phiên
Bài tập
7
Giải thuật luân phiên
do {
Minh họa P i đ ã s ẵ n s à n g
flag[i] = true;
Nếu Pj đang dùng thì chờ Pj dùng xong while ( flag[j] );
Process P0 Process P1
Minh họa
do { do {
P 0 s ẵ n s à n g , g á n t u r n = 1 flag[0] = true; flag[1] = true;
turn = 1; turn = 0;
để nhường P1 nếu P1
while (flag[1]&&turn ==1); while (flag[0] && turn ==0);
s ẵ n s à n g . P 1 d ù n g x o n g critical section critical section
vùng CS thì P0 vào CS. flag[0] = false; flag[1] = false;
remainder section remainder section
N g ư ợ c l ạ i đ ố i v ớ i P 1 }while(1); }while(1);
turn trong 1 thời điểm chỉ mang 1 giá trị => 1 thời điểm chỉ có 1 Process vào CS
P1 true cũng không ngăn được P0 vì muốn tiến vào CS còn cần phụ thuộc vào turn
Không xảy ra chờ đợi vô hạn vì có thể ngắt while bằng flag hoặc turn 10
Giải thuật Bakery (n process)
Mỗi process nhận một con số
Đặc điểm Số nhỏ nhất sẽ vào CS
N ế u c ù n g s ố t h ì s o s á n h s ố t h ứ t ự , i < j t h ì I v à o t r ư ớ c
Số num được cấp tăng dần
Software Hardware
Lệnh TestAndSet
Swap Bị bỏ đói
o Biến chia sẻ lock (khởi tạo = false)
o Biến cục bộ key
o P i n à o t h ấ y g i a ́ t r ị l o c k = f a l s e t r ư ớ c t h i ̀ v à o C S t r ư ớ c
o Pi vào CS sẽ cho lock = true để ngăn các P khác
o Các process bị blocked vì chờ cùng 1 sự kiện sẽ được đặt trong cùng
blocked queue Danh sách liên kết các PCB
Counting semaphore S là số nguyên
o 2 loại
Binary semaphore S = 0 hoặc 1 16
Sleep & wake-up
Semaphore
Semaphore
18
Sleep & wake-up
Semaphore
o Semaphore bảo đảm mutual exclusion và phối hợp đồng bộ các process
o 1 process bị “die” có thể khiến các process khác cùng sử dụng biến semaphore
Cấu trúc:
typedef struct {
int value;
struct process *L; /* process queue */
} semaphore;
Hàm được sử dụng:
o block(): tạm treo process nào thực thi lệnh này, trạng thái process
từ running -> waiting
o wakeup(P): hồi phục process P đang blocked, trạng thái process từ
waiting -> ready 19
Sleep & wake-up
Semaphore
VD1
semaphore mutex; //khởi tạo mutex.value=1
Process i tiến vào -> thấy value < 0 => block() đứng yên một chỗ
Khi 1 process trong CS thực hiện xong, ra khỏi CS => gọi signal()
=> 1 process đang bị block sẽ tiếp tục chạy 20
Sleep & wake-up
Semaphore
VD2
21
Sleep & wake-up
Semaphore
VD3
22
Bài tập Sleep & wake-up Semaphore
H ệ t h ố n g c ó 4 ti ể u t r ì n h T 1 , T 2 , T 3 , T 4 . Q u a n h ệ g i ữ a c á c ti ể u t r ì n h n à y đ ư ợ c b i ể u d i ễ n n h ư
s ơ đ ồ , m ũ i t ê n t ừ T x s a n g T y n g h ĩ a l à T x p h ả i k ế t t h ú c t r ư ớ c k h i T y b ắ t đ ầ u t h ự c t h i . G i ả s ử
t ấ t c ả c á c ti ể u t r ì n h đ ã đ ư ợ c k h ở i t ạ o v à s ẵ n s à n g đ ể t h ự c t h i . D ù n g s e m a p h o r e đ ể đ ồ n g b ộ
h o ạ t đ ộ n g c ủ a c á c t i ể u t r ì n h c h o đ ú n g v ớ i s ơ đ ồ .
Điều kiện:
3 điều kiện => 3 semaphore
•T 1 k ế t t h ú c - > T 2 t h ự c t h i s1 = 0;
•T 1 k ế t t h ú c - > T 3 t h ự c t h i s2 = 0;
s3 = 0;
•T 2 v à T 3 k ế t t h ú c - > T 4 t h ự c t h i
Các lệnh wait() và signal() của các semaphore
H ệ t h ố n g c ó 4 ti ể u t r ì n h T 1 , T 2 , T 3 , T 4 . Q u a n h ệ g i ữ a c á c ti ể u t r ì n h n à y đ ư ợ c b i ể u d i ễ n n h ư
s ơ đ ồ , m ũ i t ê n t ừ T x s a n g T y n g h ĩ a l à T x p h ả i k ế t t h ú c t r ư ớ c k h i T y b ắ t đ ầ u t h ự c t h i . G i ả s ử
t ấ t c ả c á c ti ể u t r ì n h đ ã đ ư ợ c k h ở i t ạ o v à s ẵ n s à n g đ ể t h ự c t h i . D ù n g s e m a p h o r e đ ể đ ồ n g b ộ
h o ạ t đ ộ n g c ủ a c á c t i ể u t r ì n h c h o đ ú n g v ớ i s ơ đ ồ .
24
Sleep & wake-up
Semaphore
N h ậ n x é t
o S.value ≥ 0: số process có thể thực thi = S.value
o S.value < 0: số process đang đợi trên S là |S.value|
o Atomic và mutual exclusion : không được xảy ra trường hợp 2 process cùng đang
ở trong thân lệnh wait (S) và signal(S) tại một thời điểm
⇒ đ o ạ n c o d e c ủ a l ệ n h w a i t ( S ) v à s i g n a l ( S ) c ũ n g l à v ù n g t r a n h c h ấ p
Starvation ti ế n t r ì n h c ó t h ể k h ô n g b a o g i ờ đ ư ợ c l ấ y r a k h ỏ i h à n g đ ợ i
S và Q là hai biến semaphore được khởi tạo = 1
P0 P1
wait(S); wait(Q);
wait(Q); wait(S);
signal(S); signal(Q);
signal(Q); signal(S);
P0 gọi wait(S), rồi P1 gọi wait(Q) => S.value = 1- 1 = 0, Q.value = 1 – 1 = 0
Tiếp tục cho P 0 gọi wait (Q) => bị blocked , P1 gọi wait (S) => bị blocked
=> không thể gọi được hàm signal nào 26
Sleep & wake-up
3 bài toán kinh điển
Tạo 1 item Nhà máy Khách hàng giảm value của full, nếu value full
< 0 thì bị block (người không
được mua hàng)
kiểm tra số buffer empty,
nếu < 0 thì bị item đó bị do { do {
block (không còn chỗ trống nextp = new_item(); wait(full) Nếu mutex<0 thì nhà máy đang
để đưa hàng vào), nếu số … wait(mutex); can thiệp kho, chờ đến khi nhà
buffer còn trống > 0 thì gọi wait(empty); … máy xong thì mới được mua hàng
wait(mutex) để kiểm tra có
wait(mutex); nextc = get_buffer_item(out);
ai đang can thiệp kho
không … …
Tăng mutex để cho người khác
insert_to_buffer(nextp); signal(mutex); vào
nếu mutex.value < 0 thì có
người can thiệp kho, chờ
… signal(empty);
đến khi người đó làm xong signal(mutex); …
và gọi signal(mutex) thì nhà signal(full); consume_item(nextc);
máy sẽ được wake-up và } while (1); }while (1); Tăng empty, nếu empty
vào CS. Thực hiện xong thì <=0 thì đánh thức 1 item
nhà máy gọi signal(mutex) khác (cho phép thêm
Semaphore full, empty, mutex;
để tăng mutex value cho hàng vào kho)
Khởi tạo:
người khác vào.
full = 0; //số buffers đầy
gọi signal(full) -> tăng giá trị của full, empty = n; // số buffers trống Xem lại wait&signal slide 17
nếu full <= 0 -> wake-up cho 1 item mutex = 1; //1 thời điểm chỉ có 1 bên được can
khác vào kho thiệp kho 28
Dining-Philosophers Problem 3 bài toán kinh điển
29
Dining-Philosophers Problem 3 bài toán kinh điển
Deadlock
khi tất cả đồng thời cầm lên chiếc đũa bên tay
Triết gia thứ i:
trái ⇒ mỗi người giữ 1 cây => không ai ăn được
do {
để signal
wait(chopstick [i])
wait(chopstick [(i + 1) % 5]) Giải quyết
eat c h i ế c = > v ẫ n d ư 1 c h i ế c đ ể 1 n g ư ờ i ă n x o n g t r ư ớ c
… C á c h 2 : Tr i ế t g i a n g ồ i ở v ị t r í l ẻ c ầ m đ ũ a b ê n t r á i
signal(chopstick [i]); t r ư ớ c , r ồ i m ớ i đ ế n đ ũ a b ê n p h ả i , t r i ế t g i a ở v ị t r í
c h ẵ n c ầ m đ ũ a b ê n p h ả i t r ư ớ c , r ồ í m ớ i đ ế n đ ũ a b ê n
signal(chopstick [(i + 1) % 5]);
trái => triết gia lẻ cầm chiếc đũa của triết gia
} while (1);
c h ẵ n t h ì t r i ế t g i a c h ẵ n p h ả i đ ợ i
30
Reader Writer Problem 3 bài toán kinh điển
Writer không được cập nhật dữ liệu khi có một Reader đang truy xuất CSDL
1 t h ờ i đ i ể m - > c h ỉ c h o p h é p 1 W r i t e r s ử a đ ổ i C S D L
Monitor
Là một cấu trúc ngôn ngữ cấp cao, có chức năng như semaphore nhưng
Khái niệm dễ điều khiển hơn
Có thể hiện thực bằng semaphore
Dùng các thủ tục của monitor để truy xuất biến local
Đ ặ c tí n h Process “vào monitor” bằng cách gọi một trong các thủ tục đó
Chỉ có một process có thể vào monitor tại một thời điểm
32
Chương 6
DEADLOCKS
33
Khái niệm
o Tiến trình trì hoãn vô hạn định nếu nó bị trì hoãn một khoảng thời
gian dài lặp đi lặp lại nhưng hệ thống lại đáp ứng các tiến trình khác
Ví dụ 1: Ví dụ 2:
Hệ thống có 2 file trên đĩa Bài toán các triết gia ăn tối
P1 và P2 mỗi tiến trình mở một file và Mỗi người cầm 1 chiếc đũa và chờ chiếc
yêu cầu mở file kia còn lại
34
Điều kiện xảy ra deadlock
Không trưng dụng: tài nguyên không thể bị lấy lại mà chỉ có thể
3
được trả lại từ tiến trình đang giữ tài nguyên đó khi nó muốn
4 Chu trình đợi: tồn tại vòng tròn các quá trình đang đợi sao cho
o P0 đợi một tài nguyên mà P1 giữ
o Process i
o L o ạ i t à i n g u y ê n R j v ớ i 4 t h ự c t h ể
37
Phương pháp giải quyết deadlocks
o Ngăn deadlock
o Tránh deadlock
o C h o p h é p h ệ t h ố n g v à o t r ạ n g t h á i d e a d l o c k , n h ư n g s a u đ ó p h á t h i ệ n
deadlock và phục hồi hệ thống
o ‘Bơ’ deadlock
✔K h á n h iều h ệ điều h à n h sử d ụ n g p h ư ơ n g p h á p n à y
38
Phương pháp giải quyết deadlocks
Ngăn deadlock Không cho phép (ít nhất) 1 trong 4 điều kiện xảy ra deadlock
V ớ i t à i n g u y ê n k h ô n g c h i a s ẻ : k h ô n g t h ể
(1) Ngăn mutual exclusion
V ớ i t à i n g u y ê n c h i a s ẻ : k h ô n g c ầ n t h i ế t
(2) Giữ và chờ tài nguyên Tiến trình yêu cầu toàn bộ tài nguyên cần thiết một lần. đủ tài
nguyên => cấp phát, không đủ => tiến trình bị block
T i ế n t r ì n h p h ả i t r ả l ạ i t à i n g u y ê n t r ư ớ c k h i y ê u c ầ u c ấ p p h á t
(3) Ngăn không trưng dụng A có tài nguyên, A yêu cầu tài nguyên khác nhưng chưa được cấp
Cách 1: Hệ thống lấy lại mọi tài nguyên A đang giữ
Cách 2: Hệ thống sẽ xem tài nguyên A yêu cầu
được giữ bởi một tiến trình khác đang đợi thêm tài nguyên => hệ thống lấy lại và
cấp cho A
được giữ bởi tiến trình không đợi tài nguyên, A phải đợi => tài nguyên của A bị lấy
(4) Ngăn chu trình đợi gán số thứ tự cho tất cả các tài nguyên => tiến trình chỉ có thể
yêu cầu thực thể của một loại tài nguyên theo thứ tự tăng dần
Tiến trình yêu cầu một thực thể của loại tài nguyên R j thì phải trả lại các tài nguyên Ri có
39
s ố t h ứ t ự l ớ n h ơ n R j
Phương pháp giải quyết deadlocks
Tránh deadlock
c u n g c ấ p t h ô n g t i n v ề t à i n g u y ê n đ ể h ệ t h ố n g c ấ p p h á t t à i n g u y ê n h ợ p l ý
40
Chuỗi an toàn
Không deadlock
chuỗi <P1, P2,…,Pn>
Unsafe
Ví dụ Hệ thông có 12 tape drive và 3 tiến trình P0, P1, P2
Tại thời điểm to
Maybe deadlock
C ò n 3 t a p e d r i v e s ẵ n s à n g
Chuỗi <P1, P0, P2> là chuỗi an toàn -> hệ thống an toàn 41
Các giải thuật tránh deadlocks
Mỗi tài nguyên có 1 thực thể Mỗi tài nguyên có nhiều thực thể
Không có điều kiện tiến trình phải khai tiến trình đã có đủ tài
báo số thực thể tối đa nguyên thì phải hoàn
của mỗi loại tài trả trong một khoảng
nguyên nó cần thời gian
Sơ đồ cấp phát
42
Các giải thuật tránh deadlocks
C á c b ư ớ c t h ự c h i ệ n g i ả i t h u ậ t B a n k e r
44
Các giải thuật tránh deadlocks Giải thuật Banker
46
Các giải thuật tránh deadlocks Giải thuật yêu cầu tài nguyên
47
Phát hiện & phục hồi deadlock
Dùng sơ đồ wait-for
Chấm dứt lần lượt từng tiến trình cho đến khi không còn deadlock
✔L ấ y l ạ i t à i n g u y ê n t ừ m ộ t h a y n h i ề u t i ế n t r ì n h
o L ấ y l ạ i t ừ 1 ti ế n t r ì n h , c ấ p c h o ti ế n t r ì n h k h á c c h o đ ế n k h i k h ô n g c ò n d e a d l o c k
o Chọn “nạn nhân” để tối thiểu chi phí
o Tr ở l ạ i t r ạ n g t h á i t r ư ớ c d e a d l o c k ( R o l l b a c k )
o Đói tài nguyên (Starvation)
50
Chương 7
51
Khái niệm
p h â n p h ố i , s ắ p x ế p c á c p r o c e s s t r o n g b ộ n h ớ
o M ụ c ti ê u n ạ p c à n g n h i ề u p r o c e s s v à o b ộ n h ớ c à n g t ố t
o Tr o n g h ầ u h ế t c á c h ệ t h ố n g , k e r n e l s ẽ c h i ế m m ộ t p h ầ n c ố đ ị n h c ủ a b ộ
n h ớ ; p h ầ n c ò n l ạ i p h â n p h ố i c h o c á c p r o c e s s .
C ấ p p h á t b ộ n h ớ c h o c á c p r o c e s s
Tá i đ ị n h v ị ( r e l o c a t i o n ) : k h i s w a p p i n g , …
Yê u c ầ u đ ố i v ớ i
B ả o v ệ : p h ả i k i ể m t r a t r u y x u ấ t b ộ n h ớ c ó h ợ p l ệ k h ô n g
q u ả n l ý b ộ n h ớ
C h i a s ẻ : c á c p r o c e s s c h i a s ẻ v ù n g n h ớ c h u n g
G á n đ ị a c h ỉ n h ớ l u ậ n l ý c ủ a u s e r v à o đ ị a c h ỉ t h ự c 53
Đ ị a c h ỉ b ộ n h ớ
Đ ị a c h ỉ v ậ t l ý Đ ị a c h ỉ l u ậ n l ý
(Physical/ địa chỉ thực) (Logical/ địa chỉ ảo)
1 v ị t r í n h ớ t r o n g m ộ t c h ư ơ n g t r ì n h
1 v ị t r í t h ự c t r o n g b ộ n h ớ c h í n h
t r ì n h b i ê n d ị c h d ị c h m ã = > m ọ i t h a m c h i ế u
b ộ n h ớ đ ề u l à đ ị a c h ỉ l o g i c
54
N ạ p c h ư ơ n g t r ì n h v à o b ộ n h ớ
Tổ n g h ợ p o b j e c t m o d u l e = > fi l e n h ị p h â n l o a d m o d u l e
55
N ạ p c h ư ơ n g t r ì n h v à o b ộ n h ớ
ABBOTT.C COSTELLO.C
int idunno; ...
... int whosonfirst (int x)
whosonfirst(idunno); { SOURCE CODE
Khi mỗi file được ... ...
}
biên dịch, các địa chỉ
Compiler Compiler
là chưa biết, vì thế
ABBOTT.OBJ COSTELLO.OBJ
trình biên dịch dùng ... ... OBJECT CODE
MOVE R1, (idunno) ...
các cờ để đánh dấu CALL whosonfirst whosonfirst:
... ...
Linker Memory
Trình linker kết nối
HAHAHA.EXE
các files => nó có HAHAHA.EXE ...
... MOVE R1, 22388
Loader/
thể thay thế các chỗ MOVE R1, 2388 CALL 21547
CALL 1547 locator ...
đ á n h d ấ u v ớ i đ ị a c h ỉ ... ...
... 21547 MOVE R1, R5
1547 MOVE R1, R5 Phải xác định địa ...
thật ... c h ỉ b ộ n h ớ b ắ t đ ầ u 22388
(value of idunno))
56
2388 (value of idunno) để thực thi
Chuyển đổi địa chỉ
0 2000
int i;
Địa chỉ ở dạng goto p1;
symbolic (tên p1
biến,hằng…) 250 2250
symbolic address relocatable address
physical memory
C o m p i l e t i m e : b i ế t t r ư ớ c đ ị a c h ỉ b ộ n h ớ c ủ a c h ư ơ n g
trình => gán địa chỉ tuyệt đối khi compile
Chuyển địa chỉ thành
Load time: loader phải chuyển đổi địa chỉ tương đối
địa chỉ thực tại
thành địa chỉ thực dựa trên một địa chỉ nền
Dynamic Linking
✔G i ú p c h ư ơ n g t r ì n h t h ự c t h i c ó t h ể d ù n g c á c p h i ê n b ả n k h á c n h a u c ủ a e x t e r n a l
module mà không cần sửa đổi, biên dịch lại.
✔c o d e s h a r i n g : m ộ t e x t e r n a l m o d u l e c h ỉ c ầ n n ạ p v à o b ộ n h ớ m ộ t l ầ n . C á c
p r o c e s s c ầ n d ù n g e x t e r n a l m o d u l e n à y t h ì c ù n g c h i a s ẻ đ o ạ n m ã ⇒ ti ế t k i ệ m
k h ô n g g i a n n h ớ 58
Q u ả n l ý b ộ n h ớ
Dynamic loading
✔C h ỉ n ạ p t h ủ t ụ c v à o b ộ n h ớ k h i đ ư ợ c g ọ i đ ế n
= > t ă n g h i ệ u s u ấ t b ộ n h ớ , t r á n h l ã n g p h í
✔R ấ t h i ệ u q u ả t r o n g t r ư ờ n g h ợ p t ồ n t ạ i k h ố i l ư ợ n g l ớ n m ã c h ư ơ n g
trình có tần suất sử dụng thấp
✔U s e r c h ị u t r á c h n h i ệ m t h i ế t k ế v à h i ệ n t h ự c c á c c h ư ơ n g t r ì n h c ó
dynamic loading
✔H ệ đ i ề u h à n h c u n g c ấ p m ộ t s ố t h ủ t ụ c t h ư v i ệ n h ỗ t r ợ , t ạ o đ i ề u
kiện cho lập trình viên
59
Phân mảnh
k h ô n g g i a n n h ớ c ò n t r ố n g đ ủ đ ể t h ỏ a X ả y r a k h i b ộ n h ớ t h ự c đ ư ợ c c h i a
o K h i k h ở i đ ộ n g , b ộ n h ớ c h í n h đ ư ợ c c h i a t h à n h n h i ề u p h ầ n ( p a r t i t i o n )
Giải pháp
cho vào partition nhỏ nhất
p h u ̀ h ợ p v ớ i n ó
P a r ti ti o n c ó k í c h
t h ư ớ c k h ô n g b ằ n g chọn partition nhỏ nhất
61
còn trống
Chiến lược placement
P a r t i t i o n c ó k í c h t h ư ớ c k h ô n g b ằ n g n h a u
Giải pháp 1
P a r t i t i o n c ó k í c h t h ư ớ c k h ô n g b ằ n g n h a u
Giải pháp 2
N ạ p P v à o b ộ n h ớ c h í n h
63
Chiến lược placement
✔B e s t - f i t : c h ọ n k h ố i n h ớ t r ố n g n h ỏ n h ấ t
✔F i r s t - f i t : c h ọ n k h ố i n h ớ t r ố n g p h ù h ợ p
đ ầ u t i ê n k ể t ừ đ ầ u b ộ n h ớ
✔N e x t - f i t : c h ọ n k h ố i n h ớ t r ố n g p h ù h ợ p
đầu tiên kể từ vị trí cấp phát cuối cùng
✔W o r s t - f i t : c h ọ n k h ố i n h ớ t r ố n g l ớ n n h ấ t
64
Cơ chế phân trang
Những thuật ngữ
B ộ n h ớ v ậ t l ý : l à k h u n g t r a n g ( f r a m e ) , c ó k í c h t h ư ớ c l ũ y t h ừ a c ủ a 2
B ộ n h ớ l u ậ n l ý : t ậ p h ợ p đ ị a c h ỉ l o g i c m à 1 c h ư ơ n g t r ì n h c ó t h ể s i n h r a → p a g e
B ả n g p h â n t r a n g : c h u y ể ṇ đ ị a c h ỉ l u ậ n l ý - > đ ị a c h ỉ t h ự c
Đ ị a c h ỉ l u ậ n l ý g ồ m :
• Số trang (Page number) p
• Địa chỉ tương đối trong trang (Page offset) d
K í c h t h ư ớ c c ủ a k h ô n g g i a n đ ị a c h ỉ ả o l à 2 m , v à k í c h t h ư ớ c c ủ a t r a n g l à 2 n t h ì
page number page offset
p d
m - n bits n bits
(định vị từ 0 ÷ 2m − n − 1) (định vị từ 0 ÷ 2n − 1)
B ả n g t r a n g s ẽ c ó t ổ n g c ộ n g 2 m/ 2 n = 2 m - n mục (entry)
65
Cơ chế phân trang
Cơ chế
page frame
number number
0
0
0 1
1 page 0
1
1 4
2
2 2 3
3 5 3 page 2
3
4 page 1
logical memory page table
physical memory
66
Cơ chế phân trang
f frames
logical physical
address address f 00…00
CPU p d f d
f 11…11
p
physical
memory
page table
67
Cơ chế phân trang
68
Cơ chế phân trang
B T 1 : H ệ t h ố n g c ó b ộ n h ớ đ ư ợ c c ấ p p h á t t h e o c ơ c h ế p h â n t r a n g v ớ i k í c h t h ư ớ c
t r a n g v à k h u n g t r a n g l à 1 0 2 4 b y t e . B i ế t t r a n g 0 v à t r a n g 1 c ủ a b ộ n h ớ ả o l ầ n
l ư ợ t đ ư ợ c n ạ p v à o k h u n g t r a n g 4 , 2 c ủ a b ộ n h ớ v ậ t l ý . H ỏ i đ ị a c h ỉ ả o 6 8 4 đ ư ợ c
á n h x ạ t h à n h đ ị a c h ỉ v ậ t l ý b a o n h i ê u ?
A. 684 K í c h t h ư ớ c 1 0 2 4 = 2 1 0 = > n = 1 0 b i t
Page Frame Địa chỉ tương đối là 684 => 684 =10101011
B. 2732
number number Mà n = 10 bit => cắt từ 684 n bit: …0 | 101
C. 4780 0 4
1 2 m bit 684 vừa đủ
D. 1708 số 0 10 bit
Đ ị a c h ỉ v ậ t l ý = 1 0 0 | 1 0 1 0 1 0 1 1 0 0 = 4 7 8 0
69
Cơ chế phân trang
B T 2 : B ộ v i x ử l ý M I P S R 2 0 0 0 c ó k h ô n g g i a n đ ị a c h ỉ ả o 3 2 b i t v ớ i k í c h
t h ư ớ c t r a n g ( p a g e ) l à 4 0 9 6 b y t e . M ỗ i m ụ c ( e n t r y ) t r o n g b ả n g t r a n g c ó
k í c h t h ư ớ c 3 2 b i t . H ỏ i k í c h t h ư ớ c c ủ a b ả n g t r a n g l à b a o n h i ê u ?
A. 0.5 MB
K í c h t h ư ớ c t r a n g 2 n = 4 0 9 6 s u y r a n = 1 2
B. 1 MB
S ố m ụ c = 2 m-n = 2 32-12 = 2 20
C. 2 MB
D. 4 MB K í c h t h ư ớ c b ả n g t r a n g = 2 2 0 x 3 2 = 4 M B
70
Cơ chế phân trang
Bài tập phân trang
B T 3 . B ộ n h ớ v ậ t l ý c ủ a m ộ t
h ệ t h ố n g c ó k í c h t h ư ớ c 4 M B
được chia thành 256 khung
trang. Để quản l ý bộ n h ớ
này, hệ thống sử dụng một
b ả n g t r a n g v ớ i 3 2 t r a n g . Đ ị a
c h ỉ l u ậ n l ý c ó t ố i t h i ể u b a o
nhiêu bit để truy xuất bộ
K í c h t h ư ớ c b ộ n h ớ v ậ t l ý = 4 M B = 2 2 2 B y t e
n h ớ t r ê n ?
Số khung trang = 256 → cần tối thiểu 8 bit
A. 19 bit C. 14 bit trang
→ Số bit offset = 22 – 8 = 14 bit
A. 32 KB
B T 5 . X é t m ộ t k h ô n g g i a n đ ị a c h ỉ ả o c ó 1 1 2 t r a n g , m ỗ i t r a n g c ó k í c h t h ư ớ c
2 0 4 8 b y t e s đ ư ợ c á n h x ạ v à o b ộ n h ớ c ó 6 4 k h u n g t r a n g . K í c h t h ư ớ c b ả n g
phân trang là bao nhiêu nếu mỗi mục(entry ) trong nó cần 1 bytes?
M ỗ i t r a n g c ó k í c h t h ư ớ c 2 0 4 8 b y t e s = 2 1 1
B. 128 bytes
→ K í c h t h ư ớ c đ ị a c h ỉ ả o = 2 7 * 2 1 1 = 2 1 8
C. 112 bytes
S ố m ụ c = K í c h t h ư ớ c đ ị a c h ỉ ả o / k í c h t h ư ớ c m ỗ i t r a n g = 2 7
73
Cơ chế phân trang
B T 6 . M ộ t m á y t í n h c ó k h ô n g g i a n đ ị a c h ỉ ả o 3 2 b i t , q u ả n l ý b ộ n h ớ b ằ n g
cách sử dụng kết hợp phân trang và phân đoạn. Trong đó 4 bit đầu tiên là
dành cho đoạn, 16 bit kế tiếp dành cho trang, số bit còn lại dành cho
offset. Khi tiến trình truy xuất địa chỉ 0xC0DEDBAD thì chỉ số trang là bao
nhiêu?
A. 0xC0
0xC0DEDBAD (hex) =
B. 0xC0DE 1100 0000 1101 1110 1101 1011 1010 1101 (bin)
D. 0xBAD
74
Cơ chế phân trang
B T 7 . X é t m ộ t h ệ t h ố n g s ử d ụ n g k ỹ t h u ậ t p h â n t r a n g , v ớ i b ả n g t r a n g
đ ư ợ c l ư u t r ữ t r o n g b ộ n h ớ c h í n h . N ế u t h ờ i g i a n c h o m ộ t l ầ n t r u y x u ấ t
b ộ n h ớ b ì n h t h ư ờ n g l à 2 0 0 n s t h ì m ấ t b a o n h i ê u t h ờ i g i a n c h o m ộ t t h a o
t á c t r u y x u ấ t b ộ n h ớ t r o n g h ệ t h ố n g n à y ?
A. 400ns
B. 200ns
x + x = 200 + 200 = 400ns
C. 800ns
D. 100ns
75
Cơ chế phân trang
S ử d ụ n g T L B s v ớ i h i t - r a t i o ( t ỉ l ệ t ì m t h ấ y ) l à 9 0 % A. 200 C. 40
t h ì t h ờ i g i a n t r u y x u ấ t b ộ n h ớ t r o n g h ệ t h ố n g B. 20 D. 220
(effective memory reference time) là 240 ns. Nếu
tỉ lệ tìm thấy là 80% thì thời gian truy xuất bộ Ta có hệ phương trình:
Cài đặt
Chương 8
3 giải thuật thay trang
Vấn đề thrashing
78
Tổng quan
B ộ n h ớ ả o ( v i r t u a l m e m o r y ) : 1 ti ế n t r ì n h k h ô n g đ ư ợ c n ạ p t o à n b ộ
v à o b ộ n h ớ v ậ t l ý = > x ử l ý t r o n g b ộ n h ớ ả o
Ưu đ i ể m
✔S ố l ư ợ n g p r o c e s s t r o n g b ộ n h ớ n h i ề u h ơ n
✔M ộ t p r o c e s s c ó t h ể t h ự c t h i c ả k h i k í c h t h ư ớ c > b ộ n h ớ t h ự c
✔G i ả m n h ẹ c ô n g v i ệ c c ủ a l ậ p t r ì n h v i ê n
K h ô n g g i a n t r á o đ ổ i g i ữ a b ộ n h ớ swap partition
c h í n h v à b ộ n h ớ p h ụ ( s w a p s p a c e )
file pagefile.sys
79
C à i đ ặ t b ộ n h ớ ả o
2 kỹ thuật:
✔P h ầ n c ứ n g m e m o r y m a n a g e m e n t p h ả i h ỗ t r ợ 2 k ỹ t h u ậ t
✔O S p h ả i q u ả n l ý s ự d i c h u y ể n c ủ a t r a n g / đ o ạ n g i ữ a b ộ n h ớ c h í n h v à b ộ n h ớ ả o
c á c t r a n g c h ỉ đ ư ợ c n ạ p v à o b ộ n h ớ c h í n h k h i đ ư ợ c y ê u c ầ u
Block process đó
Y ê u c ầ u đ ọ c đ ĩ a đ ể t h ê m t r a n g m ớ i
Không có Dùng giải thuật thay trang chọn một trang hy sinh (victim page)
frame trống G h i v i c ti m p a g e l ê n đ ĩ a
81
Giải thuật thay trang
M ụ c ti ê u : s ố l ư ợ n g p a g e - f a u l t n h ỏ n h ấ t
1 t i ế n t r ì n h đ ư ợ c c ấ p 4 k h u n g t r a n g t r o n g b ộ n h ớ v ậ t l ý v à 7 t r a n g t r o n g b ộ
n h ớ ả o . T ạ i t h ờ i đ i ể m n ạ p t i ế n t r ì n h v à o , 4 k h u n g t r a n g n à y đ a n g t r ố n g . T i ế n
t r ì n h t r u y x u ấ t 7 t r a n g ( 1 , 2 , 3 , 4 , 5 , 6 , 7 ) t r o n g b ộ n h ớ ả o t h e o t h ứ t ự n h ư
sau: 6 2 4 4 5 6 3 1 4 2 3 7 5 6 7 2 4 3 5 1
T ạ i t h ờ i đ i ể m t i ế n t r ì n h t r u y x u ấ t t r a n g n h ớ s ố 3 l ầ n đ ầ u t i ê n , t r a n g n h ớ
nào sẽ bị thay thế, nếu sử dụng giải thuật FIFO?
A. 6
B. 2
C. 4
D. 5
83
Bài tập Giải thuật thay trang
1 t i ế n t r ì n h đ ư ợ c c ấ p 4 k h u n g t r a n g t r o n g b ộ n h ớ v ậ t l ý v à 7 t r a n g t r o n g b ộ
n h ớ ả o . T ạ i t h ờ i đ i ể m n ạ p t i ế n t r ì n h v à o , 4 k h u n g t r a n g n à y đ a n g t r ố n g . T i ế n
t r ì n h t r u y x u ấ t 7 t r a n g ( 1 , 2 , 3 , 4 , 5 , 6 , 7 ) t r o n g b ộ n h ớ ả o t h e o t h ứ t ự n h ư
sau: 6 2 4 4 5 6 3 1 4 2 3 7 5 6 7 2 4 3 5 1
T ạ i t h ờ i đ i ể m t i ế n t r ì n h t r u y x u ấ t t r a n g n h ớ s ố 1 l ầ n đ ầ u t i ê n , t r a n g n h ớ n à o s ẽ
bị thay thế, nếu sử dụng giải thuật OPT?
A. 6
B. 2
C. 4
D. 5
84
Bài tập Giải thuật thay trang
1 t i ế n t r ì n h đ ư ợ c c ấ p 4 k h u n g t r a n g t r o n g b ộ n h ớ v ậ t l ý v à 7 t r a n g t r o n g b ộ
n h ớ ả o . T ạ i t h ờ i đ i ể m n ạ p t i ế n t r ì n h v à o , 4 k h u n g t r a n g n à y đ a n g t r ố n g . T i ế n
t r ì n h t r u y x u ấ t 7 t r a n g ( 1 , 2 , 3 , 4 , 5 , 6 , 7 ) t r o n g b ộ n h ớ ả o t h e o t h ứ t ự n h ư
sau: 6 2 4 4 5 6 3 1 4 2 3 7 5 6 7 2 4 3 5 1
T ạ i t h ờ i đ i ể m t i ế n t r ì n h t r u y x u ấ t t r a n g n h ớ s ố 7 l ầ n đ ầ u t i ê n , c ó t ấ t c ả b a o
n h i ê u l ỗ i t r a n g đ ã x ả y r a ( k h ô n g t í n h l ỗ i t r a n g x ả y r a k h i n ạ p t r a n g n h ớ s ố 7 ) , n ế u
sử dụng giải thuật LRU?
A. 6
B. 2
C. 7
D. 8
85
Giải thuật thay trang
N g h ị c h l ý B e l a d y
Nghịch l ý Belady là số
page fault tăng mặc dù
quá trình đã được cấp
nhiều frame hơn
86
Vấn đề cấp phát
Số frame cấp cho mỗi process có thể thay đổi trong khi chạy
(variable-allocation) • N ế u t ỷ l ệ p a g e - f a u l t t h ấ p ⇒ g i ả m b ớ t f r a m e
P h ả i m ấ t c h i p h í đ ể ư ớ c đ ị n h c á c p r o c e s s
87
Vấn đề thrashing
T h r a s h i n g : h i ệ n t ư ợ n g c á c t r a n g n h ớ c ủ a p r o c e s s b ị h o á n c h u y ể n v à o / r a l i ê n t ụ c
Hạn chế thrashing => hệ điều hành phải cấp cho process càng “đủ” frame càng tốt
N g u y ê n l ý l o c a l i t y ( l o c a l i t y p r i n c i p l e )
o Locality: tập hợp các trang được tham chiếu gần nhau
o Một process có nhiều locality, trong quá trình thực thi, process sẽ chuyển
từ locality này sang locality khác
88
Vấn đề thrashing
Định nghĩa:
o WS(t) - số lượng các tham chiếu gần nhất cần được quan sát
24569132639214
N h ậ n x é t :
o Δ q u á l ớ n ⇒ b a o p h ủ n h i ề u l o c a l i t y k h á c n h a u
89
Vấn đề thrashing
Giải pháp tập làm việc
Ví dụ: Δ = 10
W S S ( t 1) = 5 W S S ( t 2) = 2
✔K h i k h ở i t ạ o : c u n g c ấ p s ố f r a m e t h o ả m ã n W S S c ủ a n ó
Giải ✔N ế u D > s ố f r a m e h ệ t h ố n g ⇒ t ạ m d ừ n g 1 p r o c e s s
pháp
✔C h u y ể n t r a n g s a n g đ ĩ a c ứ n g , t h u h ồ i c á c f r a m e
90
Wanna Play?
THANK YOU