CPU luân phiên chuyển đổi thực thi giữa các công việc Quá trình chuyển đổi xảy ra thường xuyên hơn, mỗi công việc chỉ được chia một phần nhỏ thời gian CPU Cung cấp sự tương tác gi
Trang 1Môn học: Hệ Điều Hành
Ngày bắt đầu: 16/02/2009
Ngày kết thúc: 16/05/2009
Giảng viên: TS Tô Tuấn ra đề cương.
CÁC CÂU HỎI VÀ BÀI TẬP ÔN TẬP1.1 Mục tiêu, ý nghĩa và cấu trúc môn học “Hệ điều hành”.
Giải:
Ý nghĩa:
- Hiểu sâu nguyên lý hoạt động của Phần cứng và Phần mềm máy tính
- Học phương pháp phân tích, thiết kế và lập trình một hệ thống lớn để áp dụng cho công tác nghiệp vụ sau này
Mục tiêu:
Mục tiêu: Cung cấp các khái niệm cơ bản về cấu trúc và hoạt động của HĐH
Mô tả vắn tắt:
Mô tả vắn tắt:
- Khái niệm chung, Lịch sử, Phân loại HĐH
- Nguyên lý và hoạt động các khối chức năng
- Giới thiệu dòng HĐH Windows NT/2000/XP/2003
1.2 Một số quan niệm sai về môn học “Hệ điều hành”.
Giải:
Môn học đơn giản, không có gì mới, không có gì đặc biệt
Môn học chủ yếu là lý thuyết, chẳng tác dụng gì
Môn học rất khó, không có cách nào làm chủ được
1.3 Phân tích Định nghĩa “Hệ điều hành là Máy tính mở rộng (Extended Machine) hay Máy tính
ảo (Virtual Machine)”
Giải:
Ẩn các chi tiết của phần cứng để máy tính dễ sử dụng hơn
Người sử dụng và người lập trình được cung cấp một giao diện đơn giản, dễ hiểu
và không phụ thuộc vào thiết bị cụ thể
Thực tế, HĐH là một hệ thống bao gồm nhiều máy tính trừu tượng xếp thành nhiều lớp chồng lên nhau Máy tính mức dưới phục vụ cho máy tính mức trên
Bản thân chương trình ứng dụng cũng là một máy tính trừu tượng và phải dễ sử dụng nhất
Công việc của người lập trình là liên tục xây dựng các máy tính trừu tượng như vậy (cho người khác sử dụng và cho cả chính mình)
1.4 Phân tích Định nghĩa “Hệ điều hành là bộ quản lý tài nguyên (Resource Manager)”.
Trang 2 Hình dung tình huống: 3 chương trình cùng in ra một máy in duy nhất Khó chấp nhận trường hợp 1 trang in xen kẽ nhiều kết quả từ nhiều nguồn khác nhau HĐH giải quyết bằng cách đưa kết quả in của mỗi chương trình tạm thời ra đĩa cứng, sau đó lần lượt in từ đĩa vào thời điểm thích hợp.
1.5 Trình bày cấu trúc khái quát của hệ thống máy tính và liên hệ với cấu trúc trong thực tế.
Giải:
1.6 Bốn thế hệ phát triển của hệ điều hành là những thế hệ nào? Nền tảng Phần cứng và Phần
mềm tương ứng ra sao?
Giải:
Thế hệ 1 (1945 -1955): Đèn điện tử - Bảng điều khiển (Plugboards)
Thế hệ 2 (1955 -1965): Bóng bán dẫn - Hệ xử lý lô (Batch Systems)
Thế hệ 3 (1965 -1980): Mạch IC - Hệ đa chương (Multiprogramming Systems),
Hệ chia thời gian (Time-Sharing Systems)
Thế hệ 4 (1980 - đến nay): Mạch LSI (Large Scale Integration) và Các hệ điều hành hiện đại
Trang 31.7 Lịch sử và tình hình sử dụng hệ điều hành ở Việt Nam.
Cần có người vận hành: operator (user operator)
Giảm setup time ghép nhóm công việc (batching jobs)
Ví dụ: ghép 2 công việc cùng dùng trình biên dịch Fortran, tiết kiệm được thời gian load trình biên dịch Fortran
Là hệ điều hành sơ khai nhất chỉ có Resident Monitor, trong
đó chứa các phần điều khiển quá trình xử lý, tính toán như:
Loader, job sequencing, control card interpreter, device drivers
Tại mỗi thời điểm chỉ có một tiến trình hay một tác vụ trong bộ nhớ
1 Có nhiều tác vụ (tiến trình) cùng một lúc được nạp đồng thời vào bộ nhớ chính
2 Thời gian xử lý của CPU được phân chia giữa các tác vụ đó
3 Tận dụng được thời gian rảnh tăng hiệu suất sử dụng CPU (CPU utilization)
4 Và khi một một tác vụ không cần đến CPU (do phải thực hiện I/O với thiết bị ngoại vi), thì tác vụ khác được thi hành
5 Yêu cầu:
Đồng thời công việc (job scheduling): chọn job trong job pool trên đĩa và nạp nó vào bộ nhớ để thực thi
Operating System
Job i
Bộ nhớ trong
Trang 4 Quản lý bộ nhớ (memory management).
Định thời CPU (CPU scheduling)
Cấp phát tài nguyên (đĩa, máy in,…)
CPU luân phiên chuyển đổi thực thi giữa các công việc
Quá trình chuyển đổi xảy ra thường xuyên hơn, mỗi công việc chỉ được chia một phần
nhỏ thời gian CPU
Cung cấp sự tương tác giữa hệ thống với user
Khi kết thúc thực thi một lệnh, OS sẽ chờ lệnh kế tiếp từ bàn phím chứ không phải từ card reader
Một công việc chỉ được chiếm CPU để xử lý khi nó nằm trong bộ nhớ chính
Khi cần thiết, một công việc nào đó có thể được chuyển từ bộ nhớ chính ra thiết bị lưu trữ, nhường bộ nhớ chính cho công việc khác
Yêu cầu đối với OS trong Time-Sharing Systems
Định thời công việc (job scheduling)
Quản lý bộ nhớ (Memory Management)
o Các công việc được hoán chuyển giữa bộ nhớ chính và đĩa
o Virtual memory: cho phép một công việc có thể được thực thi mà không cần phải nạp hoàn toàn vào bộ nhớ chính
Quản lý các process (Process Management)
o Định thời CPU (CPU scheduling)
o Đồng bộ các công việc (synchronization)
o Tương tác giữa các công việc (process communication)
o Tránh Deadlock
Quản lý hệ thống file, hệ thống lưu trữ (disk management)
Phân bổ các thiết bị, tài nguyên
Cơ chế bảo vệ (protection)
1.11 Nêu 1 ví dụ từ đời thường minh hoạ chế độ phục vụ chia thời gian.
Giải:
Trang 5Ví dụ từ đời thường: Trong nhà hàng, người bồi bàn (CPU) phục vụ mỗi bàn ăn (Chương trình người dùng) trong 1 khoảng thời gian ngắn (chẳng hạn trong 10 giây), sau đó chuyển sang bàn khác.
1.12 Các dòng hệ điều hành trên máy tính để bàn là các dòng nào? Hãy trình bày sự khác biệt giữa
dòng Windows 9X với dòng Windows NT/2000/XP/2003
° Dòng DOS: PC-DOS, MS-DOS
° Dòng UNIX: XENIX, Linux
° Dòng Windows:
– Windows 3.X: Windows 3.1– Windows 9X: Windows 95/98/ME– Windows NT: Windows NT/2000/XP/2003/Vista
1.13 Điền tên thích hợp vào chỗ có dấu hỏi chấm:
Windows 95 Windows 98 Windows 98 SE ?
1.14 Điền tên thích hợp vào chỗ có dấu hỏi chấm:
? Windows 2000 Windows XP ?
1.15 Điền tên thích hợp vào chỗ có dấu hỏi chấm:
Windows 2000 Server (4 CPU) Windows 2000 Advanced Server (8 CPU) ? (? CPU)
1.16 Đa xử lý đối xứng khác với Đa xử lý phi đối xứng ở điểm nào? Cho các ví dụ về hệ điều hành
………
Hệ đa xử lý phi đối xứng:
o Các CPU chung bộ nhớ và thiết bị
o Mỗi CPU được ấn định chức năng riêng:
Có CPU chủ (Master) kiểm soát toàn hệ thống
Các CPU khác đóng vai trò phụ thuộc (Slaves), chuyên trách công việc nào đó
Trang 6 Master điều phối và cấp phát công việc cho các Slaves
o Hệ điều hành hỗ trợ: SunOS 4.x
1.17 Phân loại các hệ phân tán theo khoảng cách và theo phương thức phục vụ Phân biệt File
Server với Client-Server
Giải:
Phân loại theo khoảng cách:
LAN (Local-Area Network): Nội bộ
WAN (Wide-Area Network): Diện rộng
MAN (Metropolitan-Area Network): Đô thị
Phân loại theo phương thức phục vụ:
File-Server: Máy chủ không tính toán, chỉ làm dịch vụ tập tin cho các máy khác
Peer-to-Peer: Mạng các máy ngang hàng
Client-Server: Máy khách (Client) gửi yêu cầu, Máy chủ (Server) tính toán và gửi trả lại kết quả
1.18 Gom cụm đối xứng khác với Gom cụm phi đối xứng ở điểm nào?
Giải:
Gom cụm đối xứng (Symmetric Clustering): Các máy ngang hàng
về chức năng, Mỗi máy thực hiện phần việc của mình và giám sát lẫn nhau
Gom cụm phi đối xứng (Asymmetric Clustering): Một máy chạy trong Hot Standby Mode, nghĩa là chỉ giám sát công việc các máy khác nhưng sẽ đảm đương công việc của máy gặp sự cố
1.19 Định nghĩa của IEEE về Hệ thời gian thực.
Giải:
o Hệ thống thời gian thực (Real-Time Systems)
Thường dùng trong các thiết bị chuyên dụng như điều khiển các thử nghiệm khoa học, điều khiển trong y khoa, dây chuyền công nghiệp
Ràng buộc tương đối chặt chẽ về thời gian: hard và soft real-time
Đường truyền hệ thống (System Bus)
Các mạch điều khiển thiết bị (Device Controller): Điều khiển công việc của thiết bị (Phần cơ); Làm việc đồng thời, song song và độc lập với CPU
Trang 7 Mạch điều khiển bộ nhớ (Memory Controller) với chức năng đồng bộ hoá truy cập bộ nhớ chung
2.2. Quá trình khởi động máy tính và hệ điều hành
Giải:
Sau khi bật nguồn, chương trình mồi Bootstrap lấy từ ROM hoặc EEPROM được khởi động với chức năng khởi hoạt các thiết bị hệ thống: Các thanh ghi CPU, Bộ nhớ, Disk Controllers, sau đó khởi động hạt nhân của HĐH nạp từ đĩa cứng
Hạt nhân (Kernel, Monitor) của HĐH khởi động tiến trình đầu tiên gọi là INIT (Initialization) và chờ các sự kiện (Event) có thể xảy ra
2.3. Trình bày nguyên tắc xử lý ngắt của hệ điều hành
Giải:
Hai loại ngắt chính:
o Tín hiệu ngắt (Interrupt Signal) từ các thiết bị (Ngắt cứng) truyền qua System Bus
o Tín hiệu ngắt từ chương trình người dùng (Ngắt mềm) nhờ Lời gọi hệ thống (System Call hay Monitor Call) Lệnh đặc biệt này (ví dụ có tên INT hoặc SysCall) là cơ chế đểtiến trình người dùng yêu cầu một dịch vụ của HĐH (ví dụ, yêu cầu thực hiện lệnh I/O)
Với mỗi loại ngắt, có đoạn mã riêng của HĐH dùng để xử lý
Các HĐH hiện đại được dẫn dắt bởi các sự kiện Nếu không có tiến trình nào vận hành, không có thiết bị I/O nào làm việc, HĐH im lặng chờ và theo dõi
Thông thường, mỗi loại ngắt tương ứng với 1 dòng trong bảng (Véc-tơ ngắt) chứa con trỏ (Pointer) tới chương trình xử lý loại ngắt đó Bảng này nằm ở vùng thấp của RAM (ví dụ:
100 bytes đầu tiên)
Cơ chế xử lý ngắt phải có trách nhiệm ghi lại địa chỉ lệnh bị ngắt để sau đó có thể quay lại Địa chỉ này cùng với nhiều thông tin khác có thể được ghi vào Ngăn xếp hệ thống (System Stack) với nguyên tắc làm việc LIFO ( Last-In, First-Out )
2.4. Minh hoạ bằng hình vẽ Tuyến thời gian của 1 tiến trình có 2 yêu cầu tới thiết bị ngoài
Giải:
Trang 82.5. Hai phương thức Nhập/Xuất là những phương thức nào? Nêu 2 ví dụ sử dụng.
Giải:
- Synchronous I/O: Sau khi phát ra lệnh Nhập/Xuất, tiến trình chuyển sang trạng thái chờ đến
khi Nhập/Xuất hoàn tất rồi mới chạy tiếp (thực hiện lệnh kế tiếp)
Ví dụ: Khi ta tạo mới một tài liệu nhập dữ liệu từ bàn phím, khi muốn lưu lại ta phải chọn Save,
sau đó đặt tên file, và chọn nơi lưu trữ Các tiến trình đó ở trạng thái chờ tiến trình trước nhập xuất hoàn tất đã
- ASynchronous I/O: Sau khi phát ra lệnh Nhập/Xuất, tiến trình không chờ Nhập/Xuất hoàn
tất mà thực hiện ngay lệnh kế tiếp Như vậy, tiến trình vận hành song song với công việc Nhập/Xuất
Để chứng minh điều đó, hãy xem hình vẽ sau:
Ví dụ: Khi ta nhập dữ liệu mới hoặc thêm vào tài liệu đã có, khi ta muốn lưu thì ta chọn Save
và lúc này tiến trình vận hành song song với việc phát ra lệnh từ Save
2.6. Giả sử một hệ thống có 3 loại thiết bị là Máy in, Ổ Đĩa cứng và Ổ CD-ROM Có 1 yêu cầu in
tập tin DanhSach.doc, 1 yêu cầu đọc F1.txt từ đĩa cứng, 1 yêu cầu ghi ra F2.txt trên đĩa cứng.Hãy thể hiện bằng hình vẽ Bảng trạng thái thiết bị với 3 yêu cầu Nhập/Xuất kể trên
Trang 92.7. Trong 2 loại bộ nhớ là Bộ nhớ chính và Đĩa từ, loại nào là Bộ nhớ Sơ cấp, loại nào là Bộ nhớ
Thứ cấp? Phân loại như vậy để làm gì?
Giải:
o Chương trình máy tính phải được nạp vào RAM (Random-Access Memory) trước khi thực hiện
o Lệnh cần thực hiện phải được nạp vào thanh ghi (Register) của CPU
o Các tác tử (Operand) tương ứng cũng được lấy từ RAM
o Lý tưởng nhất là chương trình và dữ liệu đều nằm trong RAM nhưng không khảthi vì RAM quá nhỏ và là loại bộ nhớ không chắc (Volatile) do nội dung bị xoá khi mất điện
o RAM được sử dụng làm Bộ nhớ Sơ cấp (Primary Memory)
Bộ nhớ phụ (secondary storage): hệ thống lưu trữ thông tin bền vững (nonvolatile storage)
o Đĩa từ (magnetic disks) là loại bộ nhớ phụ hay bộ nhớ thứ cấp
o Bề mặt đĩa chia thành các rãnh (tracks), các rãnh này được chia nhỏ hơn thành các cung
từ (sectors).
o Cylinder: tập các track tạo thành một hình trụ
o Disk controller: bộ điều khiển quá trình giao tiếp giữa CPU và đĩa.
2.8. Vẽ hình tháp mô tả cấu trúc phân cấp các loại bộ nhớ
Giải:
Trang 102.9. Mục đích của nguyên tắc Caching là gì? Nêu 1 ví dụ từ đời thường sử dụng nguyên tắc đó.
Giải:
o Là nguyên tắc quan trọng của hệ thống máy tính
o Thông tin từ RAM có thể được cơ chế phần cứng đưa vào bộ nhớ nhanh hơn gọi
là Cache Khi CPU cần chính thông tin đó, không cần phải truy xuất RAM, mà lấy ngay từ Cache
o Loại bộ nhớ này không do HĐH quản lý và cấp phát
o Thực tế, RAM (Bộ nhớ Sơ cấp) là loại Cache nhanh so với đĩa cứng (Bộ nhớ thứ cấp) và HĐH có chức năng quản lý sự lưu chuyển dữ liệu giữa 2 loại bộ nhớ này
2.10 Điền từ thích hợp vào chỗ có dấu hỏi chấm:
Milli Micro Nano Pico ? ? ? ?Giải:
Milli Micro Nano Pico Femto Atto Zepto Yocto
2.11 Điền từ thích hợp vào chỗ có dấu hỏi chấm:
Kilo Mega Giga Tera ? ? ? ?Giải:
Kilo Mega Giga Tera Pera Exa Zetta Yotta
2.12 Phân tích Hai chế độ vận hành của máy tính.
Giải:
Hệ điều hành hiện đại dùng cơ chế Dual-Mode để duy trì 2 chế độ
là User Mode và Monitor Mode (còn gọi là Supervisor Mode, System Mode hoặc Privileged Mode) để bảo vệ hệ thống và các tiến trình đang vận hành
Một Mode Bit được đưa vào phần cứng của máy để chỉ báo chế
độ làm việc hiện hành: 0 - Monitor Mode, 1 - User Mode
Khi xảy ra ngắt, phần cứng chuyển từ User Mode sang Monitor Mode bằng cách đặt Mode Bit thành 0
Hệ điều hành đặt Mode Bit bằng 1 trước khi trả điều khiển về tiếntrình người dùng
Một số lệnh máy chỉ thực hiện được trong Monitor Mode (Các lệnh ưu tiên)
Tiến trình người dùng có thể gián tiếp thực hiện các lệnh ưu tiên qua Lời gọi hệ thống (System Call)
Trang 11 MS-DOS không có Dual-Mode.
Bộ xử lý Pentium hỗ trợ Mode bit, do đó các HĐH Windows 2000/XP/2003/Vista và OS/2 tận dụng được tính năng này để bảo vệ máy tính tốt hơn
2.13 Bảo vệ Nhập/Xuất bằng System Call như thế nào?
Giải:
System call – phương thức duy nhất mà process dùng để yêu cầu các dịch vụ cung cấp bởi OS
o Các system call gây ra ngắt mềm (gọi là trap)
o Quyền điều khiển được chuyển đến trình phục vụ ngắt, mode bit được thiết lập là monitor mode
o OS kiểm tra tính hợp lệ và đúng đắn của các đối số, thực hiện yêu cầu và trả quyền điều khiển về lệnh kế tiếp sau system call
2.14 Trình bày Thuật giải bảo vệ bộ nhớ bằng Thanh ghi Cơ sở và Thanh ghi Giới hạn.
Giải:
o Để tiến trình người dùng không can thiệp được vào vùng nhớ của HĐH và của các tiến trình khác, thường sử dụng 2 thanh ghi: Thanh ghi Cơ sở (Base Register) và Thanh ghi Giới hạn (Limit Register)
o Chỉ có HĐH mới có thể sửa được nội dung 2 thanh ghi này
2.15 Bảo vệ CPU bằng Timer.
Giải:
CPU protection: bảo đảm OS phải duy trì được quyền điều khiển, tránh trường hợp user bị lặp
vô hạn, không trả quyền điều khiển Cơ chế thực hiện là timer.
Timer – kích khởi các ngắt quãng định kỳ
o Bộ đếm timer sẽ giảm dần sau mỗi xung clock của máy tính.
o Khi timer bằng 0 thì kích hoạt ngắt timer và OS sẽ nắm quyền điều khiển.
Timer cũng được sử dụng để hiện thực hệ thống time sharing.
Thiết lập timer gây ngắt định kỳ N ms (time slice, quantum)
Timer cũng được dùng để tính thời gian.
Lệnh nạp giá trị cho bộ đếm timer là privileged instruction.
3.1. Những bộ phận cấu thành của hệ điều hành
Trang 12 Quản lý Process (Process Management)
Quản lý bộ nhớ chính (Memory Management)
Quản lý Hệ Thống File (File Management)
Quản lý hệ thống I/O (I/O System Management)
Quản lý bộ nhớ phụ (Secondary Storage Management)
Hệ thống bảo vệ (Protection System)
Thao tác với Hệ tập tin: Tạo lập/Loại bỏ/Đọc/ghi tập tin,
Liên lạc giữa các tiến trình: Bằng thông điệp (Messages), Qua vùng nhớ chung Trao đổi thông tin giữa các tiến trình Trên 1 máy/ Giữa các máy khác nhau trong mạng
Phát hiện lỗi: Lỗi trong CPU, Bộ nhớ, Các thiết bị (Lỗi chẵn lẻ - Parity, Lỗi truy cập mạng, Lỗi hết giấy, ) Mỗi loại lỗi có cách xử trí riêng của HĐH
3.4. Khái niệm System Call và 3 phương thức truyền tham số
Giải:
System calls cung cấp giao diện làm việc giữa một chương trình đang thực thi và hệ điều hành
o Thông thường là các thư viện hợp ngữ (assembly)
o Các ngôn ngữ lập trình cấp cao thường có các thư viện lập trình thay cho các thư viện hợp ngữ của hệ thống, cho phép lập trình viên triệu gọi system calls trực tiếp (ví dụ: C/C++, Win32 API)
Ba phương pháp truyền thông số giữa process và hệ điều hành
o Truyền thông số qua các thanh ghi (registers)
o Truyền tham số qua một vùng nhớ chia sẻ, địa chỉ của vùng nhớ gửi đến OS qua thanh ghi
o Truyền tham số qua stack
3.5. Hệ điều hành có các nhóm chương trình hệ thống nào?
Giải:
o Quản lý tập tin/thư mục: Tạo lập, Loại bỏ, Sao chép, Đổi tên, In ấn, Liệt kê
o Cung cấp thông tin về trạng thái hệ thống: Ngày, Giờ, Bộ nhớ trống, Số Users
o Chỉnh lý tập tin: Soạn thảo văn bản (NotePad, WordPad)
o Một số trình Biên dịch/Thông dịch: Assembler, C, C++, VB
Trang 13o Nạp và thực hiện chương trình: Loaders, Linkage Editors.
o Liên lạc: Gửi/Nhận thông điệp giữa các máy, Trình duyệt (Web Browser), Thư điện tử, Truyền file, Đăng nhập từ xa,
o Shell: (Command-Interpreter, Desktop Window)
o
3.6. Cấu trúc đơn giản của hệ điều hành
Giải:
các thủ tục (Procedure) có thể Gọi tự do lẫn nhau Thực chất không có cấu trúc nào cả
kế cho cấu hình phần cứng hạn chế MS-DOS là 1 hệ như vậy
3.7. Cấu trúc phân lớp của hệ điều hành
không quan tâm chức năng đó được Làm như thế nào
lên
khác
Trang 143.8. Cấu trúc vi hạt của hệ điều hành.
Giải:
Chuyển một số chức năng của OS từ kernel sang user
o Thu gọn kernel micro-kernel
o Micro-Kernel chỉ bao gồm các chức năng tối thiểu như quản lý process và bộ nhớ, cung cấp các cơ chế giao tiếp
Quá trình giao tiếp được thực hiện giữa các user module qua cơ chế message passing
Ưu điểm
o Dễ dàng mở rộng micro-kernel OS
o Dễ dàng chuyển OS sang kiến trúc mới
o Độ tin cậy cao hơn (rất ít code chạy trong kernel mode)
o Bảo mật hơn
3.9. Hệ điều hành Windows NT có cấu trúc gì?
Giải:
Windows NT là hệ hỗn hợp: Vừa có cấu trúc phân lớp, Vừa có cấu trúc vi hạt
3.10 Khái niệm Máy tính ảo.
Giải:
lớp
có thể tạo cho người dùng ảo giác rằng người đó đang dùng bộ xử lý và bộ nhớ của riêng mình
giả lập trên nền máy tính vật lý
Alpha, có thể giả lập máy tính ảo Intel chạy HĐH Windows và ngược lại Khi đó, các lệnh của Intel được chuyển đổi sang lệnh vật lý trước khi thực hiện
Trang 153.11 Hệ điều hành máy ảo thương mại đầu tiên có tên là gì? Của hãng phần mềm nào?
Giải:
HĐH máy ảo thương mại đầu tiên: VM/370 của IBM
3.12 Chức năng và ứng dụng của Phần mềm Virtual PC.
Giải:
Phần mềm máy ảo Virtual PC do hãng Microsoft cung cấp có những chức năng và ứng dụng:
o Mỗi PC ảo có HĐH riêng do đó có thể cài đủ loại hệ điều hành trên 1 máy, bao nhiêu cũng được
o Mỗi PC ảo ứng với 1 tập tin ảnh *.vhd
o Mỗi PC ảo có cửa sổ riêng
o Có thể nối mạng giữa các máy ảo do đó dễ dàng nghiên cứu và thử nghiệm mạng mà chỉ có 1 máy (không card, không dây mạng)
3.13 Các mục đích và nguyên tắc thiết kế hệ điều hành.
Giải:
Các mục đích thiết kế (Design Goals):
o Loại phần cứng cụ thể
o Loại hệ điều hành: Lô, Đơn hay Đa chương, Chia thời gian, Phân tán, Thời gian thực,
o Yêu cầu của người dùng: Tiện dụng, Dễ học, Tin cậy, An toàn, Nhanh,
o Yêu cầu của người lập trình HĐH: Dễ thiết kế, Dễ thi công, Dễ bảo trì, Dễ nâng cấp,
Nguyên tắc thiết kế (Design Principle):
o Tách bạch Policy (Làm gì) với Mechanism (Làm như thế nào)
Thi công (Implementation):
Trang 16o Loại CPU, Số CPU
o Dung lượng bộ nhớ trong
o Các loại thiết bị, Cụ thể mỗi loại (Số lượng, Số hiệu, Địa chỉ, Số hiệu ngắt, )
o Các thông số của HĐH: Số bộ đệm (Buffer), Dung lượng mỗi bộ đệm, Thuật giải điều phối CPU, Số tiến trình tối đa được hỗ trợ song song,
3.16 Ba cách sản sinh hệ điều hành.
Giải:
1 Mã nguồn HĐH được sửa tại một số chỗ, sau đó hệ được Biên dịch (Compile) và Hợp nhất (Link) lại
2 Không sửa mã nguồn mà chỉnh nội dung một số bảng Có thể hợp nhất lại hệ thống
3 Sản sinh được thực hiện khi Khởi động lần đầu và (hoặc) khi Setup do HĐH hoàn toàn được dẫn dắt theo bảng cấu hình (Solaris, Windows)
4.1. Tiến trình khác Chương trình như thế nào?
Giải:
- Tiến trình (Process) là chuơng trình trong thời gian thực hiện (đặt dưới sự quản lý của
HĐH).Có sự phân biệt Tiến trình hệ thống (của HĐH) với Tiến trình người dùng
- Bản thân chương trình không là tiến trình vì là thực thể Thụ động (Passive), trong khi tiến trình là thực thể Hoạt động (Active) với nhiều thông tin về trạng thái trong đó có Bộ đếm chương trình (Program Counter) cho biết vị trí lệnh hiện hành
4.2. Hãy minh hoạ bằng hình vẽ quá trình chuyển trạng thái của tiến trình
Giải:
Trang 174.3. Chức năng và nội dung của Khối kiểm soát tiến trình.
Giải:
Chứa các thông tin ứng với mỗi process
Process ID, parent process ID
Credentials (user ID, group ID, effective ID, )
Trạng thái process : new, ready, running, waiting…
Program counter: địa chỉ của lệnh kế tiếp sẽ thực thi
Các thanh ghi CPU
Thông tin dùng để định thời CPU: priority,
Thông tin bộ nhớ: base/limit register, page tables…
Thông tin thống kê: CPU time, time limits…
Thông tin trạng thái I/O: danh sách thiết bị I/O được cấp
phát, danh sách các file đang mở,
Con trỏ (pointer) đến PCBs khác
4.4. Phân biệt 3 loại hàng chờ điều phối
Giải:
Hàng chờ công việc (Job Queue): Danh sách các tiến trình ở trạng thái New
Hàng chờ sẵn sàng (Ready Queue): Danh sách các tiến trình ở trạng thái Ready
Hàng chờ thiết bị (Device Queue): Danh sách các tiến trình chờ thiết bị
Nhập/Xuất cụ thể
4.5. Tại sao phải có Điều phối chậm, Điều phối nhanh và Điều phối vừa?
Giải:
Long-term scheduler (or job scheduler)
Chọn process nào sẽ được đưa vào ready queue (từ New chuyển sang Ready)
Short-term scheduler (or CPU scheduler)
Chọn process nào sẽ được chiếm CPU để xử lý (từ Ready chuyển sang Running)
Chuyển process từ bộ nhớ chính sang sang bộ nhớ thứ cấp (nhưng vẫn nằm trong không gian
bộ nhớ ảo); khi nào cần thì nạp process từ bộ nhớ thứ cấp vào bộ nhớ chính
4.6. Chuyển ngữ cảnh là gì?
Giải:
Chuyển ngữ cảnh (Context Switch)
Là chức năng của Dispatcher khi cần chuyển CPU từ tiến trình P0 này sang tiến trình P1 khác:
- Ghi môi trường và trạng thái làm việc của P0 vào PCB0
- Nạp môi trường và trạng thái làm việc của tiến trình P1 từ PCB1
Thời gian chuyển ngữ cảnh khá lớn: Từ 1-1000 s
Công nghệ Đa luồng (Bài 5) được dùng để giảm thời gian chuyển ngữ cảnh
Hệ máy Sun UltraSPARC có nhiều bộ thanh ghi được dùng để hỗ trợ Context Switch bằng phần cứng: Chuyển ngữ cảnh đơn thuần chỉ là thay đổi con trỏ từ Bộ thanh ghi này sang Bộ thanh ghi khác
4.7. Tạo lập tiến trình trong Windows
Giải:
Các hàm API dùng tạo mới tiến trình và khởi động chương trình tương ứng:
CreateProcess, CreateProcessWithLogon
Trang 18Phát biểu bài toán:
Giả sử có Bộ nhớ đệm (Buffer) bao gồm nhiều khoang (Items) được tiến trình Producer lầnlượt đưa các sản phẩm S1, S2, vào
Tiến trình Consumer lần lượt lấy sản phẩm ra theo đúng thứ tự
Công việc của Producer phải đồng bộ với Consumer: Không được đưa sản phẩm vào khi Buffer đầy, Không được lấy ra khi chưa có
Trình bày giải thuật:
4.10 Hai phương thức liên lạc giữa các tiến trình.
Giải:
Liên lạc trực tiếp (Direct Communications)
Theo địa chỉ đối xứng (Symmetric Scheme)
Send (P, Message) - Gửi thông điệp cho P
Receive (Q, Message) - Nhận thông điệp từ Q
Buffer xoay vòng
item nextConsumed;
while (1) {
while(in==out); //quẩn khi buffer rỗng nextConsumed = buffer[out];
out = (out+1)%BUFFER_SIZE; }
Trang 19Đặc điểm:
Liên kết được thiết lập tự động giữa mỗi cặp tiến trình
Liên kết chỉ giữa 2 tiến trình
Chỉ có 1 liên kết giữa mỗi cặp
Tính đối xứng của liên lạc (2 bên đều biết đích xác tên của nhau khi Gửi/Nhận)
Theo địa chỉ phi đối xứng (Asymmetric Scheme)
Send (P, Message) - Gửi thông điệp cho P
Receive (id, Message) - Nhận thông điệp từ tiến trình bất kỳ, Biến id chứa số hiệu tiến trình gửi
Liên lạc gián tiếp (Indirect Communications)
Qua các Hộp thư (Mailboxes) hoặc Cổng (Ports)
Hộp thư là một thực thể qua đó thông điệp được gửi đến và lấy ra
Mỗi hộp thư có định danh riêng
Hai tiến trình phải chung nhau một hộp thư nào đó
Hai loại hộp thư:
Hộp thư tiến trình (Process Mailbox): Nằm trong vùng địa chỉ của một tiến trình nào đó
Hộp thư hệ điều hành (OS Mailbox): Nằm trong vùng địa chỉ của HĐH
4.11 Đồng bộ hoá liên lạc giữa các tiến trình.
Giải:
Đồng bộ hoá liên lạc (Synchronization)
Gửi thông điệp có chờ (Blocking Send)
Gửi thông điệp không chờ (Nonblocking Send)
Nhận thông điệp có chờ (Blocking Receive)
Nhận thông điệp không chờ (Nonblocking Receive)
4.12 Truyền thông điệp trong Windows
Giải:
Các hàm API dùng để Gửi/Nhận thông điệp
SendMessage: Gửi có chờ
PostMessage: Gửi không chờ
SendMessageTimeout: Gửi có chờ nhưng với thời hạn
WaitMessage: Chờ thông điệp đến
5.1. Những ích lợi của đa luồng
Giải:
Trang 20 Khả năng đáp ứng (Responsiveness) tốt hơn: Trong khi một luồng bị ách hoặc quá bận, luồng khác vẫn vận hành bình thường (Luồng chính của trình duyệt vẫn tương tác với người dùng trong khi dữ liệu được lấy về).
Chia sẻ tài nguyên (Resource Sharing): Theo mặc định, các luồng có thể dùng chung bộ nhớ và tài nguyên của luồng cha Vài luồng cùng vận hành trong 1 vùng địa chỉ, do đó dễ dùng chung tài nguyên hơn so với trường hợp đa tiến trình
Tiết kiệm (Economy): Cấp phát bộ nhớ và tài nguyên cho tiến trình là công việc tốn kém Do luồng chung tài nguyên với cha và các luồng khác, việc tạo lập và chuyển ngữ cảnh cũng nhanh hơn (Solaris 2: Tạo tiến trình chậm hơn 30 lần, Chuyển ngữ cảnh chậm hơn 5 lần)
Tận dụng được thế mạnh của kiến trúc đa xử lý: Đa luồng làm tăng tính song song trên
hệ máy nhiều CPU Mỗi luồng có thể chạy bởi CPU riêng
5.2. Nêu 2 ví dụ ứng dụng công nghệ đa luồng
bộ các Process cũng bị block theo
- Mô hình One – to – One là mỗi User level thread được gắn với một Kernel thread Khi có một user thread mới được tạo ra thì cũng cần tạo một Kernel thread tương ứng, lúc này chi phí quá lớn
- Mô hình Many – to – Many nhiều User level thread được phân chia ánh xạ vào một số Kernel thread Tránh được các khuyết điếm của 2 mô hình trên
5.4. Hãy phân tích Nguyên lý Tập luồng
Giải:
Tập luồng (Thread Pools):
- Tiến trình cha tạo lập sẵn một tập luồng khi khởi động
- Các luồng trong tập luồng luôn sẵn sàng chờ công việc
- Khi tiến trình cha (ví dụ Web Server) nhận thêm một yêu cầu, một luồng được đánh thức và đưa vào vận hành
- Phục vụ xong, luồng được đưa trả về tập luồng
- Nếu số yêu cầu lớn hơn số luồng trong tập, tiến trình cha chờ đến khi có luồng được giảiphóng
5.5. Tạo lập luồng trong Windows
5.6. Tạo lập luồng trong UNIX/Linux
5.7. Lập trình đa luồng trong UNIX/Linux
5.8. Lập trình đa luồng trong Windows NT/2000/XP/2003
6.1. Vì sao hệ điều hành phải có chức năng điều phối CPU?
Giải:
Trang 21Trong các hệ đa chương thực thi nhiều chương trình đồng thời làm tăng hiệu suất hệ thống.Tại mỗi thời điểm, chỉ có một process được thực thi Do đó, cần phải giải quyết vấn đề phân chia, lựa chọn process thực thi sao cho được hiệu quả nhất chiến lược định thời CPU.
6.2. Năm tiêu chí điều phối CPU là những tiêu chí nào?
4 Thời gian chờ (Waiting Time): Tổng thời gian chờ tại Ready Queue
5 Thời gian đáp ứng (Response Time): Thời gian kể từ khi người dùng đặt yêu cầu cho đến khi
có phản hồi đầu tiên
6.3. Trình bày thuật giải điều phối FCFS
Giải:
Đến trước - Phục vụ trước (First-Come, First-Served Scheduling - FCFS)
- Đơn giản, dễ thực hiện
- Các tiến trình trong Ready Queue được cấp CPU từ đầu dãy đến cuối dãy theo quy tắc FIFO (First-In, First-Out)
- Thời gian chờ trung bình khá lớn
6.4. Trình bày thuật giải điều phối PS
Giải:
- Mỗi tiến trình được cấp một số nguyên (Priority Number) dùng để ấn định Độ ưu tiên
- CPU luôn dành cho tiến trình với độ ưu tiên cao hơn (Priority Number nhỏ hơn Độ ưu tiên cao hơn ) với 2 phương án:
Có tiếm quyền ( Preemptive )
Không tiếm quyền ( Non-Preemptive )
- SJFS là trường hợp đặc biệt của PS với độ ưu tiên:
P= ( Khoảng CPU kế tiếp )
6.5. Trình bày thuật giải điều phối SJFS
Giải:
Ngắn hơn-Chạy trước (Shortest-Job-First Scheduling-SJFS)
- Đúng hơn phải được gọi là Shortest-Next-CPU-Burst, nghĩa là tiến trình có Khoảng CPU kế tiếp nhỏ hơn thì được chạy trước Trong trường hợp bằng nhau, dùng thuật giải FCFS
- Là giải thuật khá tối ưu, nhưng phải biết cách ước đoán khoảng CPU kế tiếp
- SJFS không tiếm quyền (Non-Preemptive SJFS): Tiến trình hiện thời được thực hiện đến hết khoảng CPU của nó
- SJFS có tiếm quyền (Preemptive SJFS): Tiến trình mới có Next CPU Burst nhỏ hơn khoảng thời gian CPU còn lại của tiến trình đang vận hành sẽ được chọn thay thế (Shortest Remaining First)
6.6. Trình bày thuật giải điều phối RRS
Giải:
Trang 22- Như điều phối kiểu FCFS nhưng cho phép tiếm quyền khi tiến trình đang chạy bị hết thời lượng.
- Mỗi tiến trình được cấp 1 thời lượng CPU (T ime Quantum ), thường từ 10-100 mili giây Sau khoảng thời gian này, nó bị tiếm quyền và được đưa vào cuối hàng chờ Ready Tiến trình đầu tiên trong hàng chờ Ready được chọn kế tiếp
- Nếu có n tiến trình và thời lượng là n qq , mỗi tiến trình nhận 1/n thời gian CPU bao gồm các 1/nđoạn không quá q đơn vị thời gian q
6.7. Trình bày thuật giải điều phối MQS
Giải:
- Hàng chờ Ready được phân cấp thành nhiều mức có độ ưu tiên khác nhau, ví dụ: Mức các tiến trình tương tác (Interactive) chạy ở mặt trước ( Foreground ) có độ ưu tiên cao nhất và Mức các tiến trình lô ( Batch ) vận hành trong hậu trường (Background )
- Mỗi hàng chờ có thuật giải điều phối riêng, ví dụ: Foreground dùng RRS, Background dùng FCFS
- Quan hệ giữa các mức:
Ưu tiên cố định: Xong hết các tiến trình mức trên rồi mới chuyển xuống mức dưới
Đang chạy tiến trình mức dưới mà xuất hiện tiến trình mới mức cao hơn, tiến trình mức dưới
sẽ bị tiếm quyền cho tiến trình mới có độ ưu tiên cao hơn ( Hệ Solaris 2 dùng cách này )
Phân bổ theo tỉ lệ thời lượng: ví dụ: 80% thời lượng CPU dành cho Foreground, 20 %
- MFQS đặc trưng bởi các thông số:
Số mức (số hàng chờ)
Thuật giải điều phối cho mỗi mức
Phương thức nâng cấp tiến trình
Phương thức hạ cấp tiến trình
Phương thức chọn hàng chờ (chọn mức) cho tiến trình mới
6.9. Giả sử một hệ thống có 3 tiến trình với tính chất như sau:
Tiến trình Thời điểm đến (giây thứ) Khoảng CPU (số giây)
Dùng thuật giải FCFS để điều phối CPU:
a) Thể hiện bằng biểu đồ Gantt
b) Tính thời gian chờ trung bình của các tiến trình
Giải: