Professional Documents
Culture Documents
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)”.
Giải:
Đáp ứng các yêu cầu sử dụng tài nguyên thiết bị như: CPU, Bộ nhớ trong, Ổ đĩa, Ổ
băng, Máy in, Card mạng, ...
Trong trường hợp nhiều chương trình, nhiều người dùng cùng chia sẻ các tài nguyên
chung như vậy, HĐH phải giải quyết tranh chấp có thể xảy ra và đứng ra làm trung gian điều
phối sao cho tài nguyên được sử dụng đúng thứ tự, dùng xong lại được cấp cho đối tượng
khác sử dụng.
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.
1.7. Lịch sử và tình hình sử dụng hệ điều hành ở Việt Nam.
Giải:
Máy tính Minsk-32 ( Liên Xô ) với HĐH đơn chương Dispatcher tại Trung tâm
Toán - Máy tính, BQP (từ 1974 - 1990)
Máy tính ES-1022 ( Liên Xô ) với HĐH đa chương OS/ES (tương đương với
OS/360 của IBM) tại Đại học Bách khoa Hà Nội (từ 1986 - 1996)
Máy tính IBM 360/50 với HĐH đa chương OS/360 tại Trung tâm Điện toán tiếp
vận của Quân đội Sài Gòn ( từ 1974 )
Các HĐH cho máy vi tính: PC-DOS, MS-DOS, MacOS, OS/2, Windows 9x,
Windows NT/2000/XP/VISTA, RedHat Linux, Linux VN 1.0, VietKey Linux 3.0, ...
1.8. Trên các máy lớn thời kỳ đầu, Hệ Xử lý lô hoạt động thế nào?
Giải:
Thiết bị I/O : card reader, tape drives
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ớ.
Job i
Bộ nhớ
trong
Operating
System
1.10. Nguyên lý hoạt động của Hệ điều hành Chia thời gian (Time – Sharing System).
Giải:
Là loại hệ điều hành đa chương (Multi-programmed systems) nhưng không cung cấp
khả năng tương tác với users
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:
Ví 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.
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
đa xử lý đối xứng.
Giải:
Hệ đa xử lý đối xứng:
o Có nhiều bộ vi xử lý cùng vận hành và sử dụng chung bộ nhớ và thiết bị I/O, ngang
hàng về chức năng
o Các hệ điều hành hỗ trợ:
-Solaris, OS/2, Linux
-Windows NT/2000/XP/2003/Vista
Windows 2000 Professional: 2 CPU
Windows 2000 Server: 4 CPU
Windows 2000 Advanced Server : 8 CPU
Windows 2000 Datacenter Server: 32 CPU
……………………………………………….
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ố.
2.1. Những bộ phận cấu thành và cấu trúc khái quát của máy tính.
Giải:
Những bộ phận cấu thành máy tính:
CPU (Central Processing Unit)
Bộ nhớ (Memory)
Đườ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
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.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.
2.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:
Bộ nhớ chính (Main Memory)
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:
2.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.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ến
trì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).
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.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.
3.3. Phân loại và chức năng các dịch vụ của hệ điều hành.
Giải:
• Thực hiện chương trình: HĐH phải biết nạp (Load) chương trình vào
RAM và khởi động nó.
• Thao tác Nhập/Xuất: Làm sạch màn hình, Định dạng đĩa, Tua băng về
đầu,...
• 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.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):
o Chọn ngữ trình: Assembler hay C
o Nên chủ yếu dùng ngôn ngữ cao cấp (ví dụ: C), sau đó những đoạn quan trọng Chuyển dần
sang Assembler.
3.14. Lựa chọn ngôn ngữ lập trình hệ điều hành thế nào là hợp lý hơn cả?
Giải:
o Chọn ngữ trình: Assembler hay C
o Nên chủ yếu dùng ngôn ngữ cao cấp (ví dụ: C), sau đó những đoạn quan trọng Chuyển dần
sang Assembler.
3.15. Các thông tin cần cho Sản sinh hệ thống là những thông tin gì?
Giải:
o 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,...
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:
4.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.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)
Medium-term scheduler
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.8. Tại sao phải tổ chức cộng tác giữa các tiến trình?
Giải:
Chia sẻ thông tin (Information Sharing): Một tiến trình sử dụng thông tin do tiến trinh
khác cung cấp.
Tăng tốc tính toán (Computation Speedup): Các tiến trình cùng làm việc song song trên
1 hoặc nhiều máy để giải quyết bài toán chung.
Đảm bảo tính đơn thể (Modularity): Chương trình được chia thành các đơn thể chức
năng vận hành trong các tiến trình hoặc luồng khác nhau.
Đảm bảo tính tiện dụng (Convenience): Người dùng có nhu cầu làm nhiều việc một lúc:
Soạn thảo, In ấn, Duyệt Web, Lấy file về, Biên dịch chương trình, Kiểm tra chính tả,...
4.9. Phát biểu bài toán Sản xuất-Tiêu thụ và trình bày Thuật giải với Bộ đệm thực thi bằng mảng
xoay vòng.
Giải:
Phá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ần lượ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:
Buffer xoay vòng
i
out
n
PRODUCER CONSUMER
item nextProduced; item nextConsumed;
while (1) while (1)
{ {
while(in==out); //quẩn khi buffer rỗng
while(((in+1)%BUFFER_SIZE)==out); nextConsumed = buffer[out];
//quẩn tại đây khi buffer đầy. out = (out+1)%BUFFER_SIZE;
buffer[in] = nextProduced; }
in = (in+1)%BUFFER_SIZE;
}
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
Đặ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
6.1. Vì sao hệ điều hành phải có chức năng điều phối CPU?
Giải:
Trong 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?
Giải:
1. Công suất CPU (CPU Utilisation): Thực tế đạt từ 40% - 90% thời gian CPU. CPU càng bận
càng tốt.
2. Thông suất hệ thống (Throughput): Số TT hoàn tất trong 1 đơn vị thời gian, ví dụ: 1 TT / giờ,
10 TT / giây.
3. Tổng thời gian làm việc (Turnaround Time): Kể từ khi bắt đầu đến khi kết thúc tiến trình
(Bao gồm tổng thời gian chờ tại Ready Queue, tổng thời gian sử dụng CPU, tổng thời gian
I/O, …).
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.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)
P1 0 5
P2 1 2
P3 2 2
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:
6.12. Giả sử một hệ thống có 5 tiến trình cùng đến vào 1 thời điểm với tính chất sau:
Tiến trình Độ ưu tiên Khoảng CPU (số giây)
P1 3 10
P2 1 1
P3 3 2
P4 4 1
P5 2 5
a) Vẽ 4 biểu đồ Gantt tương ứng với các thuật giải điều phối FCFS, SJFS, PS (không
tiếm quyền) và RRS (với thời lượng = 1).
b) Tính thời gian chờ trung bình của các tiến trình cho mỗi thuật giải.
c) Thuật giải nào tốt nhất về phương diện thời gian chờ trung bình?
Giải:
7.1. Tại sao cần phải đồng bộ hoá công việc các tiến trình?
a. Ví dụ mức vĩ mô.
b. Ví dụ mức vi mô.
Giải:
Mục đích của đồng bộ hoá công việc các tiến trình là đảm bảo Tính nhất quán của tài nguyên
dùng chung và Tránh được hiện tượng Deadlock (Hiện tượng kẹt tiến trình).
7.2. Cấu trúc mã của tiến trình tương tranh.
Giải:
while (1)
{
Remainder section
Entry section
Critical section
Exit section
Remainder section
}
7.3. Định nghĩa đèn hiệu với 2 tác nguyên Wait và Signal.
Giải:
- Đèn hiệu là phương tiện đồng bộ hoá được E.W. Dijkstra đề xuất năm 1965.
- Đèn hiệu được mô tả bằng một biến kiểu nguyên với 2 tác nguyên là Wait (Chờ) và Signal
(Báo hiệu):
typedef int semaphore; // Định nghĩa kiểu Đèn hiệu
wait (semaphore S)
{
while ( S <= 0 ); // Chờ bận nếu S<=0
S --; // Giảm S đi 1
}
signal (semaphore S)
{
S ++; // Tăng S lên 1
}
- Việc kiểm tra S <= 0 và giảm S (trong Wait) hoặc tăng S (trong Signal) phải được thực hiện
trọn vẹn (không xảy ra ngắt trong thời gian thi hành), do đó Wait và Signal được gọi là các tác
nguyên (Atomic Operations).
7.4. Sử dụng Đèn hiệu nhị phân Mutex để đảm bảo tính loại trừ lẫn nhau.
Giải:
typedef int semaphore;
semaphore mutex = 1; // Binary Semaphore
while (1)
{
remainder section
wait (mutex);
critical section
signal (mutex);
remainder section
}
7.7. Phát biểu bài toán Sản Xuất – Tiêu Thụ. Sử dụng đèn hiệu để đồng bộ hoá.
Giải:
Hai quá trình cùng chia sẻ một vùng đệm có kích thước giới hạn n. Biến semaphore mutex
cung cấp sự loại trừ hỗ tương để truy xuất vùng đệm và được khởi tạo với giá trị 1. Các biến
semaphore empty và full đếm số khe trống và đầy tương ứng. Biến semaphore empty được
khởi tạo tới giá trị n; biến semaphore full được khởi tạo tới giá trị 0.
– Dữ liệu chia sẻ:
SEMAPHORE full, empty, mutex;
– Khởi tạo:
full = 0;
empty = BUFFER_SIZE;
mutex = 1;
i
out
n
PRODUCER CONSUMER
while (1) while (1)
{ {
… wait(full)
nextP = new_item(); wait(mutex);
… …
wait(empty); nextC = get_buffer_item(out);
wait(mutex); …
… signal(mutex);
insert_to_buffer(nextP); signal(empty);
… …
signal(mutex); consume_item (nextC);
signal(full); …
} }
7.8. Phát biểu bài toán Dining-Philosophers.
Giải:
Có 5 triết gia ngồi ăn trên một bàn tròn và suy nghĩ
Mỗi người cần 2 chiếc đũa để ăn
Trên bàn chỉ có 5 chiếc đũa xếp xoay vòng và xen kẽ mỗi người.
Người nào cầm đủ hai chiếc đũa sẽ được ăn.
Bài toán này minh hoạ sự khó khăn trong việc phân phối tài nguyên giữa các process sao cho
không xảy ra deadlock và starvation
7.9. Phân tích thuật giải sai bài toán Dining-Philosophers (dẫn đến Deadlock).
Giải:
Dữ liệu chia sẻ:
semaphore chopstick[5];
Khởi đầu các biến đều là: 1.
while (1)
{
wait(chopstick[i])
wait(chopstick[(i+1) % 5 ] )
…
eat
…
signal(chopstick[i]);
signal(chopstick[(i+1) % 5] );
…
think
…
}
Giải pháp trên có thể gây ra deadlock
Khi tất cả triết gia đói bụng cùng lúc và đồng thời cầm một chiếc đũa bên tay trái ⇒
deadlock
Có thể xảy ra trường hợp ách vô hạn định (starvation).
7.10. Phân tích thuật giải đúng bài toán Dining-Philosophers (dùng đèn hiệu).
Giải:
8.2. Trình bày thứ tự sử dụng tài nguyên của tiến trình.
Giải:
Thứ tự sử dụng tài nguyên của tiến trình:
1. Yêu cầu (Request): Nếu không được đáp ứng do bị tiến trình khác giữ => tiến trình
phải chờ.
2. Sử dụng (Use): Sau khi được cấp phát, tiến trình thao tác với tài nguyên (thực hiện
I/O, in ra giấy, ...).
3. Trả lại (Release): Trả tài nguyên cho HĐH quản lý.
8.6. Một hệ thống có 3 loại tài nguyên và 3 tiến trình với trạng thái cấp phát như sau:
Loại tài nguyên Số phiên Được các tiến trình Đã cấp cho các
bản yêu cầu tiến trình
Máy in kim 2 P1 P2, P3
Máy in laser 1 P3
Ổ băng từ 2 P2 P1, P3
Hãy thể hiện trạng thái này bằng Đồ thị cấp phát tài nguyên.
Giải:
8.7. Trình bày các phương thức xử trí Deadlock.
Giải:
- Sử dụng quy tắc Ngăn chặn (Prevention) hoặc Tránh (Avoidance) để Deadlock không bao giờ
xảy ra.
- Cho phép hệ thống bị Deadlock, sau đó Xác định (Detection) và tìm cách Khắc phục
(Recover).
- Không xét vấn đề Deadlock, coi như không bao giờ xảy ra, còn nếu xảy ra thì Khởi động lại
hệ thống (Cách này có thể có ý nghĩa thực tế vì không cần đưa vào HĐH các phương tiện xử
trí thường trực).
8.10. Thuật giải tránh Deadlock cho trường hợp mỗi loại tài nguyên chỉ có 1 phiên bản.
Giải:
- Trên RAG, lúc đầu tất cả nhu cầu về tài nguyên của tiến trình phải được khai báo trước bằng
các Cung Nhu cầu (Claim edge) Pi · · ·> Rj chỉ báo rằng Pi có thể sẽ yêu cầu Rj
- Cung Nhu cầu Pi · · ·> Rj được chuyển thành Cung Yêu cầu (Request edge) Pi → Rj khi Pi
thực sự bắt đầu cần đến Rj .
- Nếu yêu cầu Pi → Rj được HĐH đáp ứng, cung Pi → Rj chuyển thành Cung Ấn định
(Assignment edge) Pi ← Rj nối phiên bản duy nhất của Rj với Pi .
- Khi HĐH xét yêu cầu Pi → Rj. Hệ chỉ cấp phát Rj cho Pi nếu Cung Ấn định Pi ← Rj không tạo
ra vòng tròn đồng hướng trong RAG (xét cả các Cung Nhu cầu).
- Thuật giải có độ phức tạp o(n²) với n là số tiến trình trong hệ.
8.13. Một hệ thống có 5 tiến trình với tình trạng tài nguyên như sau:
Allocation Max Available
Process A B C D A B C D A B C D
P0 0 0 1 2 0 0 1 2 1 5 2 0
P1 1 0 0 0 1 7 5 0
P2 1 3 5 4 2 3 5 6
P3 0 6 3 2 0 6 5 2
P4 0 0 1 4 0 6 5 6
Dùng Thuật giải Nhà băng để xác định:
a. Nội dung của ma trận Need.
b. Trạng thái này có an toàn không?
c. Nếu P1 nêu yêu cầu (0, 4, 2, 0), có thể đáp ứng ngay được không?
Giải:
a. Xét tại thời điểm T0 mà 5 tiến trình được cấp phát như đề bài ta có:
Need[i] = Max[i] – Allocation[i]
Need
Process A B C D
P0 0 0 0 0
P1 0 7 5 0
P2 1 0 0 2
P3 0 0 2 0
P4 0 6 4 2
b. Tìm chuỗi an toàn:
Work >= Need[i] P[i] Allocation[i]
A B C D ABCD ABCD
1 5 2 0 0 0 0 0 P0 0 0 1 2
1 5 3 2 1 0 0 2 P2 1 3 5 4
2 8 8 6 0 0 2 0 P3 0 6 3 2
2 14 11 8 0 6 4 2 P4 0 0 1 4
2 14 12 12 0 7 5 0 P1 1 0 0 0
Vậy tại thời điểm T0 tồn tại chuỗi an toàn {P0, P2, P3, P4, P1}. Suy ra, hệ thống tại thời điểm T0 ở
trạng thái an toàn.
c. Ta thấy, yêu cầu thêm (0, 4, 2, 0) của P1 thoả điều kiện Request1 ≤ Need1, và thoả điều kiện:
Request1 ≤ Available. Giả sử ta cấp phát theo yêu cầu của P1 thì vẫn tồn tại chuỗi an toàn. Do
vậy, ta hoàn toàn có thể cấp phát thêm (0, 4, 2, 0) cho P1 được.
8.14. Một hệ thống có 3 tiến trình và 3 loại tài nguyên với bảng cấp phát tài nguyên như sau:
Loại tài Được các tiến trình yêu Đã cấp cho các tiến
Số phiên bản
nguyên cầu trình
R1 1 P1 P2
R2 2 P3 P1, P2
R3 1 P2 P3
Có Deadlock hay không? Vì sao?
Giải:
Giải thích: RAG cho trên bi deadlock là do tồn tại các chu trình.
9.1. Địa chỉ Lô-gic và Địa chỉ Vật lý khác nhau thế nào?
Giải:
- Địa chỉ vật lý (physical address) (địa chỉ thực, địa chỉ tuyệt đối) là một vị trí thực trong bộ nhớ
chính.
- Địa chỉ luận lý (logical address) là tham chiếu đến một vị trí nhớ độc lập với cấu trúc, tổ chức
vật lý của bộ nhớ. Ví dụ: các trình biên dịch (compiler) tạo ra mã lệnh chương trình mà trong đó
mọi tham chiếu bộ nhớ đều là địa chỉ luận lý
- Ngoài ra còn có địa chỉ tương đối (relative address) là một kiểu địa chỉ luận lý trong đó các địa
chỉ được biểu diễn như là vị trí tương đối so với một điểm xác định nào đó trong chương trình
(ví dụ: điểm bắt đầu chương trình,...)
- Khi một lệnh được thực thi, các tham chiếu đến địa chỉ luận lý phải được chuyển đổi thành địa
chỉ thực. Thao tác chuyển đổi này thường có sự hỗ trợ của phần cứng để đạt hiệu suất cao.
9.2. Sơ đồ tái định vị động trong bộ nhớ.
Giải:
9.3. Quản lý bộ nhớ thực: Dạng đa chương với kích thước đoạn cố định.
Giải:
9.4. Quản lý bộ nhớ thực: Dạng đa chương với kích thước đoạn thay đổi.
Giải:
9.5. Giải thích sự khác biệt giữa Phân mảnh Trong với Phân mảnh Ngoài.
Giải:
- Phân mảnh ngoại (external fragmentation)
Kích thước không gian bộ nhớ còn trống đủ để thỏa mãn một yêu cầu cấp phát, tuy
nhiên không gian nhớ này không liên tục.
- Phân mảnh nội (internal fragmentation)
Kích thước vùng nhớ được cấp phát có thể hơi lớn hơn vùng nhớ yêu cầu. Ví dụ: cấp
một khoảng trống 18,464 bytes cho một process yêu cầu 18,462 bytes
Hiện tượng phân mảnh nội thường xảy ra khi bộ nhớ thực (physical memory) được chia
thành các khối kích thước cố định(fixed-sized block) và các process được cấp phát theo đơn vị
khối. Ví dụ: cơ chế phân trang (paging)
9.8. Giả sử Vùng địa chỉ Lô-gic 8 trang (mỗi trang có 1024 byte) được ánh xạ vào Vùng địa chỉ
Vật lý 32 khung trang.
a. Mỗi địa chỉ lô-gic chiếm bao nhiêu bit?
b. Mỗi địa chỉ vật lý chiếm bao nhiêu bit?
Giải:
a. Ta có:
page number page offset
p d
m-n bits n bits
(định vị từ 0 ÷ 2m-n -1) (định vị từ 0 ÷ 2n-1)
Vùng địa chỉ logic có 8 trang và mỗi trang có 1024 bytes, nên n = 10 và m = 13. Vậy mỗi địa
chỉ logic chiếm 13 bits.
b. Tương tự vậy đối với địa chỉ vật lý ta có: n = 10 và l = 15 (Vì số frame number là 32 = 25 =
215-10). Do vậy, mỗi địa chỉ vật lý chiếm 15 bits.
10.1. Tổ chức thứ bậc của thư mục và quy tắc đặt tên đường dẫn.
Giải:
Tên đường dẫn:
UNIX/Linux: /B/B1/B11
Windows: C:\B\B1\B11
10.2. Phương thức kết (Link) một tập tin với thư mục khác để đảm bảo tập tin hiện diện trong
nhiều thư mục một lúc.
a. Trong UNIX.
b. Trong Windows.
Giải:
Tập tin liên kết tắt trong UNIX/Linux:
1. Liên kết tắt mềm (Soft Link, Symbolic Link)
- Như tập tin .LNK trong Windows.
- Lệnh tạo lập:
$ ln -s /bin mybin
$ ls -l mybin
lrwxrwxrwx 1 mk books 9 May 23 16:14 mybin->/bin
$ ln -s /bin/calculator.exe /programs/calc
$ /programs/calc
2. Liên kết tắt cứng (Hard Link)
- Không có khái niệm tương đương trong Win 9X.
- Lệnh tạo lập:
$ cat >testfile
Cong Hoa Xa Hoi Chu Nghia Viet Nam
Doc lap - Tu do - Hanh phuc
^[
$ ls -l test*
-rw-rw-r-- 1 mk books 50 May 13 18:30 testfile
$ ln testfile test1
$ ls -l test*
-rw-rw-r-- 2 mk books 50 May 13 20:41 test1
-rw-rw-r-- 2 mk books 50 May 13 18:30 testfile
$ ln testfile test2 hoặc ln test1 test2
$ ls -l test*
-rw-rw-r-- 3 mk books 50 May 13 20:41 test1
-rw-rw-r-- 3 mk books 50 May 13 20:46 test2
-rw-rw-r-- 3 mk books 50 May 13 18:30 testfile
$ rm testfile test1
$ ls -l test*
-rw-rw-r-- 1 mk books 50 May 13 20:46 test2
$ cat test2
Cong Hoa Xa Hoi Chu Nghia Viet Nam
Doc lap - Tu do - Hanh phuc
10.5. Giả sử một Partition trên đĩa cứng được cài Hệ tập tin FAT. Hãy thể hiện cấu trúc của
Partition đó bằng hình vẽ.
Giải:
10.6. Cấu trúc Directory Entry thay đổi thế nào khi chuyển từ FAT16 sang FAT32?
Giải:
10.7. Windows cho phép tên tập tin/thư mục dài đến 256 ký tự, ngoài ra hỗ trợ UNICODE. Khi đó,
cấu trúc Directory Entry phải ra sao?
Giải:
Ví dụ:
10.8. Trong một hệ tập tin FAT16, tập tin Vanban.doc có nội dung trải trên các liên cung (Cluster)
5, 3, 2. Hãy minh hoạ cấu trúc Đầu mục (Directory Entry) của tập tin này cùng nội dung
bảng FAT.
Giải:
10.10. Trình bày 5 loại ổ đĩa NTFS được Windows 2000/XP/2003 hỗ trợ.
Giải:
- Simple Volume: Ổ đơn dựa trên 1 vùng nhớ của Dynamic Disk (phân biệt với Basic Disk).
Một đĩa cứng có thể phân hoạch thành nhiều ổ đơn.
- Spanned Volume: Ổ ghép trải trên nhiều ổ đơn.
- Striped Volume: Ổ song song. Nội dung mỗi tập tin rải trên nhiều ổ đơn. Còn gọi là RAID-0.
- Mirrored Volume: Ổ ánh xạ gương. Bao gồm 1 ổ đơn được ánh xạ tự động sang 1 ổ đơn khác.
Còn gọi là RAID-1.
- RAID-5 Volume (Redundant Array of Inexpensive Disks): Trải trên 3 hoặc hơn 3 ổ đĩa đơn.
Dữ liệu được rải trên các ổ đĩa thành phần cùng với thông tin chẵn lẻ (parity) để đảm bảo khả
năng kháng lỗi (fault tolerance) mà Striped Volume không làm được.