hedieuhanh_hoangthe

Màu nền
Font chữ
Font size
Chiều cao dòng

ĐÁP ÁN

Đề thi số: 01

Môn thi: Hệ điều hành Hệ: Cao đẳng CNTT

Hình thức thi/KT: Tự luận Thời gian: 90 phút

Câu 1 (2.5 điểm): Anh (Chị) hãy nêu các chức năng cơ bản của hệ điều hành:

Hệ điều hành là một hệ thống các chương trình đóng vai trò trung gian giữa người sử dụng và phần cứng máy tính. Mục tiêu chính của nó là cung cấp một môi trường thuận lợi để người sử dụng dễ dàng thực hiện các chương trình ứng dụng của họ trên máy tính và khai thác triệt để các chức năng của phần cứng máy tính. Để đạt được mục tiêu trên hệ điều hành phải thực hiện các chức năng cơ bản sau:

- Giả lập một máy tính mở rộng: Giúp người sử dụng khai thác các chức năng của phần cứng máy tính dễ dàng và hiệu quả hơn. Khi cần tác động vào máy tính thực người sử dụng chỉ cần tác động vào máy tính mở rộng, mọi sự chuyển đổi thông tin điều khiển từ máy tính mở rộng sang máy tính thực hoặc ngược lại đều do hệ điều hành thực hiện.

- Quản lý tài nguyên của hệ thống: Trong mọi trường hợp tất cả các chương trình, tiến trình nếu cần được cấp phát tài nguyên để hoạt động thì sớm hay muộn nó đều được cấp phát và được đưa vào trạng thái hoạt động. Khi người sử dụng cần thực hiện một chương trình hay khi một chương trình cần nạp thêm một tiến trình mới vào bộ nhớ thì hệ điều hành phải cấp phát không gian nhớ cho chương trình, tiến trình đó để chương trình, tiến trình đó nạp được vào bộ nhớ và hoạt động được. Ngoài ra hệ điều hành còn phải tổ chức bảo vệ các không gian nhớ đã cấp cho các chương trình, tiến trình để tránh sự truy cập bất hợp lệ và sự tranh chấp bộ nhớ giữa các chương trình, tiến trình, đặc biệt là các tiến trình đồng thời hoạt động trên hệ thống.

- Hệ điều hành cho phép thực hiện nhiều chương trình đồng thời trong môi trường đa tác vụ - Multitasking Environment.

- Hệ điều hành tự nạp nó vào bộ nhớ - It loads itself into memory.

- Hệ điều hành giúp cho chương trình của người sử dụng giao tiếp với API (Application Programming Interface) hay thực hiện một lời gọi đến các hàm/thủ tục của API.

- Nạp dữ liệu cần thiết vào bộ nhớ - It loads the requied data into memory: Dữ liệu do người sử dụng cung cấp được đưa vào bộ nhớ để xử lý. Hệ điều hành phải luôn theo dõi bản đồ cấp phát bộ nhớ, nơi dữ liệu và chương trình được lưu trữ ở đó.

- Hệ điều hành biên dịch các chỉ thị chương trình - It interprets program instructions: Hệ điều hành phải đọc và giải mã các thao tác cần được thực hiện, nó được viết trong chương trình của người sử dụng. Hệ điều hành cũng chịu trách nhiệm sinh ra thông báo lỗi khi hệ thống gặp lỗi trong khi đang hoạt động.

- Hệ điều hành quản lý tài nguyên - It managers resources: Nó đảm bảo việc sử dụng thích hợp tất cả các tài nguyên của hệ thống như là: bộ nhớ, đĩa cứng, máy in, ...

Câu 2 (2.5 điểm): Anh (Chị) hãy phân loại hệ điều hành theo cách mà hệ điều hành thực hiện các công việc, các tác vụ, các tiến trình của người sử dụng:

- Hệ điều hành xử lý theo lô đơn giản: Hệ điều hành loại này thực hiện các tác vụ lần lượt theo những chỉ thị đã được xác định trước. Khi một tác vụ chấm dứt thì hệ thống sẽ tự động thực hiện tác vụ tiếp theo mà không cần sự can thiệp từ bên ngoài, do đó hệ thống đạt tốc độ thực hiện cao. Để thực hiện được điều này hệ điều hành phải có bộ phận giám sát thường trực để giám sát việc thực hiện của các tác vụ trong hệ thống, bộ phận này thường trú trong bộ nhớ chính.

- Hệ điều hành xử lý theo lô đa chương: Hệ điều hành xử lý theo lô đa chương sẽ khắc phục hạn chế lãng phí thời gian xử lý của processor của hệ điều hành xử lý theo lô đơn giản. Hệ điều hành loại này có khả năng thực hiện nhiều tác vụ, nhiều chương trình đồng thời.

- Hệ điều hành chia sẻ thời gian: Nguyên tắc của hệ điều hành chia sẻ thời gian tương tự như trong hệ điều hành xử lý theo lô đa chương nhưng việc chuyển processor từ tác vụ, tiến trình này sang tác vụ, tiến trình khác không phụ thuộc vào việc tác vụ, tiến trình hiện tại có truy xuất đến thiết bị vào/ra hay không mà chỉ phụ thuộc vào sự điều phối processor của hệ điều hành.

- Hệ điều hành đa vi xử lý: Là các hệ điều hành dùng để điều khiển sự hoạt động của các hệ thống máy tính có nhiều vi xử lý. Các hệ điều hành đa vi xử lý (multiprocessor) gồm có 2 loại: Đa xử lý đối xứng (SMP: symmetric) và Đa xử lý bất đối xứng (ASMP: asymmetric)

- Hệ điều hành xử lý thời gian thực: Hệ điều hành này khắc phục nhược điểm của hệ điều hành xử lý theo lô, tức là nó có khả năng cho kết quả tức thời, chính xác sau mỗi tác vụ. Trong hệ điều hành này các tác vụ cầu thực hiện không được đưa vào hàng đợi mà được xử lý tức thời và trả lại ngay kết quả hoặc thông báo lỗi cho người sử dụng có yêu cầu. Hệ điều hành này hoạt động đòi hỏi sự phối hợp cao giữa phần mềm và phần cứng.

- Hệ điều hành mạng: Là các hệ điều hành dùng để điều khiển sự hoạt động của mạng máy tính. Ngoài các chức năng cơ bản của một hệ điều hành, các hệ điều hành mạng còn phải thực hiện việc chia sẻ và bảo vệ tài nguyên của mạng.

* Tóm lại: Các hệ điều hành ra đời sau luôn tìm cách khắc phục các hạn chế của hệ điều hành trước đó và phát triển nhiều hơn nữa để đáp ứng yêu cầu ngày càng cao của của người sử dụng và chương trình người sử dụng, cũng như khai thác tối đa các chức năng của phần cứng máy tính để nâng cao hiệu suất của hệ thống. Nhưng chức năng của hệ điều hành càng cao thì chi phí cho nó cũng tăng theo và cấu trúc của hệ điều hành cũng sẽ phức tạp hơn.

Câu 3(2.5 điểm): Anh (Chị) hãy phân loại các tiến trình và nêu chức năng cơ bản của nó trong hệ thống hệ điều hành:

* Tiến trình tuần tự: là các tiến trình mà điểm khởi tạo của nó là điểm kết thúc của tiến trình trước đó. Nó chỉ xuất hiện trong các hệ điều hành đơn nhiệm đa chương, như hệ điều hành MS_DOS, loại tiến trình này tồn tại nhiều hạn chế, điển hình nhất là không khai thác tối đa thời gian xử lý của processor.

* Tiến trình song song: là các tiến trình mà điểm khởi tạo của tiến trình này mằn ở thân của các tiến trình khác, tức là có thể khởi tạo một tiến trình mới khi các tiến trình trước đó chưa kết thúc. Tiến trình song song được chia thành nhiều loại, bao gồm:

- Tiến trình song song độc lập: là các tiến trình hoạt động song song nhưng không có quan hệ thông tin với nhau, trong trường hợp này hệ điều hành phải thiết lập cơ chế bảo vệ dữ liệu của các tiến trình, và cấp phát tài nguyên cho các tiến trình một cách hợp lý.

- Tiến trình song song có quan hệ thông tin: trong quá trình hoạt động các tiến trình thường trao đổi thông tin với nhau, trong một số trường hợp tiến trình gởi thông báo cần phải nhận được tín hiệu từ tiến trình nhận để tiếp tục, điều này dễ dẫn đến bế tắc khi tiến trình nhận tín hiệu không ở trong trạng thái nhận hay tiến trình gởi không ở trong trạng thái nhận thông báo trả lời.

- Tiến trình song song phân cấp: Trong quá trình hoạt động một tiến trình có thể khởi tạo các tiến trình khác hoạt động song song với nó, tiến trình khởi tạo được gọi là tiến trình cha, tiến trình được tạo gọi là tiến trình con. Trong mô hình này hệ điều hành phải giải quyết vấn đề cấp phát tài nguyên cho các tiến trình con. Tiến trình con nhận tài nguyên ở đâu, từ tiến trình cha hay từ hệ thống. Để giải quyết vấn đề này hệ điều hành đưa ra 2 mô hình quản lý tài nguyên: Thứ nhất, mô hình tập trung, trong mô hình này hệ điều hành chịu trách nhiệm phân phối tài nguyên cho tất cả các tiến trình trong hệ thống. Thứ hai, mô hình phân tán, trong mô hình này hệ điều hành cho phép tiến trình con nhận tài nguyên từ tiến trình cha, tức là tiến trình khởi tạo có nhiệm vụ nhận tài nguyên từ hệ điều hành để cấp phát cho các tiến trình mà nó tạo ra, và nó có nhiệm vụ thu hồi lại tài nguyên đã cấp phát trả về cho hệ điều hành trước khi kết thúc.

- Tiến trình song song đồng mức: là các tiến trình hoạt động song song sử dụng chung tài nguyên theo nguyên tắc lần lượt, mỗi tiến trình sau một khoảng thời gian chiếm giữ tài nguyên phải tự động trả lại tài nguyên cho tiến trình kia.

Câu 4 (2.5 điểm): Anh (Chị) hãy nêu phương pháp dùng biến khoá chung để điều độ tiến trình qua đoạn găng.

Xuất phát từ nguyên tắc cơ bản của tổ chức độc quyền là, tại mỗi thời điểm chỉ có duy nhất một tiến trình có thể truy xuất đến một vùng nhớ chia sẻ, các hệ điều hành sử dụng biến khoá chung để tổ chức truy xuất độc quyền trên tài nguyên găng. Phương pháp này còn gọi là phương pháp Busy and Waitting (bận và đợi), nó được nhà toán học người Hà Lan tên là Dekker đề xuất.

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 đã rời đoạn găng}

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

Until .F.

End;

Sơ đồ điều độ dùng biến khoá chung này đơn giản, dễ xây dựng nhưng vẫn xuất hiện hiện tượng chờ đợi tích cực, khi chờ cho đến khi Lock = 0 (While Lock = 1 DO;). Hiện tương chờ đợi tích cực gây lãng phí thời gian của processor.

Nếu một tiến trình trong đoạn găng không thể ra khỏi đoạn găng, thì các tiến trình chờ ngoài đoạn găng có thể chờ đợi vô hạn (vì Lock không được đặt lại = 0).

ĐÁP ÁN

Đề thi số: 02

Môn thi: Hệ điều hành Hệ: Cao đẳng CNTT

Hình thức thi/KT: Tự luận Thời gian: 90 phút

Câu 1 (2.5 điểm): Anh (Chị) hãy nêu lịch sử phát triển của hệ điều hành.

- Thế hệ 1 (1945 - 1955): Vào những năm 1950 máy tính dùng ống chân không ra đời. Ở thế hệ này mỗi máy tính được một nhóm người thực hiện, bao gồm việc thiết kế, xây dựng chương trình, thao tác, quản lý, .... Ở thế hệ này người lập trình phải dùng ngôn ngữ máy tuyệt đối để lập trình. Khái niệm ngôn ngữ lập trình và hệ điều hành chưa được biết đến trong khoảng thời gian này.

- Thế hệ 2 (1955 - 1965): Máy tính dùng bán dẫn ra đời, và được sản xuất để cung cấp cho khách hàng. Bộ phận sử dụng máy tính được phân chia rõ ràng: người thiết kế, người xây dựng, người vận hành, người lập trình, và người bảo trì. Ngôn ngữ lập trình Assembly và Fortran ra đời trong thời kỳ này. Với các máy tính thế hệ này để thực hiện một thao tác, lập trình viên dùng Assembly hoặc Fortran để viết chương trình trên phiếu đục lỗ sau đó đưa phiếu vào máy, máy thực hiện cho kết qủa ở máy in.

Hệ thống xử lý theo lô cũng ra đời trong thời kỳ này. Theo đó, các thao tác cần thực hiện trên máy tính được ghi trước trên băng từ, hệ thống sẽ đọc băng từ , thực hiện lần lượt và cho kết quả ở băng từ xuất. Hệ thống xử lý theo lô hoạt động dưới sự điều khiển của một chương trình đặc biệt, chương trình này là hệ điều hành sau này.

- Thế hệ 3 (1965 - 1980): Máy IBM 360 được sản xuất hàng loạt để tung ra thị trường. Các thiết bị ngoại vi xuất hiện ngày càng nhiều, do đó các thao tác điều khiển máy tính và thiết bị ngoại vi ngày càng phức tạp hơn. Trước tình hình này nhu cầu cần có một hệ điều hành sử dụng chung trên tất cả các máy tính của nhà sản xuất và người sử dụng trở nên bức thiết hơn. Và hệ điều hành đã ra đời trong thời kỳ này.

Hệ điều hành ra đời nhằm điều phối, kiểm soát hoạt động của hệ thống và giải quyết các yêu cầu tranh chấp thiết bị. Hệ điều hành đầu tiên được viết bằng ngôn ngữ Assembly. Hệ điều hành xuất hiện khái niệm đa chương, khái niệm chia sẻ thời gian và kỹ thuật Spool. Trong giai đoạn này cũng xuất hiện các hệ điều hành Multics và Unix.

- Thế hệ 4 (từ 1980): Máy tính cá nhân ra đời. Hệ điều hành MS_DOS ra đời gắn liền với máy tính IBM_PC. Hệ điều hành mạng và hệ điều hành phân tán ra đời trong thời kỳ này.

Câu 2 (2.5 điểm): Anh (Chị) hãy nêu nhiệm vụ của các thành phần trong User Mode của Windows 2000.

Các chương trình ứng dụng của người sử dụng chạy trong User mode. User mode bao gồm các thành phần: System support processes, Service Processes, User applications, và Environment subsystems, mỗi thành phần này sở hữu một không gian địa chỉ tiến trình riêng. Cụ thể như sau:

- Các tiến trình hỗ trợ hệ thống (System support processes): Như là tiến trình logon, quản lý các Session, các thành phần này không phải là các dịch vụ của Windows 2000, do đó nó không được khởi động bởi thành phần Service Control Manager.

- Các tiến trình dịch vụ (Service processes): Đó là các dịch vụ chủ Win32, như là dịch Task Scheduler và Spooler, và cungc có thể là các ứng dụng server Windows 2000 như là Microsoft SQL Server, Exchange Server và các thành phần chạy như là các dịch vụ.

- Các ứng dụng người sử dụng (User applications): Nó có thể là một trong năm loại sau: Win32, Windows 3.1, MS_DOS, POSIX, hoặc OS/2 1.2.

- Các hệ thống con môi trường (Environment subsystems): nó đưa ra các dịch vụ nguyên thuỷ của hệ điều hành, các ứng dụng của người sử dụng thông qua một tập các hàm có thể gọi được, do đó nó cung cấp một môi trường hệ điều hành cho các ứng dụng. Windows 2000 đưa ra ba hệ thống con môi trường: Win32, POSIX và OS/2, trong đó Win32 là hệ thống con đặc biệt nhất, Windows 2000 không thể chạy nếu không có nó, do đó nó phải luôn ở trạng thái chạy ngay sau khi hệ thống được khởi động. POSIX và OS/2 được cấu hình là chỉ khởi tạo khi cần. Các ứng dụng được viết trên các hệ điều hành khác nhau có thể chạy trên Windows 2000 nhờ sử dụng các environment subsystem.

- Hệ thống con các thư viện liên kết động (Subsystem DLLs): trong Windows 2000 các ứng dụng của người sử dụng không thể gọi trực tiếp các dịch vụ nguyên thủy của hệ điều hành, mà chúng phải thông qua một hoặc nhiều các DLL. Vai trò của các Subsystem DLL là chuyển các yêu cầu gọi hàm vào bên trong các dịch vụ hệ thống của Windows 2000.

Câu 3 (2.5 điểm): Anh (Chị) hãy phân tích sự song song trong các hệ điều hành đa nhiệm đa chương trên hệ thống uniprocessor.

Các tiến trình song song xuất hiện trong các hệ điều hành đa nhiệm đa chương, trên cả hệ thống uniprocessor và multiprocessor. Nhưng sự song song thực, chỉ có ở các hệ thống multiprocessor, trong hệ thống này mỗi processor chịu trách nhiệm thực hiện một tiến trình. Sự song song trên các hệ thống uniprocessor là sự song song giả (do chỉ có một processor vật lý), các tiến trình song song trên hệ thống này thực chất là các tiến trình thay nhau sử dụng processor, tiến trình này đang chạy thì có thể dừng lại để nhường processor cho tiến trình khác chạy và sẽ tiếp tục lại sau đó khi có được processor. Đây là trường hợp mà: điểm khởi tạo của tiến trình này nằm ở thân của tiến trình khác.

Giả sử trong hệ thống có 3 tiến trình sẵn sàng P1, P2, P3 thì quá trình chuyển processor giữa 3 tiến trình này có thể minh họa như sau:

Thời điểm Trạng thái các tiến trình

t1 P1: được cấp processor

t2 P1: bị thu hồi processor (khi chưa kết thúc)

P3: được cấp processor

t3 P3: bị thu hồi processor (khi chưa kết thúc)

P1: được cấp processor

t4 P1: kết thúc và trả lại processor

P2: được cấp processor

t5 P2: kết thúc và trả lại processor

P3: được cấp processor

t6 P3: kết thúc và trả lại processor

Sơ đồ minh hoại sự hoạt động "song song" của các tiến trình P1, P2, P3 trong hệ thống uniprocessor:

Câu 4 (2.5 điểm): Anh (Chị) hãy nêu phương pháp dùng biến khoá riêng để điều độ tiến trình qua đoạn găng

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:

- 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.

- 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.

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 như sau:

Program MultualExclution;

Const N:2;

Var

Lock1, Lock2: byte;

BEGIN

Lock1 = 0; Lock2 = 0;

ParBegin

P1: Repeat {tiến trình P1}

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>;

Lock1 := 0; {P1 ra khỏi đoạn găng}

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

Until .F.

P2: Repeat {tiến trình P2}

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>;

Lock2 := 0; {P2 ra khỏi đoạn găng}

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

Until .F.

ParEnd

END.

Sơ đồ này có thể xảy ra một lỗi nghiêm trọng đó là: Có thể có hai tiến trình cùng nằm trong đoạn găng. Nguyên nhân của lỗi này là do việc kiểm tra quyền vào đoạn găng và và việc xác lập quyền vào đoạn găng của tiến trình bị tách rời khi thực hiện.

ĐÁP ÁN

Đề thi số: 03

Môn thi: Hệ điều hành Hệ: Cao đẳng CNTT

Hình thức thi/KT: Tự luận Thời gian: 90 phút

Câu 1 (2.5 điểm): Nêu các thành phần cơ bản của hệ điều hành.

- Thành phần quản lý tiến trình: Có nhiệm vụ thực hiện:

+ Tạo lập, hủy bỏ tiến trình.

+ Tạm dừng, tái kích hoạt tiến trình.

+ Tạo cơ chế thông tin liên lạc giữa các tiến trình.

+ Tạo cơ chế đồng bộ hóa giữa các tiến trình.

- Thành phần quản lý bộ nhớ chính: Có nhiệm vụ thực hiện:

+ Cấp phát, thu hồi vùng nhớ.

+ Ghi nhận trạng thái bộ nhớ chính.

+ Bảo vệ bộ nhớ.

+ Quyết định tiến trình nào được nạp vào bộ nhớ.

- Thành phần quản lý xuất/ nhập: Có nhiệm vụ sau:

+ Gửi mã lệnh điều khiển đến thiết bị.

+ Tiếp nhận yêu cầu ngắt (Interrupt) từ các thiết bị.

+ Phát hiện và xử lý lỗi.

- Thành phần quản lý bộ nhớ phụ (đĩa): có nhiệm vụ thực hiện:

+ Quản lý không gian trống trên đĩa.

+ Định vị lưu trữ thông tin trên đĩa.

+ Lập lịch cho vấn đề ghi/ đọc thông tin trên đĩa của đầu từ.

- Thành phần quản lý tập tin: có nhiệm vụ thực hiện:

+ Tạo/ xoá một tập tin/ thư mục.

+ Bảo vệ tập tin khi có hiện tượng truy xuất đồng thời.

+ Cung cấp các thao tác xử lý và bảo vệ tập tin/ thư mục.

+ Tạo mối quan hệ giữa tập tin và bộ nhớ phụ chứa tập tin.

+ Tạo cơ chế truy xuất tập tin thông qua tên tập tin.

- Thành phần thông dịch lệnh: Đây là bộ phận quan trọng của hệ điều hành, nó đóng vai trò giao tiếp giữa hệ điều hành và người sử dụng. Thành phần này chính là shell mà chúng ta đã biết ở trên. Một số hệ điều hành chứa shell trong nhân (kernel) của nó, một số hệ điều hành khác thì shell được thiết kế dưới dạng một chương trình đặc biệt.

- Thành phần bảo vệ hệ thống: Trong môi trường hệ điều hành đa nhiệm có thể có nhiều tiến trình hoạt động đồng thời, thì mỗi tiến trình phải được bảo vệ để không bị tác động, có chủ ý hay không chủ ý, của các tiến trình khác. Trong trường hợp này hệ điều hành cần phải có các cơ chế để luôn đảm bảo rằng các File, Memory, CPU và các tài nguyên khác mà hệ điều hành đã cấp cho một chương trình, tiến trình thì chỉ có chương trình tiến trình đó được quyền tác động đến các thành phần này.

Nhiệm vụ trên thuộc thành phần bảo vệ hệ thống của hệ điều hành. Thành phần này điều khiển việc sử dụng tài nguyên, đặc biệt là các tài nguyên dùng chung, của các tiến trình, đặc biệt là các tiến trình hoạt động đồng thời với nhau, sao cho không xảy ra sự tranh chấp tài nguyên giữa các tiến trình hoạt đồng đồng thời và không cho phép các tiến trình truy xuất bất hợp lệ lên các vùng nhớ của nhau.

- Thành phần kết nối mạng và truyền thông: dành cho các hệ điều hành mạng, các hệ điều hành phân tán.

Ngoài ra, để đáp ứng yêu cầu của người sử dụng và chương trình người sử dụng các nhiệm vụ của hệ điều hành được thiết kế dưới dạng các dịch vụ: Thi hành chương trình; Thực hiện các thao tác xuất nhập dữ liệu; Thực hiện các thao tác trên hệ thống tập tin; Trao đổi thông tin giữa các tiến trình; Phát hiện và xử lý lỗi.

Câu 2 (2.5 điểm): Nêu nhiệm vụ của các thành phần trong Kernel mode của Windows 2000.

Các dịch vụ hệ thống và các chương trình điều khiển thiết bị của hệ điều hành chạy trong kernel mode. Kernel mode chỉ đến một chế độ của việc thực hiện trong processor mà ở đó nó có toàn quyền truy cập đến tất cả hệ thống bộ nhớ và tất cả các chỉ thị của CPU. Kernel mode gồm các thành phần :

- Windows 2000 Executive: Chứa các dịch vụ cơ sở của hệ điều hành: quản lý bộ nhớ, quản lý các tiến trình và tiểu trình, quản lý sự an toàn hệ thống, quản lý I/O, và thực hiện việc truyền thông liên tiến trình.

- Windows 2000 Kernel: Bao gồm các chức năng cấp thấp của hệ điều hành như là: lập lịch tiểu trình, đồng bộ cho các hệ thống multiprocessor.

- Device drivers (các trình điều khiển thiết bị): điều khiển thiết bị phần cứng và điều khiển hệ thống file và mạng. Điều khiển thiết bị phần cứng có nhiệm vụ chuyển các lời gọi hàm I/O từ phía người sử dụng thành các yêu cầu I/O thiết bị phần cứng cụ thể.

- HAL: Hardware Abstraction Layer (lớp phần cứng trừu tượng): Lớp này làm trừu tượng hoá các chi tiết phần cứng bên trong của PC, làm cho Windows 2000 Server tương thích với nhiều kiến trúc phần cứng khác nhau. Nó cho phép Windows 2000 chạy trên các nền vi xử lý khác nhau như Intel và Alpha, mà không cần duy trì 2 version khác của Windows 2000 Execute. HAL bảo vệ tất cả phần cứng và hỗ trợ các nền cụ thể cần cho mỗi thành phần trong hệ thống đối với tất cả phần cứng và hỗ trợ nềm cụ thể. HAL được cài đặt như là một DLL và đóng vai trò như là giao diện giữa các thành phần phần cứng và phần mềm.

- Window Manager and Graphical Device Interface (GDI): Window Manager và GDI được sử dụng để quản lý hệ thống hiển thị. Window Manager bảo vệ màn hình và nhận các lệnh từ các thiết bị nhập như là Mouse hoặc bàn phím. GDI điều khiển việc vẽ và thực hiện các thao tác đồ hoạ với sự giúp đỡ của các chức năng khác nhau được định nghĩa trước.

Câu 3 (2.5 điểm): Phân tích tiến trình 3 trạng thái trong quản lý tiến trình.

Tiến trình ba trạng thái tồn tại ở một trong ba trạng thái, đó là: ready, running, blocked:

+ Trạng thái Ready (sẵn sàng): Ngay sau khi khởi tạo tiến trình, đưa tiến trình vào hệ thống và cấp phát đầy đủ tài nguyên (trừ processor) cho tiến trình, hệ điều hành đưa tiến trình vào trạng thái ready.

+ Trạng thái Running (thực hiện): Là trạng thái mà tiến trình đang được sở hữu processor để hoạt động.

+ Trạng thái Blocked (khoá): Là trạng thái mà tiến trình đang chờ để được cấp phát thêm tài nguyên, để một sự kiện nào đó xảy ra, hay một quá trình vào/ra kết thúc.

Sơ đồ chuyển trạng thái của các tiến trình:

Sơ đồ chuyển tiến trình vào các hàng đợi

Trong đó:

1 - Admit: Tiến trình được khởi tạo, được đưa vào hệ thống, được cấp phát đầy đủ tài nguyên chỉ thiếu processor.

2 - Dispatch: Tiến trình được cấp processor để bắt đầu thực hiện/ xử lý.

3 - Release: Tiến trình hoàn thành xử lý và kết thúc.

4 - Time_out: Tiến trình bị bộ điều phối tiến trình thu hồi processor, do hết thời gian được quyền sử dụng processor, để cấp phát cho tiến trình khác.

5 - Event wait: Tiến trình đang chờ một sự kiện nào đó xảy ra hay đang chờ một thao vào/ra kết thúc hay tài nguyên mà tiến trình yêu cầu chưa được hệ điều hành đáp ứng.

6 - Event Occurs: Sự kiện mà tiến trình chờ đã xảy ra, thao tác vào/ra mà tiến trình đợi đã kết thúc, hay tài nguyên mà tiến trình yêu cầu đã được hệ điều hành đáp ứng,

Bộ phận điều phối tiến trình thu hồi processor từ một tiến trình đang thực hiện trong các trường hợp sau:

- Tiến trình đang thực hiện hết thời gian (time-out) được quyền sử dụng processor mà bộ phận điều phối dành cho nó.

- Có một tiến trình mới phát sinh và tiến trình mới này có độ ưu tiên cao hơn tiến trình hiện tại.

- Có một tiến trình mới phát sinh và tiến trình này mới cần một khoảng thời gian của processor nhỏ hơn nhiều so với khoảng thời gian còn lại mà tiến trình hiện tại cần processor.

Tại một thời điểm xác định trong hệ thống có thể có nhiều tiến trình đang ở trạng thái Ready hoặc Blocked nhưng chỉ có một tiến trình ở trạng thái Running. Các tiến trình ở trạng thái Ready và Blocked được chứa trong các hàng đợi (Queue) riêng.

Câu 4 (2.5 điểm): Thế nào là tài nguyên găng và đoạn găng? Nêu các yêu cầu của công tác điều độ qua đoạn găng.

* Tài nguyên găng (Critical Resource)

Những tài nguyên được hệ điều hành chia sẻ cho nhiều tiến trình hoạt động đồng thời dùng chung, mà có nguy cơ dẫn đến sự tranh chấp giữa các tiến trình này khi sử dụng chúng, được gọi là tài nguyên găng. Tài nguyên găng có thể là tài nguyên phần cứng hoặc tài nguyên phần mền, có thể là tài nguyên phân chia được hoặc không phân chia được, nhưng đa số thường là tài nguyên phân chia được như là: các biến chung, các file chia sẻ.

* Đoạn găng (Critical Section)

Đoạn code trong các tiến trình đồng thời, có tác động đến các tài nguyên có thể trở thành tài nguyên găng được gọi là đoạn găng hay miền găng. Tức là, các đoạn code trong các chương trình dùng để truy cập đến các vùng nhớ chia sẻ, các tập tin chia sẻ được gọi là các đoạn găng.

* Yêu cầu của công tác điều độ qua đoạn găng:

+ Tại một thời điểm không thể có hai tiến trình nằm trong đoạn găng.

+ Nếu có nhiều tiến trình đồng thời cùng xin được vào đoạn găng thì chỉ có một tiến trình được phép vào đoạn găng, các tiến trình khác phải xếp hàng chờ trong hàng đợi.

+ Tiến trình chờ ngoài đoạn găng không được ngăn cản các tiến trình khác vào đoạn găng.

+ Không có tiến trình nào được phép ở lâu vô hạn trong đoạn găng và không có tiến trình phải chờ lâu mới được vào đoạn găng (chờ trong hàng đợi).

+ Nếu tài nguyên găng được giải phóng thì hệ điều hành có nhiệm vụ đánh thức các tiến trình trong hàng đợi ra để tạo điều kiện cho nó vào đoạn găng.

Nguyên lý cơ bản của điều độ là tổ chức truy xuất độc quyền trên tài nguyên găng, nhưng sự bắt buộc độc quyền này còn tồn tại hai hạn chế lớn:

+ Có thể dẫn đến tắc nghẽn (Deadlock) trong hệ thống.

+ Các tiến trình có thể bị đói (Stravation) tài nguyên.

ĐÁP ÁN

Đề thi số: 04

Môn thi: Hệ điều hành Hệ: Cao đẳng CNTT

Hình thức thi/KT: Tự luận Thời gian: 90 phút

Câu 1 (2.5 điểm): Nêu các cấu trúc cơ bản của hệ điều hành

- Hệ thống đơn khối (monolithic systems): Trong hệ thống này hệ điều hành là một tập hợp các thủ tục, mỗi thủ tục có thể gọi thực hiện một thủ tục khác bất kỳ lúc nào khi cần thiết. Với cấu trúc này chương trình của người sử dụng có thể truy xuất trực tiếp đến các chi tiết phần cứng bằng cách gọi một thủ tục cấp thấp, điều này gây khó khăn cho hệ điều hành trong việc kiểm soát và bảo vệ hệ thống.

- Các hệ thống phân lớp (Layered Systems): Hệ thống được chia thành một số lớp, mỗi lớp được xây dựng dựa vào lớp bên trong. Lớp trong cùng thường là phần cứng, lớp ngoài cùng là giao diện với người sử dụng. Mỗi lớp là một đối tượng trừu tượng, chứa dựng bên trong nó các dữ liệu và thao tác xử lý dữ liệu đó. Lớp n chứa dựng một cấu trúc dữ liệu và các thủ tục có thể được gọi bởi lớp n+1 hoặc ngược lại có thể gọi các thủ tục ở lớp n-1.

- Máy ảo (Virtual Machine): Mục đích của việc sử dụng máy ảo là xây dựng các hệ thống đa chương với nhiều tiến trình thực hiện đồng thời, mỗi tiến trình được cung cấp một máy ảo với đầy đủ tài nguyên, tất nhiên là tài nguyên ảo, để nó thực hiện được. Trong cấu trúc này phần nhân của hệ thống trở thành bộ phận tổ chức giám sát máy ảo, phần này chịu trách nhiệm giao tiếp với phần cứng, chia sẻ tài nguyên hệ thống để tạo ra nhiều máy ảo, hoạt động độc lập với nhau, để cung cấp cho lớp trên.

- Mô hình Client/ Server (client/ server model): hệ điều hành bao gồm nhiều tiến trình đóng vai trò Server có các chức năng chuyên biệt như quản lý tiến trình, quản lý bộ nhớ, ..., phần hạt nhân cuả hệ điều hành chỉ thực hiện nhiệm vụ tạo cơ chế thông tin liên lạc giữa các tiến trình Client và Server. Các tiến trình trong hệ thống được chia thành 2 loại:

* Tiến trình bên ngoài hay tiến trình của chương trình người sử dụng được gọi là các tiến trình Client.

* Tiến trình của hệ điều hành được gọi là tiến trình Server.

Khi cần thực hiện một chức năng hệ thống các tiến trình Client sẽ gởi yêu cầu tới tiến trình server tương ứng, tiến trình server sẽ xử lý và trả lời kết quả cho tiến trình Client. Hệ thống này dễ thay đổi và dễ mở rộng hệ điều hành. Để thay đổi các chức năng của hệ điều hành chỉ cần thay đổi ở server tương ứng, để mở rộng hệ điều hành chỉ cần thêm các server mới vào hệ thống.

Câu 2 (2.5 điểm): Anh (Chị) hãy nêu một số khái niệm cơ bản của hệ điều hành.

- Tiến trình (Process): là một bộ phận của chương trình đang thực hiện. Tiến trình là đơn vị làm việc cơ bản của hệ thống, trong hệ thống có thể tồn tại nhiều tiến trình cùng hoạt động, trong đó có cả tiến trình của hệ điều hành và tiến trình của chương trình người sử dụng. Các tiến trình này có thể hoạt động đồng thời với nhau. Hệ thống phải cung cấp đầy đủ tài nguyên cho tiến trình trong suốt quá trình hoạt động.

- Tiểu trình (Thread): Các hệ điều hành hiện đại sử dụng mô hình đa tiểu trình, trong một tiến trình có thể có nhiều tiểu trình. Tiểu trình cũng là đơn vị xử lý cơ bản trong hệ thống, nó cũng xử lý tuần tự đoạn code của nó, nó cũng sở hữu một con trỏ lệnh, một tập các thanh ghi và một vùng nhớ stack riêng và các tiểu trình cũng chia sẻ thời gian xử lý của processor như các tiến trình.

- Bộ xử lý lệnh (Shell): Shell là một bộ phận hay một tiến trình đặc biệt của hệ điều hành, nó có nhiệm vụ nhận lệnh của người sử dụng, phân tích lệnh và phát sinh tiến trình mới để thực hiện yêu cầu của lệnh, tiến trình mới này được gọi là tiến trình đáp ứng yêu cầu. Shell nhận lệnh thông qua cơ chế dòng lệnh, đó chính là nơi giao tiếp giữa người sử dụng và hệ điều hành.

- Sự phân lớp hệ thống (System Layering): Hệ điều hành sử dụng cơ chế phân lớp, nhằm tạo điều kiện giúp người sử dụng dễ dàng hơn khi tiếp cận tới tài nguyên máy tính. Tuỳ từng đối tượng người sử dụng mà có thể tiếp cận đến các lớp một cách khác nhau. Về cơ bản, các lớp được tổ chức như sau:

Trong cùng là hệ điều hành.

Tiếp theo là các ngôn ngữ lập trình

...

Ngoài cùng là các chương trình ứng dụng .

Việc phân lớp nhằm mục đích đáp ứng yêu cầu của nhiều đối tượng người sử dụng khác nhau hệ điều. Người sử dụng tác động vào lớp trong cùng sẽ gặp nhiều khó khăn hơn khi tác động vào lớp ngoài cùng.

- Tài nguyên hệ thống (System Resources), bao gồm: Bộ nhớ; Processor; Virtual Resources; Tài nguyên phân chia được; Tài nguyên không phân chia được; Một cách tổng quát có thể chia tài nguyên của hệ thống thành hai loại cơ bản:

* Tài nguyên không gian: là các không gian lưu trữ của hệ thống như đĩa, bộ nhớ chính, quan trọng nhất là không gian bộ nhớ chính, nơi lưu trữ các chương trình đang được CPU thực hiện.

* Tài nguyên thời gian: chính là thời gian thực hiện lệnh của processor và thời gian truy xuất dữ liệu trên bộ nhớ.

- Lời gọi hệ thống (System Calls): để tạo môi trường giao tiếp giữa chương trình của người sử dụng và hệ điều hành. Mỗi lời gọi hệ thống tương ứng với một thủ tục trong thư viện của hệ điều hành, do đó chương trình của người sử dụng có thể gọi thủ tục để thực hiện một lời gọi hệ thống.

Câu 3 (2.5 điểm): Phân tích tiến trình 4 trạng thái trong quản lý tiến trình.

Tiến trình bốn trạng thái tồn tại ở một trong ba trạng thái, đó là: ready, running, blocked, Suspend:

+ Trạng thái Ready: Ngay sau khi khởi tạo tiến trình, đưa tiến trình vào hệ thống và cấp phát đầy đủ tài nguyên (trừ processor) cho tiến trình, hệ điều hành đưa tiến trình vào trạng thái ready.

+ Trạng thái Running (thực hiện): Là trạng thái mà tiến trình đang được sở hữu processor để hoạt động.

+ Trạng thái Blocked (khoá): Là trạng thái mà tiến trình đang chờ để được cấp phát thêm tài nguyên, để một sự kiện nào đó xảy ra, hay một quá trình vào/ra kết thúc.

+ Trạng thái Suspend (tạm dừng): Lưu trữ tiến trình trên bộ nhớ phụ.

Trong đó:

1 : Tiến trình được khởi tạo, được đưa vào hệ thống, được cấp phát đầy đủ tài nguyên chỉ thiếu processor.

2 : Tiến trình được cấp processor để bắt đầu thực hiện/ xử lý.

3 : Tiến trình hoàn thành xử lý và kết thúc.

4 : Tiến trình bị bộ điều phối tiến trình thu hồi processor, do hết thời gian được quyền sử dụng processor, để cấp phát cho tiến trình khác.

5 : Tiến trình đang chờ một sự kiện nào đó xảy ra hay đang chờ một thao vào/ra kết thúc hay tài nguyên mà tiến trình yêu cầu chưa được hệ điều hành đáp ứng.

6: Sự kiện mà tiến trình chờ đã xảy ra, thao tác vào/ra mà tiến trình đợi đã kết thúc, hay tài nguyên mà tiến trình yêu cầu đã được hệ điều hành đáp ứng,

7: Hệ điều hành chuyển tiến trình ra đĩa để thu hồi lại không gian nhớ đã cấp cho tiến trình hoặc thu hồi lại tài nguyên đã cấp cho tiến trình để cấp cho một tiến trình khác đang rất cần được nạp vào bộ nhớ tại thời điểm hiện tại.

8: Kích hoạt lại tiến trình được lưu ở bộ nhớ phụ

Bộ phận điều phối tiến trình thu hồi processor từ một tiến trình đang thực hiện trong các trường hợp sau: Tiến trình đang thực hiện hết thời gian; Có tiến trình mới này có độ ưu tiên cao hơn tiến trình hiện tại. Có một tiến trình mới phát sinh và tiến trình mới này cần một khoảng thời gian của processor nhỏ hơn nhiều so với khoảng thời gian còn lại mà tiến trình hiện tại cần processor.

Câu 4 (2.5 điểm): Nêu các thao tác điều khiển tiến trình.

- Khi khởi tạo tiến trình:

+ Hệ điều hành gán PID cho tiến trình mới và đưa tiến trình vào danh sách quản lý của hệ thống, dùng một entry trong PCB để chứa các thông tin liên quan đến tiến trình mới tạo ra này.

+ Cấp phát không gian bộ nhớ cho tiến trình.

+ Khởi tạo các thông tin cần thiết cho khối điều khiển tiến trình như các PID của tiến trình cha (nếu có), thông tin trạng thái tiến trình, độ ưu tiên của tiến trình, thông tin ngữ cảnh của processor vv.

+ Cung cấp đầy đủ các tài nguyên cần thiết nhất, trừ processor, để tiến trình có thể vào trạng thái ready được hoặc bắt đầu hoạt động được.

+ Đưa tiến trình vào một danh sách tiến trình nào đó: ready list, suspend list, waiting list, vv, sao cho phù hợp với chiến lược điều phối tiến trình hiện tại của bộ phận điều phối tiến trình của hệ điều hành.

+ Khi một tiến trình tạo lập một tiến trình con, tiến trình con có thể được cấp phát tài nguyên bởi chính hệ điều hành, hoặc được tiến trình cha cho thừa hưởng một số tài nguyên ban đầu của nó.

- Khi kết thúc tiến trình:

+ Thu hồi tài nguyên đã cấp phát cho tiến trình.

+ Loại bỏ tiến trình ra khỏi danh sách quản lý của hệ thống.

+ Huỷ bỏ khối điều khiển tiến trình.

- Khi thay đổi trạng thái:

+ Lưu (save) ngữ cảnh của processor, bao gồm thanh ghi bộ đếm chương trình (PC: program counter) và các thanh ghi khác.

+ Cập nhật PCB của tiến trình, sao cho phù hợp với trạng thái mới của tiến trình, bao gồm trạng thái mới của tiến trình, các thông tin tính toán, vv.

+ Di chuyển PCB của tiến trình đến một hàng đợi thích hợp, đế đáp ứng được các yêu cầu của công tác điều phối tiến trình.

+ Chọn một tiến trình khác để cho phép nó thực hiện.

+ Cập nhật PCB của tiến trình vừa được chọn thực hiện ở trên, chủ yếu là thay đổi trạng thái của tiến trình đến trạng thái running.

+ Cập nhật các thông tin liên quan đến quản lý bộ nhớ. Bước này phụ thuộc vào các yêu cầu chuyển đổi địa chỉ bộ nhớ đang được sử dụng.

+ Khôi phục (Restore) lại ngữ cảnh của processor và thay đổi giá trị của bộ đếm chương trình và các thanh ghi khác sao cho phù hợp với tiến trình được chọn ở trên, để tiến trình này có thể bắt đầu hoạt động được.

ĐÁP ÁN

Đề thi số: 05

Môn thi: Hệ điều hành Hệ: Cao đẳng CNTT

Hình thức thi/KT: Tự luận Thời gian: 90 phút

Câu 1 (2.5 điểm): Anh (Chị) hãy nêu các chức năng cơ bản của hệ điều hành.

Hệ điều hành là một hệ thống các chương trình đóng vai trò trung gian giữa người sử dụng và phần cứng máy tính. Mục tiêu chính của nó là cung cấp một môi trường thuận lợi để người sử dụng dễ dàng thực hiện các chương trình ứng dụng của họ trên máy tính và khai thác triệt để các chức năng của phần cứng máy tính. Để đạt được mục tiêu trên hệ điều hành phải thực hiện các chức năng cơ bản sau:

- Giả lập một máy tính mở rộng: Giúp người sử dụng khai thác các chức năng của phần cứng máy tính dễ dàng và hiệu quả hơn. Khi cần tác động vào máy tính thực người sử dụng chỉ cần tác động vào máy tính mở rộng, mọi sự chuyển đổi thông tin điều khiển từ máy tính mở rộng sang máy tính thực hoặc ngược lại đều do hệ điều hành thực hiện.

- Quản lý tài nguyên của hệ thống: Trong mọi trường hợp tất cả các chương trình, tiến trình nếu cần được cấp phát tài nguyên để hoạt động thì sớm hay muộn nó đều được cấp phát và được đưa vào trạng thái hoạt động. Khi người sử dụng cần thực hiện một chương trình hay khi một chương trình cần nạp thêm một tiến trình mới vào bộ nhớ thì hệ điều hành phải cấp phát không gian nhớ cho chương trình, tiến trình đó để chương trình, tiến trình đó nạp được vào bộ nhớ và hoạt động được. Ngoài ra hệ điều hành còn phải tổ chức bảo vệ các không gian nhớ đã cấp cho các chương trình, tiến trình để tránh sự truy cập bất hợp lệ và sự tranh chấp bộ nhớ giữa các chương trình, tiến trình, đặc biệt là các tiến trình đồng thời hoạt động trên hệ thống.

- Hệ điều hành cho phép thực hiện nhiều chương trình đồng thời trong môi trường đa tác vụ - Multitasking Environment.

- Hệ điều hành tự nạp nó vào bộ nhớ - It loads itself into memory.

- Hệ điều hành giúp cho chương trình của người sử dụng giao tiếp với API (Application Programming Interface) hay thực hiện một lời gọi đến các hàm/thủ tục của API.

- Nạp dữ liệu cần thiết vào bộ nhớ - It loads the requied data into memory: Dữ liệu do người sử dụng cung cấp được đưa vào bộ nhớ để xử lý. Hệ điều hành phải luôn theo dõi bản đồ cấp phát bộ nhớ, nơi dữ liệu và chương trình được lưu trữ ở đó.

- Hệ điều hành biên dịch các chỉ thị chương trình - It interprets program instructions: Hệ điều hành phải đọc và giải mã các thao tác cần được thực hiện, nó được viết trong chương trình của người sử dụng. Hệ điều hành cũng chịu trách nhiệm sinh ra thông báo lỗi khi hệ thống gặp lỗi trong khi đang hoạt động.

- Hệ điều hành quản lý tài nguyên - It managers resources: Nó đảm bảo việc sử dụng thích hợp tất cả các tài nguyên của hệ thống như là: bộ nhớ, đĩa cứng, máy in, ...

Câu 2 (2.5 điểm): Anh (Chị) hãy nêu nhiệm vụ của các thành phần trong User Mode của Windows 2000.

Các chương trình ứng dụng của người sử dụng chạy trong User mode. User mode bao gồm các thành phần: System support processes, Service Processes, User applications, và Environment subsystems, mỗi thành phần này sở hữu một không gian địa chỉ tiến trình riêng. Cụ thể như sau:

- Các tiến trình hỗ trợ hệ thống (System support processes): Như là tiến trình logon, quản lý các Session, các thành phần này không phải là các dịch vụ của Windows 2000, do đó nó không được khởi động bởi thành phần Service Control Manager.

- Các tiến trình dịch vụ (Service processes): Đó là các dịch vụ chủ Win32, như là dịch Task Scheduler và Spooler, và cungc có thể là các ứng dụng server Windows 2000 như là Microsoft SQL Server, Exchange Server và các thành phần chạy như là các dịch vụ.

- Các ứng dụng người sử dụng (User applications): Nó có thể là một trong năm loại sau: Win32, Windows 3.1, MS_DOS, POSIX, hoặc OS/2 1.2.

- Các hệ thống con môi trường (Environment subsystems): nó đưa ra các dịch vụ nguyên thuỷ của hệ điều hành, các ứng dụng của người sử dụng thông qua một tập các hàm có thể gọi được, do đó nó cung cấp một môi trường hệ điều hành cho các ứng dụng. Windows 2000 đưa ra ba hệ thống con môi trường: Win32, POSIX và OS/2, trong đó Win32 là hệ thống con đặc biệt nhất, Windows 2000 không thể chạy nếu không có nó, do đó nó phải luôn ở trạng thái chạy ngay sau khi hệ thống được khởi động. POSIX và OS/2 được cấu hình là chỉ khởi tạo khi cần. Các ứng dụng được viết trên các hệ điều hành khác nhau có thể chạy trên Windows 2000 nhờ sử dụng các environment subsystem.

- Hệ thống con các thư viện liên kết động (Subsystem DLLs): trong Windows 2000 các ứng dụng của người sử dụng không thể gọi trực tiếp các dịch vụ nguyên thủy của hệ điều hành, mà chúng phải thông qua một hoặc nhiều các DLL. Vai trò của các Subsystem DLL là chuyển các yêu cầu gọi hàm vào bên trong các dịch vụ hệ thống của Windows 2000.

Câu 3 (2.5 điểm): Phân tích tiến trình 3 trạng thái trong quản lý tiến trình.

Tiến trình ba trạng thái tồn tại ở một trong ba trạng thái, đó là: ready, running, blocked:

+ Trạng thái Ready (sẵn sàng): Ngay sau khi khởi tạo tiến trình, đưa tiến trình vào hệ thống và cấp phát đầy đủ tài nguyên (trừ processor) cho tiến trình, hệ điều hành đưa tiến trình vào trạng thái ready.

+ Trạng thái Running (thực hiện): Là trạng thái mà tiến trình đang được sở hữu processor để hoạt động.

+ Trạng thái Blocked (khoá): Là trạng thái mà tiến trình đang chờ để được cấp phát thêm tài nguyên, để một sự kiện nào đó xảy ra, hay một quá trình vào/ra kết thúc.

Sơ đồ chuyển trạng thái của các tiến trình:

Sơ đồ chuyển tiến trình vào các hàng đợi

Trong đó:

1 - Admit: Tiến trình được khởi tạo, được đưa vào hệ thống, được cấp phát đầy đủ tài nguyên chỉ thiếu processor.

2 - Dispatch: Tiến trình được cấp processor để bắt đầu thực hiện/ xử lý.

3 - Release: Tiến trình hoàn thành xử lý và kết thúc.

4 - Time_out: Tiến trình bị bộ điều phối tiến trình thu hồi processor, do hết thời gian được quyền sử dụng processor, để cấp phát cho tiến trình khác.

5 - Event wait: Tiến trình đang chờ một sự kiện nào đó xảy ra hay đang chờ một thao vào/ra kết thúc hay tài nguyên mà tiến trình yêu cầu chưa được hệ điều hành đáp ứng.

6 - Event Occurs: Sự kiện mà tiến trình chờ đã xảy ra, thao tác vào/ra mà tiến trình đợi đã kết thúc, hay tài nguyên mà tiến trình yêu cầu đã được hệ điều hành đáp ứng,

Bộ phận điều phối tiến trình thu hồi processor từ một tiến trình đang thực hiện trong các trường hợp sau:

- Tiến trình đang thực hiện hết thời gian (time-out) được quyền sử dụng processor mà bộ phận điều phối dành cho nó.

- Có một tiến trình mới phát sinh và tiến trình mới này có độ ưu tiên cao hơn tiến trình hiện tại.

- Có một tiến trình mới phát sinh và tiến trình này mới cần một khoảng thời gian của processor nhỏ hơn nhiều so với khoảng thời gian còn lại mà tiến trình hiện tại cần processor.

Tại một thời điểm xác định trong hệ thống có thể có nhiều tiến trình đang ở trạng thái Ready hoặc Blocked nhưng chỉ có một tiến trình ở trạng thái Running. Các tiến trình ở trạng thái Ready và Blocked được chứa trong các hàng đợi (Queue) riêng.

Câu 4 (2.5 điểm): Nêu các thao tác điều khiển tiến trình.

- Khi khởi tạo tiến trình:

+ Hệ điều hành gán PID cho tiến trình mới và đưa tiến trình vào danh sách quản lý của hệ thống, dùng một entry trong PCB để chứa các thông tin liên quan đến tiến trình mới tạo ra này.

+ Cấp phát không gian bộ nhớ cho tiến trình.

+ Khởi tạo các thông tin cần thiết cho khối điều khiển tiến trình như các PID của tiến trình cha (nếu có), thông tin trạng thái tiến trình, độ ưu tiên của tiến trình, thông tin ngữ cảnh của processor vv.

+ Cung cấp đầy đủ các tài nguyên cần thiết nhất, trừ processor, để tiến trình có thể vào trạng thái ready được hoặc bắt đầu hoạt động được.

+ Đưa tiến trình vào một danh sách tiến trình nào đó: ready list, suspend list, waiting list, vv, sao cho phù hợp với chiến lược điều phối tiến trình hiện tại của bộ phận điều phối tiến trình của hệ điều hành.

+ Khi một tiến trình tạo lập một tiến trình con, tiến trình con có thể được cấp phát tài nguyên bởi chính hệ điều hành, hoặc được tiến trình cha cho thừa hưởng một số tài nguyên ban đầu của nó.

- Khi kết thúc tiến trình:

+ Thu hồi tài nguyên đã cấp phát cho tiến trình.

+ Loại bỏ tiến trình ra khỏi danh sách quản lý của hệ thống.

+ Huỷ bỏ khối điều khiển tiến trình.

- Khi thay đổi trạng thái:

+ Lưu (save) ngữ cảnh của processor, bao gồm thanh ghi bộ đếm chương trình (PC: program counter) và các thanh ghi khác.

+ Cập nhật PCB của tiến trình, sao cho phù hợp với trạng thái mới của tiến trình, bao gồm trạng thái mới của tiến trình, các thông tin tính toán, vv.

+ Di chuyển PCB của tiến trình đến một hàng đợi thích hợp, đế đáp ứng được các yêu cầu của công tác điều phối tiến trình.

+ Chọn một tiến trình khác để cho phép nó thực hiện.

+ Cập nhật PCB của tiến trình vừa được chọn thực hiện ở trên, chủ yếu là thay đổi trạng thái của tiến trình đến trạng thái running.

+ Cập nhật các thông tin liên quan đến quản lý bộ nhớ. Bước này phụ thuộc vào các yêu cầu chuyển đổi địa chỉ bộ nhớ đang được sử dụng.

+ Khôi phục (Restore) lại ngữ cảnh của processor và thay đổi giá trị của bộ đếm chương trình và các thanh ghi khác sao cho phù hợp với tiến trình được chọn ở trên, để tiến trình này có thể bắt đầu hoạt động được.

KHOA

Nguyễn Văn Năng TỔ MÔN

Vũ Đình Minh

BỘ CÔNG THƯƠNG CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM

TRƯỜNG CĐCN THÁI NGUYÊN Độc lập - Tự do - Hạnh phúc

ĐÁP ÁN

Đề thi số: 06

Môn thi: Hệ điều hành Hệ: Cao đẳng CNTT

Hình thức thi/KT: Tự luận Thời gian: 90 phút

Câu 1 (2.5 điểm): Nêu các cấu trúc cơ bản của hệ điều hành

- Hệ thống đơn khối (monolithic systems): Trong hệ thống này hệ điều hành là một tập hợp các thủ tục, mỗi thủ tục có thể gọi thực hiện một thủ tục khác bất kỳ lúc nào khi cần thiết. Với cấu trúc này chương trình của người sử dụng có thể truy xuất trực tiếp đến các chi tiết phần cứng bằng cách gọi một thủ tục cấp thấp, điều này gây khó khăn cho hệ điều hành trong việc kiểm soát và bảo vệ hệ thống.

- Các hệ thống phân lớp (Layered Systems): Hệ thống được chia thành một số lớp, mỗi lớp được xây dựng dựa vào lớp bên trong. Lớp trong cùng thường là phần cứng, lớp ngoài cùng là giao diện với người sử dụng. Mỗi lớp là một đối tượng trừu tượng, chứa dựng bên trong nó các dữ liệu và thao tác xử lý dữ liệu đó. Lớp n chứa dựng một cấu trúc dữ liệu và các thủ tục có thể được gọi bởi lớp n+1 hoặc ngược lại có thể gọi các thủ tục ở lớp n-1.

- Máy ảo (Virtual Machine): Mục đích của việc sử dụng máy ảo là xây dựng các hệ thống đa chương với nhiều tiến trình thực hiện đồng thời, mỗi tiến trình được cung cấp một máy ảo với đầy đủ tài nguyên, tất nhiên là tài nguyên ảo, để nó thực hiện được. Trong cấu trúc này phần nhân của hệ thống trở thành bộ phận tổ chức giám sát máy ảo, phần này chịu trách nhiệm giao tiếp với phần cứng, chia sẻ tài nguyên hệ thống để tạo ra nhiều máy ảo, hoạt động độc lập với nhau, để cung cấp cho lớp trên.

- Mô hình Client/ Server (client/ server model): hệ điều hành bao gồm nhiều tiến trình đóng vai trò Server có các chức năng chuyên biệt như quản lý tiến trình, quản lý bộ nhớ, ..., phần hạt nhân cuả hệ điều hành chỉ thực hiện nhiệm vụ tạo cơ chế thông tin liên lạc giữa các tiến trình Client và Server. Các tiến trình trong hệ thống được chia thành 2 loại:

* Tiến trình bên ngoài hay tiến trình của chương trình người sử dụng được gọi là các tiến trình Client.

* Tiến trình của hệ điều hành được gọi là tiến trình Server.

Khi cần thực hiện một chức năng hệ thống các tiến trình Client sẽ gởi yêu cầu tới tiến trình server tương ứng, tiến trình server sẽ xử lý và trả lời kết quả cho tiến trình Client. Hệ thống này dễ thay đổi và dễ mở rộng hệ điều hành. Để thay đổi các chức năng của hệ điều hành chỉ cần thay đổi ở server tương ứng, để mở rộng hệ điều hành chỉ cần thêm các server mới vào hệ thống.

Câu 2 (2.5 điểm): Anh (Chị) hãy phân loại hệ điều hành theo cách mà hệ điều hành thực hiện các công việc, các tác vụ, các tiến trình của người sử dụng.

- Hệ điều hành xử lý theo lô đơn giản: Hệ điều hành loại này thực hiện các tác vụ lần lượt theo những chỉ thị đã được xác định trước. Khi một tác vụ chấm dứt thì hệ thống sẽ tự động thực hiện tác vụ tiếp theo mà không cần sự can thiệp từ bên ngoài, do đó hệ thống đạt tốc độ thực hiện cao. Để thực hiện được điều này hệ điều hành phải có bộ phận giám sát thường trực để giám sát việc thực hiện của các tác vụ trong hệ thống, bộ phận này thường trú trong bộ nhớ chính.

- Hệ điều hành xử lý theo lô đa chương: Hệ điều hành xử lý theo lô đa chương sẽ khắc phục hạn chế lãng phí thời gian xử lý của processor của hệ điều hành xử lý theo lô đơn giản. Hệ điều hành loại này có khả năng thực hiện nhiều tác vụ, nhiều chương trình đồng thời.

- Hệ điều hành chia sẻ thời gian: Nguyên tắc của hệ điều hành chia sẻ thời gian tương tự như trong hệ điều hành xử lý theo lô đa chương nhưng việc chuyển processor từ tác vụ, tiến trình này sang tác vụ, tiến trình khác không phụ thuộc vào việc tác vụ, tiến trình hiện tại có truy xuất đến thiết bị vào/ra hay không mà chỉ phụ thuộc vào sự điều phối processor của hệ điều hành.

- Hệ điều hành đa vi xử lý: Là các hệ điều hành dùng để điều khiển sự hoạt động của các hệ thống máy tính có nhiều vi xử lý. Các hệ điều hành đa vi xử lý (multiprocessor) gồm có 2 loại: Đa xử lý đối xứng (SMP: symmetric) và Đa xử lý bất đối xứng (ASMP: asymmetric)

- Hệ điều hành xử lý thời gian thực: Hệ điều hành này khắc phục nhược điểm của hệ điều hành xử lý theo lô, tức là nó có khả năng cho kết quả tức thời, chính xác sau mỗi tác vụ. Trong hệ điều hành này các tác vụ cầu thực hiện không được đưa vào hàng đợi mà được xử lý tức thời và trả lại ngay kết quả hoặc thông báo lỗi cho người sử dụng có yêu cầu. Hệ điều hành này hoạt động đòi hỏi sự phối hợp cao giữa phần mềm và phần cứng.

- Hệ điều hành mạng: Là các hệ điều hành dùng để điều khiển sự hoạt động của mạng máy tính. Ngoài các chức năng cơ bản của một hệ điều hành, các hệ điều hành mạng còn phải thực hiện việc chia sẻ và bảo vệ tài nguyên của mạng.

* Tóm lại: Các hệ điều hành ra đời sau luôn tìm cách khắc phục các hạn chế của hệ điều hành trước đó và phát triển nhiều hơn nữa để đáp ứng yêu cầu ngày càng cao của của người sử dụng và chương trình người sử dụng, cũng như khai thác tối đa các chức năng của phần cứng máy tính để nâng cao hiệu suất của hệ thống. Nhưng chức năng của hệ điều hành càng cao thì chi phí cho nó cũng tăng theo và cấu trúc của hệ điều hành cũng sẽ phức tạp hơn.

Câu 3 (2.5 điểm): Anh (Chị) hãy phân tích sự song song trong các hệ điều hành đa nhiệm đa chương trên hệ thống uniprocessor.

Các tiến trình song song xuất hiện trong các hệ điều hành đa nhiệm đa chương, trên cả hệ thống uniprocessor và multiprocessor. Nhưng sự song song thực, chỉ có ở các hệ thống multiprocessor, trong hệ thống này mỗi processor chịu trách nhiệm thực hiện một tiến trình. Sự song song trên các hệ thống uniprocessor là sự song song giả (do chỉ có một processor vật lý), các tiến trình song song trên hệ thống này thực chất là các tiến trình thay nhau sử dụng processor, tiến trình này đang chạy thì có thể dừng lại để nhường processor cho tiến trình khác chạy và sẽ tiếp tục lại sau đó khi có được processor. Đây là trường hợp mà: điểm khởi tạo của tiến trình này nằm ở thân của tiến trình khác.

Giả sử trong hệ thống có 3 tiến trình sẵn sàng P1, P2, P3 thì quá trình chuyển processor giữa 3 tiến trình này có thể minh họa như sau:

Thời điểm Trạng thái các tiến trình

t1 P1: được cấp processor

t2 P1: bị thu hồi processor (khi chưa kết thúc)

P3: được cấp processor

t3 P3: bị thu hồi processor (khi chưa kết thúc)

P1: được cấp processor

t4 P1: kết thúc và trả lại processor

P2: được cấp processor

t5 P2: kết thúc và trả lại processor

P3: được cấp processor

t6 P3: kết thúc và trả lại processor

Sơ đồ minh hoại sự hoạt động "song song" của các tiến trình P1, P2, P3 trong hệ thống uniprocessor:

Câu 4 (2.5 điểm):

Thế nào là tài nguyên găng và đoạn găng? Nêu các yêu cầu của công tác điều độ qua đoạn găng.

ĐÁP ÁN

Đề thi số: 07

Môn thi: Hệ điều hành Hệ: Cao đẳng CNTT

Hình thức thi/KT: Tự luận Thời gian: 90 phút

Câu 1 (2.5 điểm): Nêu các thành phần cơ bản của hệ điều hành.

- Thành phần quản lý tiến trình: Có nhiệm vụ thực hiện:

+ Tạo lập, hủy bỏ tiến trình.

+ Tạm dừng, tái kích hoạt tiến trình.

+ Tạo cơ chế thông tin liên lạc giữa các tiến trình.

+ Tạo cơ chế đồng bộ hóa giữa các tiến trình.

- Thành phần quản lý bộ nhớ chính: Có nhiệm vụ thực hiện:

+ Cấp phát, thu hồi vùng nhớ.

+ Ghi nhận trạng thái bộ nhớ chính.

+ Bảo vệ bộ nhớ.

+ Quyết định tiến trình nào được nạp vào bộ nhớ.

- Thành phần quản lý xuất/ nhập: Có nhiệm vụ sau:

+ Gửi mã lệnh điều khiển đến thiết bị.

+ Tiếp nhận yêu cầu ngắt (Interrupt) từ các thiết bị.

+ Phát hiện và xử lý lỗi.

- Thành phần quản lý bộ nhớ phụ (đĩa): có nhiệm vụ thực hiện:

+ Quản lý không gian trống trên đĩa.

+ Định vị lưu trữ thông tin trên đĩa.

+ Lập lịch cho vấn đề ghi/ đọc thông tin trên đĩa của đầu từ.

- Thành phần quản lý tập tin: có nhiệm vụ thực hiện:

+ Tạo/ xoá một tập tin/ thư mục.

+ Bảo vệ tập tin khi có hiện tượng truy xuất đồng thời.

+ Cung cấp các thao tác xử lý và bảo vệ tập tin/ thư mục.

+ Tạo mối quan hệ giữa tập tin và bộ nhớ phụ chứa tập tin.

+ Tạo cơ chế truy xuất tập tin thông qua tên tập tin.

- Thành phần thông dịch lệnh: Đây là bộ phận quan trọng của hệ điều hành, nó đóng vai trò giao tiếp giữa hệ điều hành và người sử dụng. Thành phần này chính là shell mà chúng ta đã biết ở trên. Một số hệ điều hành chứa shell trong nhân (kernel) của nó, một số hệ điều hành khác thì shell được thiết kế dưới dạng một chương trình đặc biệt.

- Thành phần bảo vệ hệ thống: Trong môi trường hệ điều hành đa nhiệm có thể có nhiều tiến trình hoạt động đồng thời, thì mỗi tiến trình phải được bảo vệ để không bị tác động, có chủ ý hay không chủ ý, của các tiến trình khác. Trong trường hợp này hệ điều hành cần phải có các cơ chế để luôn đảm bảo rằng các File, Memory, CPU và các tài nguyên khác mà hệ điều hành đã cấp cho một chương trình, tiến trình thì chỉ có chương trình tiến trình đó được quyền tác động đến các thành phần này.

Nhiệm vụ trên thuộc thành phần bảo vệ hệ thống của hệ điều hành. Thành phần này điều khiển việc sử dụng tài nguyên, đặc biệt là các tài nguyên dùng chung, của các tiến trình, đặc biệt là các tiến trình hoạt động đồng thời với nhau, sao cho không xảy ra sự tranh chấp tài nguyên giữa các tiến trình hoạt đồng đồng thời và không cho phép các tiến trình truy xuất bất hợp lệ lên các vùng nhớ của nhau.

- Thành phần kết nối mạng và truyền thông: dành cho các hệ điều hành mạng, các hệ điều hành phân tán.

Ngoài ra, để đáp ứng yêu cầu của người sử dụng và chương trình người sử dụng các nhiệm vụ của hệ điều hành được thiết kế dưới dạng các dịch vụ: Thi hành chương trình; Thực hiện các thao tác xuất nhập dữ liệu; Thực hiện các thao tác trên hệ thống tập tin; Trao đổi thông tin giữa các tiến trình; Phát hiện và xử lý lỗi.

Câu 2 (2.5 điểm): Anh (Chị) hãy nêu một số khái niệm cơ bản của hệ điều hành.

- Tiến trình (Process): là một bộ phận của chương trình đang thực hiện. Tiến trình là đơn vị làm việc cơ bản của hệ thống, trong hệ thống có thể tồn tại nhiều tiến trình cùng hoạt động, trong đó có cả tiến trình của hệ điều hành và tiến trình của chương trình người sử dụng. Các tiến trình này có thể hoạt động đồng thời với nhau. Hệ thống phải cung cấp đầy đủ tài nguyên cho tiến trình trong suốt quá trình hoạt động.

- Tiểu trình (Thread): Các hệ điều hành hiện đại sử dụng mô hình đa tiểu trình, trong một tiến trình có thể có nhiều tiểu trình. Tiểu trình cũng là đơn vị xử lý cơ bản trong hệ thống, nó cũng xử lý tuần tự đoạn code của nó, nó cũng sở hữu một con trỏ lệnh, một tập các thanh ghi và một vùng nhớ stack riêng và các tiểu trình cũng chia sẻ thời gian xử lý của processor như các tiến trình.

- Bộ xử lý lệnh (Shell): Shell là một bộ phận hay một tiến trình đặc biệt của hệ điều hành, nó có nhiệm vụ nhận lệnh của người sử dụng, phân tích lệnh và phát sinh tiến trình mới để thực hiện yêu cầu của lệnh, tiến trình mới này được gọi là tiến trình đáp ứng yêu cầu. Shell nhận lệnh thông qua cơ chế dòng lệnh, đó chính là nơi giao tiếp giữa người sử dụng và hệ điều hành.

- Sự phân lớp hệ thống (System Layering): Hệ điều hành sử dụng cơ chế phân lớp, nhằm tạo điều kiện giúp người sử dụng dễ dàng hơn khi tiếp cận tới tài nguyên máy tính. Tuỳ từng đối tượng người sử dụng mà có thể tiếp cận đến các lớp một cách khác nhau. Về cơ bản, các lớp được tổ chức như sau:

Trong cùng là hệ điều hành.

Tiếp theo là các ngôn ngữ lập trình

...

Ngoài cùng là các chương trình ứng dụng .

Việc phân lớp nhằm mục đích đáp ứng yêu cầu của nhiều đối tượng người sử dụng khác nhau hệ điều. Người sử dụng tác động vào lớp trong cùng sẽ gặp nhiều khó khăn hơn khi tác động vào lớp ngoài cùng.

- Tài nguyên hệ thống (System Resources), bao gồm: Bộ nhớ; Processor; Virtual Resources; Tài nguyên phân chia được; Tài nguyên không phân chia được; Một cách tổng quát có thể chia tài nguyên của hệ thống thành hai loại cơ bản:

* Tài nguyên không gian: là các không gian lưu trữ của hệ thống như đĩa, bộ nhớ chính, quan trọng nhất là không gian bộ nhớ chính, nơi lưu trữ các chương trình đang được CPU thực hiện.

* Tài nguyên thời gian: chính là thời gian thực hiện lệnh của processor và thời gian truy xuất dữ liệu trên bộ nhớ.

- Lời gọi hệ thống (System Calls): để tạo môi trường giao tiếp giữa chương trình của người sử dụng và hệ điều hành. Mỗi lời gọi hệ thống tương ứng với một thủ tục trong thư viện của hệ điều hành, do đó chương trình của người sử dụng có thể gọi thủ tục để thực hiện một lời gọi hệ thống.

Câu 3(2.5 điểm): Anh (Chị) hãy phân loại các tiến trình và nêu chức năng cơ bản của nó trong hệ thống hệ điều hành.

* Tiến trình tuần tự: là các tiến trình mà điểm khởi tạo của nó là điểm kết thúc của tiến trình trước đó. Nó chỉ xuất hiện trong các hệ điều hành đơn nhiệm đa chương, như hệ điều hành MS_DOS, loại tiến trình này tồn tại nhiều hạn chế, điển hình nhất là không khai thác tối đa thời gian xử lý của processor.

* Tiến trình song song: là các tiến trình mà điểm khởi tạo của tiến trình này mằn ở thân của các tiến trình khác, tức là có thể khởi tạo một tiến trình mới khi các tiến trình trước đó chưa kết thúc. Tiến trình song song được chia thành nhiều loại, bao gồm:

- Tiến trình song song độc lập: là các tiến trình hoạt động song song nhưng không có quan hệ thông tin với nhau, trong trường hợp này hệ điều hành phải thiết lập cơ chế bảo vệ dữ liệu của các tiến trình, và cấp phát tài nguyên cho các tiến trình một cách hợp lý.

- Tiến trình song song có quan hệ thông tin: trong quá trình hoạt động các tiến trình thường trao đổi thông tin với nhau, trong một số trường hợp tiến trình gởi thông báo cần phải nhận được tín hiệu từ tiến trình nhận để tiếp tục, điều này dễ dẫn đến bế tắc khi tiến trình nhận tín hiệu không ở trong trạng thái nhận hay tiến trình gởi không ở trong trạng thái nhận thông báo trả lời.

- Tiến trình song song phân cấp: Trong quá trình hoạt động một tiến trình có thể khởi tạo các tiến trình khác hoạt động song song với nó, tiến trình khởi tạo được gọi là tiến trình cha, tiến trình được tạo gọi là tiến trình con. Trong mô hình này hệ điều hành phải giải quyết vấn đề cấp phát tài nguyên cho các tiến trình con. Tiến trình con nhận tài nguyên ở đâu, từ tiến trình cha hay từ hệ thống. Để giải quyết vấn đề này hệ điều hành đưa ra 2 mô hình quản lý tài nguyên: Thứ nhất, mô hình tập trung, trong mô hình này hệ điều hành chịu trách nhiệm phân phối tài nguyên cho tất cả các tiến trình trong hệ thống. Thứ hai, mô hình phân tán, trong mô hình này hệ điều hành cho phép tiến trình con nhận tài nguyên từ tiến trình cha, tức là tiến trình khởi tạo có nhiệm vụ nhận tài nguyên từ hệ điều hành để cấp phát cho các tiến trình mà nó tạo ra, và nó có nhiệm vụ thu hồi lại tài nguyên đã cấp phát trả về cho hệ điều hành trước khi kết thúc.

- Tiến trình song song đồng mức: là các tiến trình hoạt động song song sử dụng chung tài nguyên theo nguyên tắc lần lượt, mỗi tiến trình sau một khoảng thời gian chiếm giữ tài nguyên phải tự động trả lại tài nguyên cho tiến trình kia.

Câu 4 (2.5 điểm): Anh (Chị) hãy nêu phương pháp dùng biến khoá riêng để điều độ tiến trình qua đoạn găng

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:

- 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.

- 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.

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 như sau:

Program MultualExclution;

Const N:2;

Var

Lock1, Lock2: byte;

BEGIN

Lock1 = 0; Lock2 = 0;

ParBegin

P1: Repeat {tiến trình P1}

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>;

Lock1 := 0; {P1 ra khỏi đoạn găng}

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

Until .F.

P2: Repeat {tiến trình P2}

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>;

Lock2 := 0; {P2 ra khỏi đoạn găng}

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

Until .F.

ParEnd

END.

Sơ đồ này có thể xảy ra một lỗi nghiêm trọng đó là: Có thể có hai tiến trình cùng nằm trong đoạn găng. Nguyên nhân của lỗi này là do việc kiểm tra quyền vào đoạn găng và và việc xác lập quyền vào đoạn găng của tiến trình bị tách rời khi thực hiện.

ĐÁP ÁN

Đề thi số: 08

Môn thi: Hệ điều hành Hệ: Cao đẳng CNTT

Hình thức thi/KT: Tự luận Thời gian: 90 phút

Câu 1 (2.5 điểm): Anh (Chị) hãy nêu lịch sử phát triển của hệ điều hành.

- Thế hệ 1 (1945 - 1955): Vào những năm 1950 máy tính dùng ống chân không ra đời. Ở thế hệ này mỗi máy tính được một nhóm người thực hiện, bao gồm việc thiết kế, xây dựng chương trình, thao tác, quản lý, .... Ở thế hệ này người lập trình phải dùng ngôn ngữ máy tuyệt đối để lập trình. Khái niệm ngôn ngữ lập trình và hệ điều hành chưa được biết đến trong khoảng thời gian này.

- Thế hệ 2 (1955 - 1965): Máy tính dùng bán dẫn ra đời, và được sản xuất để cung cấp cho khách hàng. Bộ phận sử dụng máy tính được phân chia rõ ràng: người thiết kế, người xây dựng, người vận hành, người lập trình, và người bảo trì. Ngôn ngữ lập trình Assembly và Fortran ra đời trong thời kỳ này. Với các máy tính thế hệ này để thực hiện một thao tác, lập trình viên dùng Assembly hoặc Fortran để viết chương trình trên phiếu đục lỗ sau đó đưa phiếu vào máy, máy thực hiện cho kết qủa ở máy in.

Hệ thống xử lý theo lô cũng ra đời trong thời kỳ này. Theo đó, các thao tác cần thực hiện trên máy tính được ghi trước trên băng từ, hệ thống sẽ đọc băng từ , thực hiện lần lượt và cho kết quả ở băng từ xuất. Hệ thống xử lý theo lô hoạt động dưới sự điều khiển của một chương trình đặc biệt, chương trình này là hệ điều hành sau này.

- Thế hệ 3 (1965 - 1980): Máy IBM 360 được sản xuất hàng loạt để tung ra thị trường. Các thiết bị ngoại vi xuất hiện ngày càng nhiều, do đó các thao tác điều khiển máy tính và thiết bị ngoại vi ngày càng phức tạp hơn. Trước tình hình này nhu cầu cần có một hệ điều hành sử dụng chung trên tất cả các máy tính của nhà sản xuất và người sử dụng trở nên bức thiết hơn. Và hệ điều hành đã ra đời trong thời kỳ này.

Hệ điều hành ra đời nhằm điều phối, kiểm soát hoạt động của hệ thống và giải quyết các yêu cầu tranh chấp thiết bị. Hệ điều hành đầu tiên được viết bằng ngôn ngữ Assembly. Hệ điều hành xuất hiện khái niệm đa chương, khái niệm chia sẻ thời gian và kỹ thuật Spool. Trong giai đoạn này cũng xuất hiện các hệ điều hành Multics và Unix.

- Thế hệ 4 (từ 1980): Máy tính cá nhân ra đời. Hệ điều hành MS_DOS ra đời gắn liền với máy tính IBM_PC. Hệ điều hành mạng và hệ điều hành phân tán ra đời trong thời kỳ này.

Câu 2 (2.5 điểm): Nêu nhiệm vụ của các thành phần trong Kernel mode của Windows 2000.

Các dịch vụ hệ thống và các chương trình điều khiển thiết bị của hệ điều hành chạy trong kernel mode. Kernel mode chỉ đến một chế độ của việc thực hiện trong processor mà ở đó nó có toàn quyền truy cập đến tất cả hệ thống bộ nhớ và tất cả các chỉ thị của CPU. Kernel mode gồm các thành phần :

- Windows 2000 Executive: Chứa các dịch vụ cơ sở của hệ điều hành: quản lý bộ nhớ, quản lý các tiến trình và tiểu trình, quản lý sự an toàn hệ thống, quản lý I/O, và thực hiện việc truyền thông liên tiến trình.

- Windows 2000 Kernel: Bao gồm các chức năng cấp thấp của hệ điều hành như là: lập lịch tiểu trình, đồng bộ cho các hệ thống multiprocessor.

- Device drivers (các trình điều khiển thiết bị): điều khiển thiết bị phần cứng và điều khiển hệ thống file và mạng. Điều khiển thiết bị phần cứng có nhiệm vụ chuyển các lời gọi hàm I/O từ phía người sử dụng thành các yêu cầu I/O thiết bị phần cứng cụ thể.

- HAL: Hardware Abstraction Layer (lớp phần cứng trừu tượng): Lớp này làm trừu tượng hoá các chi tiết phần cứng bên trong của PC, làm cho Windows 2000 Server tương thích với nhiều kiến trúc phần cứng khác nhau. Nó cho phép Windows 2000 chạy trên các nền vi xử lý khác nhau như Intel và Alpha, mà không cần duy trì 2 version khác của Windows 2000 Execute. HAL bảo vệ tất cả phần cứng và hỗ trợ các nền cụ thể cần cho mỗi thành phần trong hệ thống đối với tất cả phần cứng và hỗ trợ nềm cụ thể. HAL được cài đặt như là một DLL và đóng vai trò như là giao diện giữa các thành phần phần cứng và phần mềm.

- Window Manager and Graphical Device Interface (GDI): Window Manager và GDI được sử dụng để quản lý hệ thống hiển thị. Window Manager bảo vệ màn hình và nhận các lệnh từ các thiết bị nhập như là Mouse hoặc bàn phím. GDI điều khiển việc vẽ và thực hiện các thao tác đồ hoạ với sự giúp đỡ của các chức năng khác nhau được định nghĩa trước.

Câu 3 (2.5 điểm): Phân tích tiến trình 4 trạng thái trong quản lý tiến trình.

Tiến trình bốn trạng thái tồn tại ở một trong ba trạng thái, đó là: ready, running, blocked, Suspend:

+ Trạng thái Ready (sẵn sàng): Ngay sau khi khởi tạo tiến trình, đưa tiến trình vào hệ thống và cấp phát đầy đủ tài nguyên (trừ processor) cho tiến trình, hệ điều hành đưa tiến trình vào trạng thái ready.

+ Trạng thái Running (thực hiện): Là trạng thái mà tiến trình đang được sở hữu processor để hoạt động.

+ Trạng thái Blocked (khoá): Là trạng thái mà tiến trình đang chờ để được cấp phát thêm tài nguyên, để một sự kiện nào đó xảy ra, hay một quá trình vào/ra kết thúc.

+ Trạng thái Suspend (tạm dừng): Lưu trữ tiến trình trên bộ nhớ phụ.

Trong đó:

1 : Tiến trình được khởi tạo, được đưa vào hệ thống, được cấp phát đầy đủ tài nguyên chỉ thiếu processor.

2 : Tiến trình được cấp processor để bắt đầu thực hiện/ xử lý.

3 : Tiến trình hoàn thành xử lý và kết thúc.

4 : Tiến trình bị bộ điều phối tiến trình thu hồi processor, do hết thời gian được quyền sử dụng processor, để cấp phát cho tiến trình khác.

5 : Tiến trình đang chờ một sự kiện nào đó xảy ra hay đang chờ một thao vào/ra kết thúc hay tài nguyên mà tiến trình yêu cầu chưa được hệ điều hành đáp ứng.

6: Sự kiện mà tiến trình chờ đã xảy ra, thao tác vào/ra mà tiến trình đợi đã kết thúc, hay tài nguyên mà tiến trình yêu cầu đã được hệ điều hành đáp ứng,

7: Hệ điều hành chuyển tiến trình ra đĩa để thu hồi lại không gian nhớ đã cấp cho tiến trình hoặc thu hồi lại tài nguyên đã cấp cho tiến trình để cấp cho một tiến trình khác đang rất cần được nạp vào bộ nhớ tại thời điểm hiện tại.

8: Kích hoạt lại tiến trình được lưu ở bộ nhớ phụ

Bộ phận điều phối tiến trình thu hồi processor từ một tiến trình đang thực hiện trong các trường hợp sau: Tiến trình đang thực hiện hết thời gian; Có tiến trình mới này có độ ưu tiên cao hơn tiến trình hiện tại. Có một tiến trình mới phát sinh và tiến trình mới này cần một khoảng thời gian của processor nhỏ hơn nhiều so với khoảng thời gian còn lại mà tiến trình hiện tại cần processor.

Câu 4 (2.5 điểm): Anh (Chị) hãy nêu phương pháp dùng biến khoá chung để điều độ tiến trình qua đoạn găng.

Xuất phát từ nguyên tắc cơ bản của tổ chức độc quyền là, tại mỗi thời điểm chỉ có duy nhất một tiến trình có thể truy xuất đến một vùng nhớ chia sẻ, các hệ điều hành sử dụng biến khoá chung để tổ chức truy xuất độc quyền trên tài nguyên găng. Phương pháp này còn gọi là phương pháp Busy and Waitting (bận và đợi), nó được nhà toán học người Hà Lan tên là Dekker đề xuất.

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;

Sơ đồ điều độ dùng biến khoá chung này đơn giản, dễ xây dựng nhưng vẫn xuất hiện hiện tượng chờ đợi tích cực, khi chờ cho đến khi Lock = 0 (While Lock = 1 DO;). Hiện tương chờ đợi tích cực gây lãng phí thời gian của processor.

Nếu một tiến trình trong đoạn găng không thể ra khỏi đoạn găng, thì các tiến trình chờ ngoài đoạn găng có thể chờ đợi vô hạn (vì Lock không được đặt lại = 0).

ĐÁP ÁN

Đề thi số: 09

Môn thi: Hệ điều hành Hệ: Cao đẳng CNTT

Hình thức thi/KT: Tự luận Thời gian: 90 phút

Câu 1 (2.5 điểm): Anh (Chị) hãy nêu các chức năng cơ bản của hệ điều hành.

Hệ điều hành là một hệ thống các chương trình đóng vai trò trung gian giữa người sử dụng và phần cứng máy tính. Mục tiêu chính của nó là cung cấp một môi trường thuận lợi để người sử dụng dễ dàng thực hiện các chương trình ứng dụng của họ trên máy tính và khai thác triệt để các chức năng của phần cứng máy tính. Để đạt được mục tiêu trên hệ điều hành phải thực hiện các chức năng cơ bản sau:

- Giả lập một máy tính mở rộng: Giúp người sử dụng khai thác các chức năng của phần cứng máy tính dễ dàng và hiệu quả hơn. Khi cần tác động vào máy tính thực người sử dụng chỉ cần tác động vào máy tính mở rộng, mọi sự chuyển đổi thông tin điều khiển từ máy tính mở rộng sang máy tính thực hoặc ngược lại đều do hệ điều hành thực hiện.

- Quản lý tài nguyên của hệ thống: Trong mọi trường hợp tất cả các chương trình, tiến trình nếu cần được cấp phát tài nguyên để hoạt động thì sớm hay muộn nó đều được cấp phát và được đưa vào trạng thái hoạt động. Khi người sử dụng cần thực hiện một chương trình hay khi một chương trình cần nạp thêm một tiến trình mới vào bộ nhớ thì hệ điều hành phải cấp phát không gian nhớ cho chương trình, tiến trình đó để chương trình, tiến trình đó nạp được vào bộ nhớ và hoạt động được. Ngoài ra hệ điều hành còn phải tổ chức bảo vệ các không gian nhớ đã cấp cho các chương trình, tiến trình để tránh sự truy cập bất hợp lệ và sự tranh chấp bộ nhớ giữa các chương trình, tiến trình, đặc biệt là các tiến trình đồng thời hoạt động trên hệ thống.

- Hệ điều hành cho phép thực hiện nhiều chương trình đồng thời trong môi trường đa tác vụ - Multitasking Environment.

- Hệ điều hành tự nạp nó vào bộ nhớ - It loads itself into memory.

- Hệ điều hành giúp cho chương trình của người sử dụng giao tiếp với API (Application Programming Interface) hay thực hiện một lời gọi đến các hàm/thủ tục của API.

- Nạp dữ liệu cần thiết vào bộ nhớ - It loads the requied data into memory: Dữ liệu do người sử dụng cung cấp được đưa vào bộ nhớ để xử lý. Hệ điều hành phải luôn theo dõi bản đồ cấp phát bộ nhớ, nơi dữ liệu và chương trình được lưu trữ ở đó.

- Hệ điều hành biên dịch các chỉ thị chương trình - It interprets program instructions: Hệ điều hành phải đọc và giải mã các thao tác cần được thực hiện, nó được viết trong chương trình của người sử dụng. Hệ điều hành cũng chịu trách nhiệm sinh ra thông báo lỗi khi hệ thống gặp lỗi trong khi đang hoạt động.

- Hệ điều hành quản lý tài nguyên - It managers resources: Nó đảm bảo việc sử dụng thích hợp tất cả các tài nguyên của hệ thống như là: bộ nhớ, đĩa cứng, máy in, ...

Câu 2 (2.5 điểm): Anh (Chị) hãy phân loại hệ điều hành theo cách mà hệ điều hành thực hiện các công việc, các tác vụ, các tiến trình của người sử dụng.

- Hệ điều hành xử lý theo lô đơn giản: Hệ điều hành loại này thực hiện các tác vụ lần lượt theo những chỉ thị đã được xác định trước. Khi một tác vụ chấm dứt thì hệ thống sẽ tự động thực hiện tác vụ tiếp theo mà không cần sự can thiệp từ bên ngoài, do đó hệ thống đạt tốc độ thực hiện cao. Để thực hiện được điều này hệ điều hành phải có bộ phận giám sát thường trực để giám sát việc thực hiện của các tác vụ trong hệ thống, bộ phận này thường trú trong bộ nhớ chính.

- Hệ điều hành xử lý theo lô đa chương: Hệ điều hành xử lý theo lô đa chương sẽ khắc phục hạn chế lãng phí thời gian xử lý của processor của hệ điều hành xử lý theo lô đơn giản. Hệ điều hành loại này có khả năng thực hiện nhiều tác vụ, nhiều chương trình đồng thời.

- Hệ điều hành chia sẻ thời gian: Nguyên tắc của hệ điều hành chia sẻ thời gian tương tự như trong hệ điều hành xử lý theo lô đa chương nhưng việc chuyển processor từ tác vụ, tiến trình này sang tác vụ, tiến trình khác không phụ thuộc vào việc tác vụ, tiến trình hiện tại có truy xuất đến thiết bị vào/ra hay không mà chỉ phụ thuộc vào sự điều phối processor của hệ điều hành.

- Hệ điều hành đa vi xử lý: Là các hệ điều hành dùng để điều khiển sự hoạt động của các hệ thống máy tính có nhiều vi xử lý. Các hệ điều hành đa vi xử lý (multiprocessor) gồm có 2 loại: Đa xử lý đối xứng (SMP: symmetric) và Đa xử lý bất đối xứng (ASMP: asymmetric)

- Hệ điều hành xử lý thời gian thực: Hệ điều hành này khắc phục nhược điểm của hệ điều hành xử lý theo lô, tức là nó có khả năng cho kết quả tức thời, chính xác sau mỗi tác vụ. Trong hệ điều hành này các tác vụ cầu thực hiện không được đưa vào hàng đợi mà được xử lý tức thời và trả lại ngay kết quả hoặc thông báo lỗi cho người sử dụng có yêu cầu. Hệ điều hành này hoạt động đòi hỏi sự phối hợp cao giữa phần mềm và phần cứng.

- Hệ điều hành mạng: Là các hệ điều hành dùng để điều khiển sự hoạt động của mạng máy tính. Ngoài các chức năng cơ bản của một hệ điều hành, các hệ điều hành mạng còn phải thực hiện việc chia sẻ và bảo vệ tài nguyên của mạng.

* Tóm lại: Các hệ điều hành ra đời sau luôn tìm cách khắc phục các hạn chế của hệ điều hành trước đó và phát triển nhiều hơn nữa để đáp ứng yêu cầu ngày càng cao của của người sử dụng và chương trình người sử dụng, cũng như khai thác tối đa các chức năng của phần cứng máy tính để nâng cao hiệu suất của hệ thống. Nhưng chức năng của hệ điều hành càng cao thì chi phí cho nó cũng tăng theo và cấu trúc của hệ điều hành cũng sẽ phức tạp hơn.

Câu 3 (2.5 điểm): Anh (Chị) hãy phân tích sự song song trong các hệ điều hành đa nhiệm đa chương trên hệ thống uniprocessor.

Các tiến trình song song xuất hiện trong các hệ điều hành đa nhiệm đa chương, trên cả hệ thống uniprocessor và multiprocessor. Nhưng sự song song thực, chỉ có ở các hệ thống multiprocessor, trong hệ thống này mỗi processor chịu trách nhiệm thực hiện một tiến trình. Sự song song trên các hệ thống uniprocessor là sự song song giả (do chỉ có một processor vật lý), các tiến trình song song trên hệ thống này thực chất là các tiến trình thay nhau sử dụng processor, tiến trình này đang chạy thì có thể dừng lại để nhường processor cho tiến trình khác chạy và sẽ tiếp tục lại sau đó khi có được processor. Đây là trường hợp mà: điểm khởi tạo của tiến trình này nằm ở thân của tiến trình khác.

Giả sử trong hệ thống có 3 tiến trình sẵn sàng P1, P2, P3 thì quá trình chuyển processor giữa 3 tiến trình này có thể minh họa như sau:

Thời điểm Trạng thái các tiến trình

t1 P1: được cấp processor

t2 P1: bị thu hồi processor (khi chưa kết thúc)

P3: được cấp processor

t3 P3: bị thu hồi processor (khi chưa kết thúc)

P1: được cấp processor

t4 P1: kết thúc và trả lại processor

P2: được cấp processor

t5 P2: kết thúc và trả lại processor

P3: được cấp processor

t6 P3: kết thúc và trả lại processor

Sơ đồ minh hoại sự hoạt động "song song" của các tiến trình P1, P2, P3 trong hệ thống uniprocessor:

Câu 4 (2.5 điểm): Anh (Chị) hãy nêu phương pháp dùng biến khoá riêng để điều độ tiến trình qua đoạn găng

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:

- 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.

- 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.

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 như sau:

Program MultualExclution;

Const N:2;

Var

Lock1, Lock2: byte;

BEGIN

Lock1 = 0; Lock2 = 0;

ParBegin

P1: Repeat {tiến trình P1}

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>;

Lock1 := 0; {P1 ra khỏi đoạn găng}

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

Until .F.

P2: Repeat {tiến trình P2}

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>;

Lock2 := 0; {P2 ra khỏi đoạn găng}

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

Until .F.

ParEnd

END.

Sơ đồ này có thể xảy ra một lỗi nghiêm trọng đó là: Có thể có hai tiến trình cùng nằm trong đoạn găng. Nguyên nhân của lỗi này là do việc kiểm tra quyền vào đoạn găng và và việc xác lập quyền vào đoạn găng của tiến trình bị tách rời khi thực hiện.

ĐÁP ÁN

Đề thi số: 10

Môn thi: Hệ điều hành Hệ: Cao đẳng CNTT

Hình thức thi/KT: Tự luận Thời gian: 90 phút

Câu 1 (2.5 điểm): Anh (Chị) hãy nêu lịch sử phát triển của hệ điều hành.

- Thế hệ 1 (1945 - 1955): Vào những năm 1950 máy tính dùng ống chân không ra đời. Ở thế hệ này mỗi máy tính được một nhóm người thực hiện, bao gồm việc thiết kế, xây dựng chương trình, thao tác, quản lý, .... Ở thế hệ này người lập trình phải dùng ngôn ngữ máy tuyệt đối để lập trình. Khái niệm ngôn ngữ lập trình và hệ điều hành chưa được biết đến trong khoảng thời gian này.

- Thế hệ 2 (1955 - 1965): Máy tính dùng bán dẫn ra đời, và được sản xuất để cung cấp cho khách hàng. Bộ phận sử dụng máy tính được phân chia rõ ràng: người thiết kế, người xây dựng, người vận hành, người lập trình, và người bảo trì. Ngôn ngữ lập trình Assembly và Fortran ra đời trong thời kỳ này. Với các máy tính thế hệ này để thực hiện một thao tác, lập trình viên dùng Assembly hoặc Fortran để viết chương trình trên phiếu đục lỗ sau đó đưa phiếu vào máy, máy thực hiện cho kết qủa ở máy in.

Hệ thống xử lý theo lô cũng ra đời trong thời kỳ này. Theo đó, các thao tác cần thực hiện trên máy tính được ghi trước trên băng từ, hệ thống sẽ đọc băng từ , thực hiện lần lượt và cho kết quả ở băng từ xuất. Hệ thống xử lý theo lô hoạt động dưới sự điều khiển của một chương trình đặc biệt, chương trình này là hệ điều hành sau này.

- Thế hệ 3 (1965 - 1980): Máy IBM 360 được sản xuất hàng loạt để tung ra thị trường. Các thiết bị ngoại vi xuất hiện ngày càng nhiều, do đó các thao tác điều khiển máy tính và thiết bị ngoại vi ngày càng phức tạp hơn. Trước tình hình này nhu cầu cần có một hệ điều hành sử dụng chung trên tất cả các máy tính của nhà sản xuất và người sử dụng trở nên bức thiết hơn. Và hệ điều hành đã ra đời trong thời kỳ này.

Hệ điều hành ra đời nhằm điều phối, kiểm soát hoạt động của hệ thống và giải quyết các yêu cầu tranh chấp thiết bị. Hệ điều hành đầu tiên được viết bằng ngôn ngữ Assembly. Hệ điều hành xuất hiện khái niệm đa chương, khái niệm chia sẻ thời gian và kỹ thuật Spool. Trong giai đoạn này cũng xuất hiện các hệ điều hành Multics và Unix.

- Thế hệ 4 (từ 1980): Máy tính cá nhân ra đời. Hệ điều hành MS_DOS ra đời gắn liền với máy tính IBM_PC. Hệ điều hành mạng và hệ điều hành phân tán ra đời trong thời kỳ này.

Câu 2 (2.5 điểm): Anh (Chị) hãy nêu nhiệm vụ của các thành phần trong User Mode của Windows 2000.

Các chương trình ứng dụng của người sử dụng chạy trong User mode. User mode bao gồm các thành phần: System support processes, Service Processes, User applications, và Environment subsystems, mỗi thành phần này sở hữu một không gian địa chỉ tiến trình riêng. Cụ thể như sau:

- Các tiến trình hỗ trợ hệ thống (System support processes): Như là tiến trình logon, quản lý các Session, các thành phần này không phải là các dịch vụ của Windows 2000, do đó nó không được khởi động bởi thành phần Service Control Manager.

- Các tiến trình dịch vụ (Service processes): Đó là các dịch vụ chủ Win32, như là dịch Task Scheduler và Spooler, và cungc có thể là các ứng dụng server Windows 2000 như là Microsoft SQL Server, Exchange Server và các thành phần chạy như là các dịch vụ.

- Các ứng dụng người sử dụng (User applications): Nó có thể là một trong năm loại sau: Win32, Windows 3.1, MS_DOS, POSIX, hoặc OS/2 1.2.

- Các hệ thống con môi trường (Environment subsystems): nó đưa ra các dịch vụ nguyên thuỷ của hệ điều hành, các ứng dụng của người sử dụng thông qua một tập các hàm có thể gọi được, do đó nó cung cấp một môi trường hệ điều hành cho các ứng dụng. Windows 2000 đưa ra ba hệ thống con môi trường: Win32, POSIX và OS/2, trong đó Win32 là hệ thống con đặc biệt nhất, Windows 2000 không thể chạy nếu không có nó, do đó nó phải luôn ở trạng thái chạy ngay sau khi hệ thống được khởi động. POSIX và OS/2 được cấu hình là chỉ khởi tạo khi cần. Các ứng dụng được viết trên các hệ điều hành khác nhau có thể chạy trên Windows 2000 nhờ sử dụng các environment subsystem.

- Hệ thống con các thư viện liên kết động (Subsystem DLLs): trong Windows 2000 các ứng dụng của người sử dụng không thể gọi trực tiếp các dịch vụ nguyên thủy của hệ điều hành, mà chúng phải thông qua một hoặc nhiều các DLL. Vai trò của các Subsystem DLL là chuyển các yêu cầu gọi hàm vào bên trong các dịch vụ hệ thống của Windows 2000.

Câu 3(2.5 điểm): Anh (Chị) hãy phân loại các tiến trình và nêu chức năng cơ bản của nó trong hệ thống hệ điều hành.

* Tiến trình tuần tự: là các tiến trình mà điểm khởi tạo của nó là điểm kết thúc của tiến trình trước đó. Nó chỉ xuất hiện trong các hệ điều hành đơn nhiệm đa chương, như hệ điều hành MS_DOS, loại tiến trình này tồn tại nhiều hạn chế, điển hình nhất là không khai thác tối đa thời gian xử lý của processor.

* Tiến trình song song: là các tiến trình mà điểm khởi tạo của tiến trình này mằn ở thân của các tiến trình khác, tức là có thể khởi tạo một tiến trình mới khi các tiến trình trước đó chưa kết thúc. Tiến trình song song được chia thành nhiều loại, bao gồm:

- Tiến trình song song độc lập: là các tiến trình hoạt động song song nhưng không có quan hệ thông tin với nhau, trong trường hợp này hệ điều hành phải thiết lập cơ chế bảo vệ dữ liệu của các tiến trình, và cấp phát tài nguyên cho các tiến trình một cách hợp lý.

- Tiến trình song song có quan hệ thông tin: trong quá trình hoạt động các tiến trình thường trao đổi thông tin với nhau, trong một số trường hợp tiến trình gởi thông báo cần phải nhận được tín hiệu từ tiến trình nhận để tiếp tục, điều này dễ dẫn đến bế tắc khi tiến trình nhận tín hiệu không ở trong trạng thái nhận hay tiến trình gởi không ở trong trạng thái nhận thông báo trả lời.

- Tiến trình song song phân cấp: Trong quá trình hoạt động một tiến trình có thể khởi tạo các tiến trình khác hoạt động song song với nó, tiến trình khởi tạo được gọi là tiến trình cha, tiến trình được tạo gọi là tiến trình con. Trong mô hình này hệ điều hành phải giải quyết vấn đề cấp phát tài nguyên cho các tiến trình con. Tiến trình con nhận tài nguyên ở đâu, từ tiến trình cha hay từ hệ thống. Để giải quyết vấn đề này hệ điều hành đưa ra 2 mô hình quản lý tài nguyên: Thứ nhất, mô hình tập trung, trong mô hình này hệ điều hành chịu trách nhiệm phân phối tài nguyên cho tất cả các tiến trình trong hệ thống. Thứ hai, mô hình phân tán, trong mô hình này hệ điều hành cho phép tiến trình con nhận tài nguyên từ tiến trình cha, tức là tiến trình khởi tạo có nhiệm vụ nhận tài nguyên từ hệ điều hành để cấp phát cho các tiến trình mà nó tạo ra, và nó có nhiệm vụ thu hồi lại tài nguyên đã cấp phát trả về cho hệ điều hành trước khi kết thúc.

- Tiến trình song song đồng mức: là các tiến trình hoạt động song song sử dụng chung tài nguyên theo nguyên tắc lần lượt, mỗi tiến trình sau một khoảng thời gian chiếm giữ tài nguyên phải tự động trả lại tài nguyên cho tiến trình kia.

Câu 4 (2.5 điểm): Anh (Chị) hãy nêu phương pháp dùng biến khoá chung để điều độ tiến trình qua đoạn găng.

Xuất phát từ nguyên tắc cơ bản của tổ chức độc quyền là, tại mỗi thời điểm chỉ có duy nhất một tiến trình có thể truy xuất đến một vùng nhớ chia sẻ, các hệ điều hành sử dụng biến khoá chung để tổ chức truy xuất độc quyền trên tài nguyên găng. Phương pháp này còn gọi là phương pháp Busy and Waitting (bận và đợi), nó được nhà toán học người Hà Lan tên là Dekker đề xuất.

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;

Sơ đồ điều độ dùng biến khoá chung này đơn giản, dễ xây dựng nhưng vẫn xuất hiện hiện tượng chờ đợi tích cực, khi chờ cho đến khi Lock = 0 (While Lock = 1 DO;). Hiện tương chờ đợi tích cực gây lãng phí thời gian của processor.

Nếu một tiến trình trong đoạn găng không thể ra khỏi đoạn găng, thì các tiến trình chờ ngoài đoạn găng có thể chờ đợi vô hạn (vì Lock không được đặt lại = 0).

ĐÁP ÁN

Đề thi số: 11

Môn thi: Hệ điều hành Hệ: Cao đẳng CNTT

Hình thức thi/KT: Tự luận Thời gian: 90 phút

Câu 1 (2.5 điểm): Nêu các thành phần cơ bản của hệ điều hành.

- Thành phần quản lý tiến trình: Có nhiệm vụ thực hiện:

+ Tạo lập, hủy bỏ tiến trình.

+ Tạm dừng, tái kích hoạt tiến trình.

+ Tạo cơ chế thông tin liên lạc giữa các tiến trình.

+ Tạo cơ chế đồng bộ hóa giữa các tiến trình.

- Thành phần quản lý bộ nhớ chính: Có nhiệm vụ thực hiện:

+ Cấp phát, thu hồi vùng nhớ.

+ Ghi nhận trạng thái bộ nhớ chính.

+ Bảo vệ bộ nhớ.

+ Quyết định tiến trình nào được nạp vào bộ nhớ.

- Thành phần quản lý xuất/ nhập: Có nhiệm vụ sau:

+ Gửi mã lệnh điều khiển đến thiết bị.

+ Tiếp nhận yêu cầu ngắt (Interrupt) từ các thiết bị.

+ Phát hiện và xử lý lỗi.

- Thành phần quản lý bộ nhớ phụ (đĩa): có nhiệm vụ thực hiện:

+ Quản lý không gian trống trên đĩa.

+ Định vị lưu trữ thông tin trên đĩa.

+ Lập lịch cho vấn đề ghi/ đọc thông tin trên đĩa của đầu từ.

- Thành phần quản lý tập tin: có nhiệm vụ thực hiện:

+ Tạo/ xoá một tập tin/ thư mục.

+ Bảo vệ tập tin khi có hiện tượng truy xuất đồng thời.

+ Cung cấp các thao tác xử lý và bảo vệ tập tin/ thư mục.

+ Tạo mối quan hệ giữa tập tin và bộ nhớ phụ chứa tập tin.

+ Tạo cơ chế truy xuất tập tin thông qua tên tập tin.

- Thành phần thông dịch lệnh: Đây là bộ phận quan trọng của hệ điều hành, nó đóng vai trò giao tiếp giữa hệ điều hành và người sử dụng. Thành phần này chính là shell mà chúng ta đã biết ở trên. Một số hệ điều hành chứa shell trong nhân (kernel) của nó, một số hệ điều hành khác thì shell được thiết kế dưới dạng một chương trình đặc biệt.

- Thành phần bảo vệ hệ thống: Trong môi trường hệ điều hành đa nhiệm có thể có nhiều tiến trình hoạt động đồng thời, thì mỗi tiến trình phải được bảo vệ để không bị tác động, có chủ ý hay không chủ ý, của các tiến trình khác. Trong trường hợp này hệ điều hành cần phải có các cơ chế để luôn đảm bảo rằng các File, Memory, CPU và các tài nguyên khác mà hệ điều hành đã cấp cho một chương trình, tiến trình thì chỉ có chương trình tiến trình đó được quyền tác động đến các thành phần này.

Nhiệm vụ trên thuộc thành phần bảo vệ hệ thống của hệ điều hành. Thành phần này điều khiển việc sử dụng tài nguyên, đặc biệt là các tài nguyên dùng chung, của các tiến trình, đặc biệt là các tiến trình hoạt động đồng thời với nhau, sao cho không xảy ra sự tranh chấp tài nguyên giữa các tiến trình hoạt đồng đồng thời và không cho phép các tiến trình truy xuất bất hợp lệ lên các vùng nhớ của nhau.

- Thành phần kết nối mạng và truyền thông: dành cho các hệ điều hành mạng, các hệ điều hành phân tán.

Ngoài ra, để đáp ứng yêu cầu của người sử dụng và chương trình người sử dụng các nhiệm vụ của hệ điều hành được thiết kế dưới dạng các dịch vụ: Thi hành chương trình; Thực hiện các thao tác xuất nhập dữ liệu; Thực hiện các thao tác trên hệ thống tập tin; Trao đổi thông tin giữa các tiến trình; Phát hiện và xử lý lỗi.

Câu 2 (2.5 điểm): Nêu nhiệm vụ của các thành phần trong Kernel mode của Windows 2000.

Các dịch vụ hệ thống và các chương trình điều khiển thiết bị của hệ điều hành chạy trong kernel mode. Kernel mode chỉ đến một chế độ của việc thực hiện trong processor mà ở đó nó có toàn quyền truy cập đến tất cả hệ thống bộ nhớ và tất cả các chỉ thị của CPU. Kernel mode gồm các thành phần :

- Windows 2000 Executive: Chứa các dịch vụ cơ sở của hệ điều hành: quản lý bộ nhớ, quản lý các tiến trình và tiểu trình, quản lý sự an toàn hệ thống, quản lý I/O, và thực hiện việc truyền thông liên tiến trình.

- Windows 2000 Kernel: Bao gồm các chức năng cấp thấp của hệ điều hành như là: lập lịch tiểu trình, đồng bộ cho các hệ thống multiprocessor.

- Device drivers (các trình điều khiển thiết bị): điều khiển thiết bị phần cứng và điều khiển hệ thống file và mạng. Điều khiển thiết bị phần cứng có nhiệm vụ chuyển các lời gọi hàm I/O từ phía người sử dụng thành các yêu cầu I/O thiết bị phần cứng cụ thể.

- HAL: Hardware Abstraction Layer (lớp phần cứng trừu tượng): Lớp này làm trừu tượng hoá các chi tiết phần cứng bên trong của PC, làm cho Windows 2000 Server tương thích với nhiều kiến trúc phần cứng khác nhau. Nó cho phép Windows 2000 chạy trên các nền vi xử lý khác nhau như Intel và Alpha, mà không cần duy trì 2 version khác của Windows 2000 Execute. HAL bảo vệ tất cả phần cứng và hỗ trợ các nền cụ thể cần cho mỗi thành phần trong hệ thống đối với tất cả phần cứng và hỗ trợ nềm cụ thể. HAL được cài đặt như là một DLL và đóng vai trò như là giao diện giữa các thành phần phần cứng và phần mềm.

- Window Manager and Graphical Device Interface (GDI): Window Manager và GDI được sử dụng để quản lý hệ thống hiển thị. Window Manager bảo vệ màn hình và nhận các lệnh từ các thiết bị nhập như là Mouse hoặc bàn phím. GDI điều khiển việc vẽ và thực hiện các thao tác đồ hoạ với sự giúp đỡ của các chức năng khác nhau được định nghĩa trước.

Câu 3 (2.5 điểm): Phân tích tiến trình 4 trạng thái trong quản lý tiến trình.

Tiến trình bốn trạng thái tồn tại ở một trong ba trạng thái, đó là: ready, running, blocked, Suspend:

+ Trạng thái Ready (sẵn sàng): Ngay sau khi khởi tạo tiến trình, đưa tiến trình vào hệ thống và cấp phát đầy đủ tài nguyên (trừ processor) cho tiến trình, hệ điều hành đưa tiến trình vào trạng thái ready.

+ Trạng thái Running (thực hiện): Là trạng thái mà tiến trình đang được sở hữu processor để hoạt động.

+ Trạng thái Blocked (khoá): Là trạng thái mà tiến trình đang chờ để được cấp phát thêm tài nguyên, để một sự kiện nào đó xảy ra, hay một quá trình vào/ra kết thúc.

+ Trạng thái Suspend (tạm dừng): Lưu trữ tiến trình trên bộ nhớ phụ.

Trong đó:

1 : Tiến trình được khởi tạo, được đưa vào hệ thống, được cấp phát đầy đủ tài nguyên chỉ thiếu processor.

2 : Tiến trình được cấp processor để bắt đầu thực hiện/ xử lý.

3 : Tiến trình hoàn thành xử lý và kết thúc.

4 : Tiến trình bị bộ điều phối tiến trình thu hồi processor, do hết thời gian được quyền sử dụng processor, để cấp phát cho tiến trình khác.

5 : Tiến trình đang chờ một sự kiện nào đó xảy ra hay đang chờ một thao vào/ra kết thúc hay tài nguyên mà tiến trình yêu cầu chưa được hệ điều hành đáp ứng.

6: Sự kiện mà tiến trình chờ đã xảy ra, thao tác vào/ra mà tiến trình đợi đã kết thúc, hay tài nguyên mà tiến trình yêu cầu đã được hệ điều hành đáp ứng,

7: Hệ điều hành chuyển tiến trình ra đĩa để thu hồi lại không gian nhớ đã cấp cho tiến trình hoặc thu hồi lại tài nguyên đã cấp cho tiến trình để cấp cho một tiến trình khác đang rất cần được nạp vào bộ nhớ tại thời điểm hiện tại.

8: Kích hoạt lại tiến trình được lưu ở bộ nhớ phụ

Bộ phận điều phối tiến trình thu hồi processor từ một tiến trình đang thực hiện trong các trường hợp sau: Tiến trình đang thực hiện hết thời gian; Có tiến trình mới này có độ ưu tiên cao hơn tiến trình hiện tại. Có một tiến trình mới phát sinh và tiến trình mới này cần một khoảng thời gian của processor nhỏ hơn nhiều so với khoảng thời gian còn lại mà tiến trình hiện tại cần processor.

Câu 4 (2.5 điểm): Nêu các thao tác điều khiển tiến trình.

- Khi khởi tạo tiến trình:

+ Hệ điều hành gán PID cho tiến trình mới và đưa tiến trình vào danh sách quản lý của hệ thống, dùng một entry trong PCB để chứa các thông tin liên quan đến tiến trình mới tạo ra này.

+ Cấp phát không gian bộ nhớ cho tiến trình.

+ Khởi tạo các thông tin cần thiết cho khối điều khiển tiến trình như các PID của tiến trình cha (nếu có), thông tin trạng thái tiến trình, độ ưu tiên của tiến trình, thông tin ngữ cảnh của processor vv.

+ Cung cấp đầy đủ các tài nguyên cần thiết nhất, trừ processor, để tiến trình có thể vào trạng thái ready được hoặc bắt đầu hoạt động được.

+ Đưa tiến trình vào một danh sách tiến trình nào đó: ready list, suspend list, waiting list, vv, sao cho phù hợp với chiến lược điều phối tiến trình hiện tại của bộ phận điều phối tiến trình của hệ điều hành.

+ Khi một tiến trình tạo lập một tiến trình con, tiến trình con có thể được cấp phát tài nguyên bởi chính hệ điều hành, hoặc được tiến trình cha cho thừa hưởng một số tài nguyên ban đầu của nó.

- Khi kết thúc tiến trình:

+ Thu hồi tài nguyên đã cấp phát cho tiến trình.

+ Loại bỏ tiến trình ra khỏi danh sách quản lý của hệ thống.

+ Huỷ bỏ khối điều khiển tiến trình.

- Khi thay đổi trạng thái:

+ Lưu (save) ngữ cảnh của processor, bao gồm thanh ghi bộ đếm chương trình (PC: program counter) và các thanh ghi khác.

+ Cập nhật PCB của tiến trình, sao cho phù hợp với trạng thái mới của tiến trình, bao gồm trạng thái mới của tiến trình, các thông tin tính toán, vv.

+ Di chuyển PCB của tiến trình đến một hàng đợi thích hợp, đế đáp ứng được các yêu cầu của công tác điều phối tiến trình.

+ Chọn một tiến trình khác để cho phép nó thực hiện.

+ Cập nhật PCB của tiến trình vừa được chọn thực hiện ở trên, chủ yếu là thay đổi trạng thái của tiến trình đến trạng thái running.

+ Cập nhật các thông tin liên quan đến quản lý bộ nhớ. Bước này phụ thuộc vào các yêu cầu chuyển đổi địa chỉ bộ nhớ đang được sử dụng.

+ Khôi phục (Restore) lại ngữ cảnh của processor và thay đổi giá trị của bộ đếm chương trình và các thanh ghi khác sao cho phù hợp với tiến trình được chọn ở trên, để tiến trình này có thể bắt đầu hoạt động được.

ĐÁP ÁN

Đề thi số: 12

Môn thi: Hệ điều hành Hệ: Cao đẳng CNTT

Hình thức thi/KT: Tự luận Thời gian: 90 phút

Câu 1 (2.5 điểm): Nêu vai trò của Environment Subsystem và Subsystem DLL trong Windows 2000.

Vai trò của hệ thống con môi trường là đưa ra một vài tập con cơ sở các dịch vụ hệ thống trong Windows 2000 executive cho các ứng dụng. Mỗi hệ thống con có thể cung cấp truy cập đến các tập con khác nhau của các dịch vụ nguyên thủy của Windows 2000. Từ một ứng dụng được xây dựng trên một hệ thống con này không thể gọi đến một ứng dụng được xây dựng trên một hệ thống con khác.

Các lời gọi hàm không thể lẫn lộn giữa các hệ thống con. Một ứng dụng trên POSIX chỉ có thể gọi các dịch vụ được đưa ra bởi hệ thống con POSIX, và một ứng dụng Win32 chỉ có thể gọi các dịch vụ được đưa ra bởi hệ thống con Win32.

Các ứng dụng người sử dụng không thể gọi trực tiếp các dịch vụ hệ thống của Windows 2000 mà phải thông qua một hoặc nhiều các hệ thống con DLL. Các hệ thống con DLL Win32 (kernel32.dll, Advapi32.dll, User32.dll, Gdi32.dll) cài đặt các hàm Win32 API, để các ứng dụng của người sử dụng gọi nó thông qua tập hàm này. Khi một ứng dụng gọi một hàm trong hệ thống con DLL, thì ít nhất một trong ba trường hợp sau sẽ xảy ra:

- Hàm được cài đặt hoàn toàn trong hệ thống con DLL. Hàm được thực hiện trong user mode và kết quả được trả về cho chương trình gọi.

- Hàm yêu cầu một hoặc nhiều lời gọi đến Windows 2000 executive.

- Hàm yêu cầu một vài công việc để thực hiện trong tiến trình của hệ thống con môi trường. Các tiến trình của hệ thống con môi trường chạy trong user mode, chịu trách nhiệm duy trì trạng thái của các ứng dụng client chạy dưới sự điều khiển của nó. Trong trường hợp này một client/server yêu cầu tạo một hệ thống con môi trường qua một thông điệp gởi tới một hệ thống con để thực hiện một vài thao tác. Hệ thống con DLL thì đợi trả lời trước khi trả về cho ứng dụng gọi.

Tập tin Ntdll.Dll là một hệ thống đặc biệt, nó hỗ trợ thư viện chính cho việc sử dụng các hệ thống con DLL. Nó chứa hai loại hàm sau:

- Dịch vụ hệ thống gởi đến các dịch vụ hệ thống Windows 2000 executive.

- Các hàm hỗ trợ bên trong được sử dụng bởi các hệ thống con, các hệ thống con DLL và các hàm nguyên thủy điển hình khác.

Ntdll cũng chứa các hàm hỗ trợ như là image loader, heap manager và các hàm truyền thông tiến trình Win32.

Câu 12 (2.5 điểm): Nêu vai trò và các thành phần cơ bản của Executive trong Windows 2000.

* Vai trò: Windows 2000 executive là lớp trên của Ntoskrnl.exe (kernel là lớp thấp). Executive bao gồm các hàm sau:

- Các hàm được đưa ra và có thể gọi từ user mode. Đây là các hàm được gọi và được đưa ra qua Ntdll. Hầu hết các dịch vụ là được truy cập thông qua các hàm Win32 API hoặc các API của các Vai trò của hệ thống con môi trường khác.

- Các hàm chỉ có thể được gọi từ kernel mode, nó được đưa ra và được cung cấp trong Windows 2000 DDK, Windows 2000 Installable File System (IFS) Kit.

- Các hàm được đưa ra và có thể gọi từ kernel mode nhưng không được giới thiệu trong Windows 2000 DDK và IFS Kit.

- Các hàm được định nghĩa nhưng không được đưa ra. Đây là các hàm hỗ trợ bên trong, nó được gọi trong phạm vi Ntoskrnl.

* Các thành phần cơ bản: Windows 2000 Executive chứa các thành phần quan trọng sau đây:

- Configuration Manager: cài đặt và quản lý Registry hệ thống.

- I/O Manager: Thành phần này chuyển các lệnh đọc/ ghi trong user mode đến việc đọc/ghi của IRP (I/O Request Packets). Nó gồm có: các hệ thống file, các điều khiển thiết bị, quản lý bộ nhớ cache, quản lý bộ nhớ ảo.

- InterProcess Communication - IPC Manager: quản lý truyền thông liên tiến trình. Quản lý IPC là tạo liên kết giữa client và server. Environment subsystem đóng vai trò như là một client và Executive đóng vai trò như là một server. Nó được tạo ra từ 2 thành phần:

+ Remote Procedure Call - RPC: giữ thông tin về kết nối giữa các client và các server trên các máy tính khác nhau.

+ Local Procedure Call - RPC: giữ thông tin về kết nối giữa các client và các server trên cùng một máy tính.

- Security Manager: quản lý sự an toàn. Đây là thành phần tạo nên sự an toàn hệ thống bằng cách bắt buộc các chính sách an toàn trên các máy tính cục bộ.

- Plug and Play Manager (quản lý plug and play): Plug and play theo dõi các hoạt động tại thời điểm Boot của các thiết bị plug and play và nó tương tác với HAL, các điều khiển thiết bị và Executive.

- Process and Thread Manager: quản lý tiến trình và tiểu trình. Tạo và kết thúc các tiến trình và tiểu trình. Hỗ trợ các tiến trình và tiểu trình được cài đặt bên trong Windows 2000 kernel.

- Và một số thành phần khác như: Power manager (quản lý nguồn); Cache manager (quản lý cache); Virtual memory manager (quản lý bộ nhớ ảo), ...

- Ngoài ra executive còn chứa bốn nhóm chính các hàm hỗ trợ mà nó được sử dụng bởi chỉ các thành phần executive được liệt kê. Sau đây là bốn loại hàm hỗ trợ:

+ Object Manager: quản lý đối tượng

+ LPC facility: Chuyển thông điệp giữa các tiến trình client và các tiến trình server trên cùng máy tính.

+ Một tập các hàm thư viện run-time xử lý string, thực hiện các phép tính, chuyển đổi các kiểu dữ liệu và xử lý các cấu trúc an toàn.

+ Executive support routine: cấp phát bộ nhớ hệ thống, khoá truy cập bộ nhớ và các đối tượng đồng bộ.

Câu 3 (2.5 điểm): Nêu các đặc điểm cơ bản của Linux.

Linux là hệ điều hành miễn phí được xây dựng từ hệ điều hành Unix. Kernel là phần lõi của hệ điều hành, nó chịu trách nhiệm thực hiện các tác vụ của hệ thống. Linux bây giờ như một tập các phần mềm mà trong đó bao gồm kernel và các thành phần khác để nó trở thành một hệ điều hành hoàn chỉnh. Một trong những nguyên nhân làm cho Linux được nhiều người biết đến là nó được cung cấp miễn phí với mã nguồn mở. Nó có các đặc điểm cơ bản sau:

- Miễn phí (Free): Linux là một hệ điều hành được cung cấp miễn phí. Linux được cung cấp cùng với các phần mềm chạy trên nó.

- Mã nguồn mở (Open Source): người sử dụng có thể xem và sửa đổi mã nguồn của nó, để phát triển nó theo từng mục đích cụ thể của người sử dụng.

- Yêu cầu phần cứng (Hardware): Linux có thể chạy trên hầu hết các phần cứng hiện có.

- Đa tác vụ (Multi-Tasking): một người sử dụng có thể chạy nhiều chương trình tại cùng một thời điểm. Mỗi tác vụ là một tiến trình. Người sử dụng không cần phải đợi cho một tiến trình kế thúc hợp lệ để khởi động một tiến trình khác.

- Đa người sử dụng (Multi-User): Điều này có nghĩa có nhiều hơn một người sử dụng có thể sử dụng hệ thống tại cùng một thời điểm.

- Hỗ trợ đa vi xử lý (Multi Processor Support): Linux có thể điều hành các hệ thống máy tính có nhiều hơn một vi xử lý.

- Máy chủ web (Web Server): Linux có thể được sử dụng để chạy như là một web server, và đáp ứng các giao thức ứng dụng như là HTTP hoặc FTP.

- Hỗ trợ mạng TCP/IP (TCP/IP Networking Support): Hỗ trợ mạng TCP/IP được xây dựng trong chính kernel của Linux. Linux một trong các hệ điều hành mạng tốt nhất. Nó bao gồm các chương trình như là: Telnet, Ftp, Rlogin, Rsh và nhiều chương trình khác.

- Hỗ trợ lập trình (Programming Support): Linux cung cấp hỗ trợ lập trình cho Fortran, C, C++, Tcl/Tk, Perl và nhiều ngôn ngữ lập trình khác.

- Độ an toàn cao (High Level Security): Một trong những thuận lợi chính của Linux đó là nó cung cấp một sự an toàn cao cấp bằng cách sử dụng sự xác thực người sử dụng. Nó cũng lưu trữ password trong dạng thức được mã hoá, password một khi đã được mã hoá thì không thể giải mã. Linux cũng bao gồm hệ thống file an toàn, nó được mở rộng từ hệ thống file đang tồn tại.

Câu 4 (2.5 điểm): Phân tích tiến trình 5 trạng thái từ tiến trình 4 trạng thái.

Trên sơ đồ chuyển trạng thái tiến trình trong tiến trình 4 trạng thái, suspend gồm 2 trạng thái: một trạng thái suspend dành cho các tiến trình từ blocked chuyển đến, trạng thái này được gọi là blocked-suspend và một trạng thái suspend dành cho các tiến trình từ ready chuyển đến, trạng thái này được gọi là ready-suspend.

Tới đây ta có thể hiểu các trạng thái tiến trình như sau:

- Ready tiến trình được định vị trong bộ nhớ chính và đang chờ được cấp processor để thực hiện.

- Blocked tiến trình được định vị trong bộ nhớ chính và đang đợi một sự kiện hay một quá trình I/O nào đó.

- Blocked-suspend tiến trình đang bị chứa trên bộ nhớ phụ (đĩa) và đang đợi một sự kiện nào đó.

- Ready-suspend tiến trình đang bị chứa trên bộ nhớ phụ nhưng sẵn sàng thực hiện ngay sau khi được nạp vào bộ nhớ chính.

Sơ đồ chuyển trạng thái tiến trình với 2 suspend

- Blocked sang Blocked-suspend: nếu không còn tiến trình ready trong bộ nhớ chính và bộ nhớ chính không còn không gian nhớ trống thì phải có ít nhất một tiến trình blocked bị chuyển ra ngoài (blocked-suspend), để dành bộ nhớ cho một tiến trình không bị khoá (not blocked) khác.

- Blocked-suspend sang Ready-suspend: khi sự kiện mà nó đợi đã xảy ra.

- Ready-suspend sang Ready: được thực hiện khi không còn tiến trình ready trong bộ nhớ chính, hoặc có tiến trình ready-suspend có độ ưu tiên cao hơn so với các tiến trình ready hiện tại.

- Ready sang Ready - suspend: Hệ điều hành thường chuyển các tiến trình blocked sang suspend hơn là các tiến trình ready, vì các tiến trình ở trạng thái blocked không thể thực hiện ngay lập tức nhưng lại chiếm nhiều không gian bộ nhớ chính hơn so với các tiến trình ở trạng thái ready. Tuy nhiên, nếu việc chọn tiến trình để chuyển sang suspend dựa vào 2 điều kiện: chiếm ít không gian bộ nhớ hơn và có độ ưu tiên thấp hơn thì hệ điều hành có thể chuyển một tiến trình ready sang trạng thái suspend.

Bạn đang đọc truyện trên: Truyen2U.Pro

#hoẵng