Cho biết số bit dùng cho địa chỉ offset và số trang logic tối đa trong không gian tiến trình.. Tại sao phải điều độ tiến trình qua đoạn găng: Để hạn chế các lỗi có thể xảy ra do sử dụng
Trang 1Câu 1:
Một hệ thống máy tính với bộ nhớ chính có kích thước 320MB Hệ thống sử dụng địa chỉ logic 48 bit Kích thước trang được sử dụng là 8KB Yêu cầu xác định các thông số sau:
a Cho biết số bit dùng cho địa chỉ offset
b Số khung trang vật lý
c Số trang logic trong không gian tiến trình
d Cho địa chỉ logic 20030, yêu cầu đổi sang dạng <p, d>
Đáp án:
a Cho biết số bit dùng cho địa chỉ offset
Là số bit cần dùng để mô tả tất cả các địa chỉ trong một trang
Kích thước một trang: 8KB = 23.210B = 8192B = 213B Số bit cần dùng là 13 bit
b Số khung trang vật lý
Kích thước bộ nhớ vật lý
Kích thước trang =
320 MB
8 KB/trang=
320∗220B
8∗210B /trang=40∗2
10
=40906 trang
c Số trang logic trong không gian tiến trình
Kích thước không giantiếntrình
Kích thước trang =
248B
8 KB/trang=
248B
213B /trang=2
35trang
d Cho địa chỉ logic 20030, yêu cầu đổi sang dạng <p, d>
Do kích thước trang là 8192, lấy 20030 chia cho 8192 được 2 dư 3646
Vậy, 20030 được đổi thành <p = 2, d = 3646>
Câu 2:
Một máy tính sử dụng địa chỉ logic 64bit có dung lượng bộ nhớ 64MB Hệ điều hành
sử dụng 12 bit để làm địa chỉ offset Yêu cầu tính số trang logic, số trang vật lý và kích thước trang
Đáp án:
a Số trang logic
Kích thước không giantiếntrình
Kích thước trang =
264B
4 KB/trang=
264B
212B/trang=2
52
trang
b Số trang vật lý
Kích thước bộ nhớ vật lý
Kích thước trang =
64 MB
4 KB/trang=
64∗220B
4∗210B/trang=16∗2
10=16384 trang
c Kích thước trang
Kích thước 1 trang: Số bit làm địa chỉ offset là 12 bit 22.210B= 4096 B = 4KB
Câu 3:
Một hệ thống máy tính với bộ nhớ chính có kích thước 800MB Hệ thống sử dụng địa chỉ logic 32 bit Kích thước trang được sử dụng là 16KB Yêu cầu xác định các thông số sau:
a Cho biết số bit dùng cho địa chỉ offset
b Số khung trang vật lý
c Số trang logic trong không gian tiến trình
d Cho địa chỉ logic 203030, yêu cầu đổi sang dạng <p, d>
Đáp án:
a Cho biết số bit dùng cho địa chỉ offset
Trang 2Là số bit cần dùng để mô tả tất cả các địa chỉ trong một trang
Kích thước một trang: 16KB = 24.210B = 16384B = 214B Số bit cần dùng là 14 bit
b Số khung trang vật lý
Kích thước bộ nhớ vật lý
Kích thước trang =
800 MB
16 KB/trang=
800∗220B
16∗210B /trang=50∗2
10
=51200 trang
c Số trang logic trong không gian tiến trình
Kích thước không giantiếntrình
Kích thước trang =
248B
16 KB /trang=
248B
214B/trang=2
34
trang
d Cho địa chỉ logic 203030, yêu cầu đổi sang dạng <p, d>
Do kích thước trang là 16384, lấy 203030 chia cho 16384 được 12 dư 6422
Vậy, 203030 được đổi thành <p = 12, d = 6422>
Câu 4:
Cho một hệ thống máy tính sử dụng bộ nhớ ảo với cơ chế toàn cục (nghĩa là khi chọn
trang nạn nhân, hệ thống có thể chọn trang của một tiến trình khác) Hệ thống có 3 khung trang, kích thước của mỗi trang là 1024 bytes Hệ thống sử dụng địa chỉ logic 16 bit.
a Cho biết số bit dùng cho địa chỉ offset và số trang logic tối đa trong không gian tiến trình
b Cho địa chỉ logic 263168, yêu cầu đổi sang dạng <p,d>, nêu nhận xét về tính hợp lệ của
địa chỉ trên
Đáp án:
a + Cho biết số bit dùng cho địa chỉ offset.
Là số bit cần dùng để mô tả tất cả các địa chỉ trong một trang
Kích thước một trang: 10KB = 210B = 1024B = 210B Số bit cần dùng là 10 bit
+ Số trang logic trong không gian tiến trình
Kích thước không giantiếntrình
Kích thước trang =
216B
10 KB/trang=
216B
210B /trang=2
6
trang
+ Số trang logic tối đa trong không gian tiến trình = 26 * 3 = 218
b Cho địa chỉ logic 263168, yêu cầu đổi sang dạng <p,d>,
Do kích thước trang là 1024, lấy 263168 chia cho 1024 được 257 dư 0
Vậy, 263168 được đổi thành <p = 257, d = 0>
Câu 5 :
Một hệ thống máy tính với bộ nhớ chính có kích thước 640MB Hệ thống sử dụng địa chỉ logic 32 bit Kích thước trang được sử dụng là 16KB Yêu cầu
xác định các thông số sau:
a Cho biết số bit dùng cho địa chỉ offset
b Số khung trang vật lý
c Số trang logic trong không gian tiến trình
d Cho địa chỉ logic 20030, yêu cầu đổi sang dạng <p, d>.
Đáp án:
a Cho biết số bit dùng cho địa chỉ offset
Là số bit cần dùng để mô tả tất cả các địa chỉ trong một trang
Kích thước một trang: 16KB = 24.210B = 16384B = 214B Số bit cần dùng là 14 bit
b Số khung trang vật lý
2
Trang 3Kích thước bộ nhớ vật lý
Kích thước trang =
640 MB
16 KB/trang=
640∗220B
16∗210B /trang=40∗2
10
=40906 trang
c Số trang logic trong không gian tiến trình
Kích thước không giantiếntrình
Kích thước trang =
232B
16 KB/trang=
232B
214B/trang=2
18trang
d Cho địa chỉ logic 20030, yêu cầu đổi sang dạng <p, d>
Do kích thước trang là 8192, lấy 20030 chia cho 8192 được 2 dư 3646
Vậy, 20030 được đổi thành <p = 2, d = 3646>
Câu 6:
Một hệ thống máy tính với bộ nhớ chính có kích thước 512MB Hệ thống sử dụng địa chỉ logic 32 bit Kích thước trang được sử dụng là 32KB Yêu cầu xác định các thông số sau:
a Cho biết số bit dùng cho địa chỉ offset
b Số khung trang vật lý
c Số trang logic trong không gian tiến trình
d Cho địa chỉ logic 23032, yêu cầu đổi sang dạng <p, d> p là số trang, d là độ lệch trong
trang
Đáp án:
a Cho biết số bit dùng cho địa chỉ offset
Là số bit cần dùng để mô tả tất cả các địa chỉ trong một trang
Kích thước một trang: 32KB = 25.210B = 32768B = 215B Số bit cần dùng là 15 bit
b Số khung trang vật lý
Kích thước bộ nhớ vật lý
Kích thước trang =
512 MB
32 KB/trang=
512∗220B
32∗210B /trang=16∗2
10
=16384 trang
c Số trang logic trong không gian tiến trình
Kích thước không giantiếntrình
Kích thước trang =
232B
32 KB/trang=
232B
215B/trang=2
17trang
d Cho địa chỉ logic 23032, yêu cầu đổi sang dạng <p, d>.
Do kích thước trang là 32768, lấy 23032 chia cho 32768 được 0 dư 23032
Vậy, 23032 được đổi thành <p = 0, d = 23032 >
Trang 4Câu 7 :
Tại sao phải điều độ tiến trình qua đoạn găng? Hãy trình bày phương pháp sử dụng cặp chỉ thị STI và CLI
Đáp án:
a Tại sao phải điều độ tiến trình qua đoạn găng:
Để hạn chế các lỗi có thể xảy ra do sử dụng tài nguyên găng, hệ điều hành phải điều khiển các tiến trình sao cho, tại một thời điểm chỉ có một tiến trình nằm trong đoạn găng, nếu
có nhiều tiến trình cùng muốn vào (thực hiện) đoạn găng thì chỉ có một tiến trình được vào, các tiến trình khác phải chờ, một tiến trình khi ra khỏi (kết thúc) đoạn găng phải báo cho hệ điều hành và/hoặc các tiến trình khác biết để các tiến trình này vào đoạn găng, vv Các công
tác điều khiển tiến trình thực hiện đoạn găng của hệ điều hành được gọi là điều độ tiến trình qua đoạn găng Để công tác điều độ tiến trình qua đoạn găng được thành công, thì cần phải
có sự phối hợp giữa vi xử lý, hệ điều hành và người lập trình Vi xử lý đưa ra các chỉ thị, hệ điều hành cung cấp các công cụ để người lập trình xây dựng các sơ đồ điều độ hợp lý, để đảm bảo sự độc quyền trong việc sử dụng tài nguyên găng của các tiến trình
b Hãy trình bày phương pháp sử dụng cặp chỉ thị STI và CLI.
Một số vi xử lý cung cấp cặp chỉ thị CLI và STI để người lập trình thực hiện các thao tác
mở ngắt (STI: Setting Interrupt) và cấm ngắt (CLI: Clean Interrupt) của hệ thống trong lập trình Người lập trình có thể dùng cặp chỉ thị này để tổ chức điều độ cho các tiến trình như sau: Trước khi vào đoạn găng tiến trình thực hiện chỉ thị CLI, để yêu cầu cấm các ngắt trong
hệ thống, khi đó ngắt đồng hồ không thể phát sinh, nghĩa là không có một tiến trình nào khác
có thể phát sinh, nhờ đó mà tiến trình trong đoạn găng toàn quyền sử dụng tài nguyên găng cho đến hết thời gian xử lý của nó Khi kết thúc truy xuất tài nguyên găng, tiến trình ra khỏi đoạn găng, tiến trình thực hiện chỉ thị STI để cho phép ngắt trở lại Khi đó các tiến trình khác
có thể tiếp tục hoạt động và có thể vào đoạn găng
Trong sơ đồ điều độ này tiến trình Pi được viết như sau:
Procedure P(i: integer);
Begin
Repeat
<Đoạn găng của P>;
<Đoạn không găng>;
Until F
End;
{ }
4
Trang 5Câu 8 :
Trình bày sơ đồ điều độ chung cho các tiến trình Trình bày phương pháp điều độ sử dụng khóa chung
Đáp án:
Trang 6Câu 9 :
Tại sao phải điều độ tiến trình qua đoạn găng? Hãy trình bày phương pháp sử dụng chỉ thị Test and Set (TSL)
Đáp án:
a Để hạn chế các lỗi có thể xảy ra do sử dụng tài nguyên găng, hệ điều hành phải điều khiển các tiến trình sao cho, tại một thời điểm chỉ có một tiến trình nằm trong đoạn găng, nếu
có nhiều tiến trình cùng muốn vào (thực hiện) đoạn găng thì chỉ có một tiến trình được vào, các tiến trình khác phải chờ, một tiến trình khi ra khỏi (kết thúc) đoạn găng phải báo cho hệ điều hành và/hoặc các tiến trình khác biết để các tiến trình này vào đoạn găng, vv Các công
tác điều khiển tiến trình thực hiện đoạn găng của hệ điều hành được gọi là điều độ tiến trình qua đoạn găng Để công tác điều độ tiến trình qua đoạn găng được thành công, thì cần phải
có sự phối hợp giữa vi xử lý, hệ điều hành và người lập trình Vi xử lý đưa ra các chỉ thị, hệ điều hành cung cấp các công cụ để người lập trình xây dựng các sơ đồ điều độ hợp lý,
b Để tổ chức điều độ cho những trường hợp như vậy, một số vi xử lý cung cấp một chỉ thị đặc biệt cho phép kiểm tra và cập nhật nội dung một vùng nhớ trong một thao tác không thể phân chia đươc, gọi là Test and Set lock (TSL) TSL được định nghĩa như sau:
Function TestAndSetLock (Var:Integer):Boolean;
Begin
IF I = 0 Then
Begin End
TestAndSetLock:=True; {thể tách rời}
End;
Else
TestAndSetLock := False
{ }
Để tổ chức điều độ tiến trình với TSL chương trình phải sử dụng biến chia sẻ Lock, khời gán bằng 0 Theo đó, mỗi tiến trình trước khi vào đoạn găng phải kiểm tra giá trị của Lock Nếu Lock = 0 thì vào đoạn găng Nếu Lock = 1 thì phải đợi cho đến khi Lock = 0 Như vậy, trước khi vào đoạn găng tiến trình phải gọi hàm TestAndSetLock, để kiểm tra giá trị trả về của hàm này:
1 Nếu bằng False, là đang có một tiến trình trong đoạn găng, thì phải chờ cho đến khi hàm trả
về True, có một tiến trình vừa ra khỏi đoạn găng
2 Nếu bằng True, thì tiến trình sẻ vào đoạn găng để sử dụng tài nguyên găng Khi kết thúc sử dụng tài nguyên găng ra khỏi đoạn găng thì tiến trình phải đặt lại gía trị của Lock, Lock =
0, để các tiến trình khác có thể vào đoạn găng
Câu 10 :
Trình bày sơ đồ điều độ chung cho các tiến trình Trình bày phương pháp điều độ sử dụng khóa riêng
6
Trang 7Đáp án:
b Mỗi tiến trình sử dụng một biến khoá Lock riêng, tương ứng với một tài nguyên găng trong hệ thống Biến khoá riêng của tất cả các tiến trình đều được khởi gán bằng 0, tức là chưa vào đoạn găng
Theo đó, mỗi tiến trình trước khi vào đoạn găng ứng với một tài nguyên găng nào đó thì trước hết phải kiểm tra biến khoá riêng, tương ứng với tài nguyên găng mà tiến trình muốn truy xuất, của tất cả các tiến trình còn lại:
1 Nếu tồn tại một biến khoá riêng của một tiến trình nào đó bằng 1, Lock = 1, tức là đã
có một tiến trình nào đó ở trong đoạn găng, thì tiến trình phải chờ ngoài đoạn găng cho đến khi tất cả biến khoá riêng = 0
2 Nếu tất cả các biến khóa riêng của các tiến trình đều = 0, Lock = 0, tức là không có tiến trình nào trong đoạn găng, thì tiến trình thiết lập quyền vào đoạn găng, đặt Lock = 1, và vào đoạn găng Tiến trình vừa ra khỏi đoạn găng phải đặt Lock = 0, để các tiến trình khác có thể vào đoạn găng
Sau đây là sơ đồ điều độ dùng biến khoá riêng cho hai tiến trình đồng thời P1 và P2
Hai tiến trình này dùng hai biến khoá riêng là Lock1 và Lock2:
Trang 88