Tin học
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Cau hoi he dieu hanh

Go down

Cau hoi he dieu hanh Empty Cau hoi he dieu hanh

Bài gửi  minhtd83 16/5/2009, 15:22

Mình gửi các bạn câu hỏi của đợt thi tốt nghiệp vừa rồi nè. Mình chỉ còn nợ môn này thôi và mong sớm được ra trường. Chúc các bạn thi tốt

1. So Sánh đa luồng với đa tiến trình ?

Giống nhau:

Đều có thông tin trạng thái

Luồng còn được gọi là tiến trình nhẹ

Nhiều luồng hoặc nhiều tiến trình có thể liên quan đến một chu trình

Chia sẻ tài nguyên cho nhau, tăng tốc tính toán, đảm bảo tính đơn thể

Khác nhau

Do luồng cùng vận hành trong 1 vùng địa chỉ, vì vậy dễ dùng chung tài nguyên hơn đa tiến trình ví dụ mượn đồ trong gia đình dễ mượn đồ hơn của hàng xóm

Do luồng chung tài nguyên với luồng cha nên việc tạo lập và chuyển đổi ngữ cảnh cũng nhanh hơn tiến trình

Ví dụ: việc ngăn riêng ra một phòng trong nhà thì dễ hơn được nhà nước cấp cho một căn hộ

Cấp phát tài nguyên cho bộ nhớ thì tốn kém

Lập trình đa luồng thì dễ hơn lập trình đa tiến trình



2. Những ích lợi của công nghệ Đa luồng

Khả năng đáp ứng tốt hơn : Trong khi một luồng bị ách hoặc quá bận, luồng khác vẫn vận hành bình thường (Luồng chính của trình duyệt vẫn tương tác với người dùng trong khi dữ liệu được lấy về).

Chia sẽ tài nguyên : Theo mặc định, các luồng có thể dùng chung bộ nhớ và tài nguyên của luồng cha. Vài luồng cùng vận hành trong 1 vùng địa chỉ, do đó dễ dùng chung tài nguyên hơn so với trường hợp đa tiến trình.

Tiết kiệm : Cấp phát bộ nhớ và tài nguyên cho tiến trình là công việc tốn kém. Do luồng chung tài nguyên với cha và các luồng khác, việc tạo lập và chuyển ngữ cảnh cũng nhanh hơn ( Solaris 2 : Tạo tiến trình chậm hơn 30 lần, chuyển ngữ cảnh chậm hơn 5 lần ).

Tận dụng được thế mạnh của kiến trúc đa xử lý : Đa luồng làm tăng tính song song trên hệ máy nhiều CPU. Mỗi luồng có thể chạy bởi CPU riêng.

Lập trình đa luồng dễ hơn lập trình đa tiến trình.



3. Nguyên lý Tập luồng (Thread Pools)?

Tập luồng (Thread Pools):

- Tiến trình cha tạo lập sẵn một tập luồng khi khởi động.

- Các luồng trong tập luồng luôn sẵn sàng chờ công việc.

- Khi tiến trình cha (ví dụ Web Server) nhận thêm một yêu cầu, một luồng được đánh thức và đưa vào vận hành.

- Phục vụ xong, luồng được đưa trả về tập luồng.

- Nếu số yêu cầu lớn hơn số luồng trong tập, tiến trình cha chờ đến khi có luồng được giải phóng.

4. Mục đích của Đồng bộ hoá công việc các tiến trình là:

- Tận duïng toái ña CPU

- Toái ña Coâng suaát vaø Thoâng suaát.

- Toái thieåu Toång thôøi gian, Thôøi gian chôø vaø Thôøi gian ñaùp öùng.



5 . Thế nào là đoạn tương tranh, Thế nào là tính loại trừ lẫn nhau ?



Giả sử có n tiến trình {P0, P1, … , Pn-1}. Mỗi tiến trình có đoạn mã gọi là đoạn tương tranh, trong đó tiến trình có thể truy cập và thay đổi vùng nhớ, tập tin hay tài nguyên chung.

Tính loại trừ lẫn nhau hay loại trừ tương hỗ về phương diện thời gian : Khi có 1 tiến trình đang ở trong đoạn tương tranh của nó thì không có tiến trình nào khác trong nhóm cũng tại vùng như vậy, nghĩa là : Mỗi thời điểm chỉ có 1 tiến trình được phép truy cập và / hoặc thay đổi tài nguyên chung.



6.Hai ứng dụng của Semaphore (đèn hiệu)

n Phương tiện đồng bộ hoá được đề xuất năm 1965.

n Đèn hiệu được mô tả bằng một biến kiểu nguyên với 2 tác nguyên là Wait (Chờ) và Signal (Báo hiệu):

typedef int semaphore; // Định nghĩa kiểu Đèn hiệu

wait (semaphore S) {

while ( S <= 0 ); // Chờ bận nếu S<=0

S --; // Giảm S đi 1

}



signal (semaphore S) {

S ++; // Tăng S lên 1

}

n Việc kiểm tra S <= 0 và giảm S (trong Wait) hoặc tăng S (trong Signal) phải được thực hiện trọn vẹn (không xảy ra ngắt trong thời gian thi hành), do đó WaitSignal được gọi là các tác nguyên (Atomic Operations).

minhtd83

Tổng số bài gửi : 7
Join date : 22/03/2009

Về Đầu Trang Go down

Cau hoi he dieu hanh Empty Re: Cau hoi he dieu hanh

Bài gửi  minhtd83 16/5/2009, 15:22

7. Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải đồng bộ hoá bằng 3 đèn hiệu semFull, semEmpty và Mutex.

- Tiến trình sản xuất (Producer) tạo ra dòng thông tin để tiến trình tiêu thụ (Consumer) sử dụng.

- Ví dụ: Compiler và Assembler vừa là nhà sản xuất vừa là nhà tiêu thụ. Compiler tạo ra mã dùng cho Assembler, tiếp theo Assembler sản sinh mã máy làm đầu vào cho Loader hoặc Linkage Editor.

- Phát biểu bài toán: Bộ nhớ đệm Buffer bao gồm một số hữu hạn các khoang chứa (Items). Producer lần lượt đưa các sản phẩm S1, S2,…vào các khoang của Buffer. Consumer lấy sản phẩm ra theo đúng thứ tự. Công việc của các tiến trình phải đồng bộ với nhau: không đưa ra sản phẩm khi hết chỗ trống, không lấy được sản phẩm khi chưa có.



- Thuật giải đồng bộ hoá bằng 3 đèn hiệu: semFull (quản lý số sản phẩm có trong bộ đệm, giá trị ban đầu bằng 0), semEmpty (quản lý số khoang còn trống, giá trị ban đầu bằng số khoang của bộ đệm) và Mutex (đảm bảo tính loại trừ tương hỗ, nghĩa là mỗi thời điểm chỉ có 1 tiến trình sản xuất hay tiêu thụ được truy cập/cập nhật tài nguyên dùng chung, giá trị ban đầu bằng 1).

o Thuật giải cho Producer:

wait(semEmpty);

wait(Mutex);

// Đưa sản phẩm vào Buffer

..........................

signal(semFull);

signal(Mutex);

o Thuật giải cho Consumer:

wait(semFull);

wait(Mutex);

// Lấy sản phẩm từ Buffer

..........................

signal(semEmpty);

signal(Mutex);



8. Lập trình Bài toán Sản xuất-Tiêu thụ dùng semFull-semEmpty-CritSec

- Giả sử có bộ nhớ đệm BUFFER bao gồm các khoảng Item được tiến trình Producer lần lược đưa các sản phẩm S1, S2… Sn vào. Tiến trình Consumer lần lượt lấy sản phẩm ra theo đúng thứ tự.

- Công việc của Producer phải đồng bộ với Consumer, không được đưa sản phẩm vào khi Buffer đầy và lấy sản phẩm ra khi chưa có .

Buffer


S1

S2

S3

…..



In


Out


Buffer_size= 2



Buffer_size= -1



















· Đồng bộ hóa bằng 2 đèn hiệu ( Semophone)

Ta dùng 2 đèn hiệu SemFull và SemEmpty

SemFull : kiểm tra số Sản phẩm trong bộ đệm.

SemEmpty: Kiểm tra số vùng trống trong bộ đệm.

Hai tác nguyên: Wait và Signal

Producer()

{ // Chờ khi bộ đệm đầy

WaitforSignal(SemFull,INITE)

//Sản xuất sản phẩm

Releave(SemEmpty)

//Bộ đệm đã có Sản phẩm

}

Consumer()

{ // Chờ đến khi có sản phẩm

WaitforSignal(SemEmpty ,INITE)

//tiêu thụ sản phẩm

Releave(SemFull)

//Bộ đệm đã có chổ trống

}



9. Bốn tình huống ra quyết định của trình điều phối CPU

· Các tình huống ra quyết định của trình điều phối :

o Khi tiến trình chuyển từ Running sang Waiting (chờ I/O, chờ tiến trình con)

o Khi tiến trình chuyển từ Running sang Ready (do ngắt xảy ra)

o Khi tiến trình chuyển từ Waiting sang Ready (khi kết thúc I/O)

o Khi tiến trình kết thúc công việc

· Sơ đồ điều phối chỉ tiến hành trong các tình huống 1 và 4 được gọi là Điều phối không tiếm quyền : Tiến trình gữ CPU cho đến khi kết thúc bình thường hoặc khi chuyển sang trạng thái Waiting ( cách làm trong Windown 3.1 và Maccintosh OS). Dùng khi máy không có Timer.

· Sơ đồ điều phối tiến hành trong cả 4 tình huống được gọi là Điều phối có tiếm quyền.



10. Phân biệt Preemptive Scheduling với Non-Preemptive Scheduling

- Giống nhau: cùng điều phối CPU (choïn tieán trình trong Ready Queue ñeå caáp thôøi gian CPU (chuyeån sang traïng thaùi Running)).

- Khác nhau: Preemptive Scheduling thì điều phối CPU có tiếm quyền còn Non-Preemptive Scheduling thì điều phối CPU không tiếm quyền.

- Non-Preemptive Scheduling: Có nghĩa là khi có 1 tiến trình P1,P2 xuất hiện thì nó sẽ thực hiện xong tiến trình P1 , sau đó mới thực hiện tiến trình P2 (caùch laøm trong Windows 3.1 vaø Macintosh OS)

- Preemptive Scheduling : có nghĩa là khi có 1 tiến trình P1,P2,P3 xuất hiện thì nó sẽ thực hiện 1 phần của tiến trình P1 , sau đó nó tiếm quyền và thực hiện 1 phần của tiến trình P2 , sau đó nó tiếm quyền và thực hiện 1 phần của tiến trình P3. Cứ như vậy nó sẽ thực hiện xong các tiến trình



11. Phân biệt thuật giải Multilevel Queue Scheduling với Multilevel Feedback Queue Scheduling. Cho các ví dụ minh hoạ.

- Giống nhau: Thuật giải Multilevel Queue Scheduling (Điều phối hàng chờ nhiều mức) và Multilevel Feedback Queue Scheduling (Điều phối hàng chờ nhiều mức có điều tiết) cùng sử dụng nhiều mức hàng chờ với độ ưu tiên khác nhau, mỗi hàng chờ có thể sử dụng thuật giải riêng, ví dụ Round-Robin (RRS) hoặc FCFS.

- Khác nhau: Multilevel Feedback Queue Scheduling cho phép điều chuyển (điều tiết) tiến trình từ hàng chờ này sang hàng chờ kia (hạ cấp độ hay nâng cấp độ ưu tiên), nghĩa là mềm dẻo hơn Multilevel Queue Scheduling.

- Ví dụ minh hoạ: Phòng bán vé tàu hoả có thể có nhiều cửa bán vé với mức ưu tiên khác nhau, trong khi chỉ có 1 người bán vé (1 CPU) phải luân chuyển giữa các cửa để phục vụ đủ loại người mua vé (các tiến trình) như người mua bình thường, người mua là thương binh, nguời mất sức lao động,...



12. Mục đích của điều phối ?

Tối đa công suất và thông suất.

Tối thiểu tổng thời gian, thời gian chờ và thời gian đáp ứng.



13. Tiêu chí điều phối ?

Công suất CPU : Thực tế đạt từ 40% - 90% thời gian CPU. CPU càng bận càng tốt.

Thông suất hệ thống : Số tiến trình hoàn tất trong 1 đơn vị thời gian, vd : 1 TT / giờ, 10 TT / giây.

Tổng thời gian làm việc : Kể từ khi bắt đầu đến khi kết thúc tiến trình ( Bao gồm tổng thời gian chờ tại Ready Queue, tổng thời gian sử dụng CPU, tổng thời gian I/O, …)

Thời gian chờ : Tổng thời gian chờ tại Ready Queue.

Thời gian đáp ứng : Thời gian kể từ khi người dùng đặt yêu cầu cho đến khi có phản hồi đầu tiên.



14. Phân biệt SJFS có tiếm quyền và SJFS không tiếm quyền ?

SJFS không tiếm quyền : tiến trình hiện thời được thực hiện đến hết khoảng CPU của nó.

SJFS có tiếm quyền : tiến trình mới có Next CPU Burst nhỏ hơn khoảng thời gian CPU còn lại của tiến trình đang vận hành sẽ được chọn thay thế ( Shortest – Remaining – First ).

minhtd83

Tổng số bài gửi : 7
Join date : 22/03/2009

Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết