1. Trang chủ
  2. » Giáo án - Bài giảng

Đề cương (1)

5 7 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 157,25 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Để 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ề

Trang 1

Câu 1: 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

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ý, để đả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 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;

{ -}

Câu 2 : 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

a Program MultualExclution;

Const

N = … /*số lượng tiến trình */

{ -}

Procedure P(i: integer);

Begin

Repeat

EnterCritical(R); {kiểm tra và xác lập quyền vào đoạn găng}

<Đoạn găng của P>;

ExitCritical(R); {xác lập khi rời đoạn găng}

<Đoạn không găng của>;

Until F

End;

{ -}

BEGIN {*chương trình chính chứa các tiến trình đồng thời*}

Trang 2

PerBegin

P(1);

P(2);

P(n);

ParEnd;

END

{ -}

b Với mỗi tài nguyên găng, hệ điều hành dùng một biến chung để điều khiển việc sử dụng tài nguyên này của các tiến trình đồng thời Tạm gọi là biến chung này là Lock, Lock được chia sẻ cho nhiều tiến trình và được khởi gán = 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 = 1, tức là đã có tiến trình nào đó trong đoạn găng, thì tiến trình phải chờ cho đến khi Lock = 0 (có thể chuyển sang trạng thái blocked để chờ)

• Nếu 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

Trong sơ đồ điều độ này tiến trình P được viết như sau:

Procedure P(Lock: integer);

Begin

Repeat

While Lock = 1 DO ; {đợi cho đến khi Lock = 0}

Lock :=1; {thiết lập quyền vào đoạn găng}

<Đoạn găng của P>; {vào đoạn găng}

Lock:= 0; {thông báo là đã rời đoạn găng }

<Đoạn không găng>;

Until F

End;

{ -}

Câu 3: 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:

1 Cho biết số bit dùng cho địa chỉ offset (1 điểm)

2 Số khung trang vật lý (1 điểm)

3 Số trang logic trong không gian tiến trình (1 điểm)

4 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 (1 điểm)

Trang 3

Câu 1: 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)

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 I:Integer):Boolean;

Begin

IF I = 0 Then Begin

TestAndSetLock:=True; {thể tách rời}

End Else

TestAndSetLock := False End;

{ -}

Để 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 2: 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

a Program MultualExclution;

Const

N = … /*số lượng tiến trình */

{ -}

Procedure P(i: integer);

Begin

Repeat

EnterCritical(R); {kiểm tra và xác lập quyền vào đoạn găng}

<Đoạn găng của P>;

ExitCritical(R); {xác lập khi rời đoạn găng}

<Đoạn không găng của>;

Trang 4

Until F

End;

{ -}

BEGIN {*chương trình chính chứa các tiến trình đồng thời*}

PerBegin

P(1);

P(2);

P(n);

ParEnd;

END

{ -}

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:

Program MultualExclution;

Const N:2;

Var

Lock1, Lock2: byte;

BEGIN

Lock1 = 0; Lock2 = 0;

ParBegin

While Lock2 = 1 Do ; {P2 đang ở trong đoạn găng } Lock1 := 1; {P1 thiết lập quyền vào đoạn găng}

<Đoạn găng của P1>;

<Đoạn không găng của P1>;

Until F

While Lock1 = 1 Do; {P1 đang ở trong đoạn găng } Lock2 := 1; {P2 thiết lập quyền vào đoạn găng}

<Đoạn găng của P2>;

<Đoạn không găng của P2>;

Until F

ParEnd

END

{ -}

Trang 5

Câu 3: 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:

1 Cho biết số bit dùng cho địa chỉ offset (1 điểm)

2 Số khung trang vật lý (1 điểm)

3 Số trang logic trong không gian tiến trình (1 điểm)

4 Cho địa chỉ logic 20030, yêu cầu đổi sang dạng <p, d>.(1 điểm)

Ngày đăng: 11/11/2021, 07:53

w