Giáo trình Hệ điều hành - Từ Minh Phương
MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU CHUNG . 8
1.1. CÁC THÀNH PHẦN CỦA HỆ THỐNG MÁY TÍNH . 8
1.2. TỔ CHỨC PHẦN CỨNG CỦA MÁY TÍNH . 9
1.3. KHÁI NIỆM HỆ ĐIỀU HÀNH . 12
1.4. CÁC DỊCH VỤ DO HỆ ĐIỀU HÀNH CUNG CẤP . 15
1.5. GIAO DIỆN LẬP TRÌNH CỦA HỆ ĐIỀU HÀNH . 17
1.6. QUÁ TRÌNH PHÁT TRIỂN VÀ MỘT SỐ KHÁI NIỆM QUAN TRỌNG . 19
1.7. CẤU TRÚC HỆ ĐIỀU HÀNH . 24
1.7.1. Các thành phần của hệ điều hành . 24
1.7.2. Nhân của hệ điều hành . 28
1.7.3. Một số kiểu cấu trúc hệ điều hành . 29
1.8. MỘT SỐ HỆ ĐIỀU HÀNH CỤ THỂ . 34
1.9. CÂU HỎI VÀ BÀI TẬP CHƯƠNG . 37
CHƯƠNG 2: QUẢN LÝ TIẾN TRÌNH . 39
2.1. CÁC KHÁI NIỆM LIÊN QUAN ĐẾN TIẾN TRÌNH . 39
2.1.1. Tiến trình là gì . 39
2.1.2. Trạng thái của tiến trình. 40
2.1.3. Thông tin mô tả tiến trình . 42
2.1.4. Bảng và danh sách tiến trình . 43
2.1.5. Các thao tác với tiến trình . 44
2.2. LUỒNG . 47
2.2.1. Luồng thực hiện là gì . 47
2.2.2. Ví dụ đa luồng trên hệ thống cụ thể . 48
2.2.3. Tài nguyên của tiến trình và luồng . 52
2.2.4. Ưu điểm của mô hình đa luồng . 53
2.2.5. Luồng mức người dùng và luồng mức nhân . 53
2.3. ĐIỀU ĐỘ TIẾN TRÌNH . 56
2.3.1. Khái niệm điều độ . 56
2.3.2. Các dạng điều độ . 56
2.3.3. Các tiêu chí điều độ . 58
2.3.4. Các thuật toán đi ều độ . 59
2.3.5. Điều độ trên hệ thống cụ thể . 64
2.4. ĐỒNG BỘ HÓA TIẾN TRÌNH ĐỒNG THỜI . 66
2.4.1. Các vấn đề đối với tiến trình đồng thời . 66
2.4.2. Yêu cầu với giải pháp cho đoạn nguy hiểm . 68
2.4.3. Giải thuật Peterson . 69
2.4.4. Giải pháp phần cứng . 70
2.4.5. Cờ hiệu (semaphore) . 72
2.4.6. Một số bài toán đồng bộ . 74
2.4.7. Monitor . 77
2.4.8. Bế tắc . 80
2.5. CÂU HỎI VÀ BÀI TẬP CHƯƠNG . 88
CHƯƠNG 3: QUẢN LÝ BỘ NHỚ . 91
3.1. ĐỊA CHỈ VÀ CÁC VẤN ĐỀ LIÊN QUAN . 91
3.1.1. Vấn đề gán địa chỉ . 91
3.1.2. Địa chỉ lô gic và địa chỉ vật lý . 93
3.2. MỘT SỐ CÁCH TỔ CHỨC CHƯƠNG TRÌNH . 93
3.2.1. Tải trong quá trình thực hiện . 93
3.2.2. Liên kết động và thư viện dùng chung . 94
3.3. PHÂN CHƯƠNG BỘ NHỚ . 95
3.3.1. Phân chương cố định . 96
3.3.2. Phân chương động . 98
3.3.3. Phương pháp kề cận . 100
3.3.4. Ánh xạ địa chỉ và chống truy cập bộ nhớ trái phép . 101
3.3.5. Trao đổi giữa bộ nhớ và đĩa (swapping) . 102
3.4. PHÂN TRANG BỘ NHỚ . 103
3.4.1. Khái niệm phân trang bộ nhớ . 103
3.4.2. Ánh xạ địa chỉ . 104
3.4.3. Tổ chức bảng phân trang . 107
3.5. PHÂN ĐOẠN BỘ NHỚ . 112
3.5.1 Khái niệm. 112
3.5.2. Ánh xạ địa chỉ và chống truy cập trái phép . 112
3.5.3. Kết hợp phân đoạn với phân trang . 114
3.6. BỘ NHỚ ẢO . 114
3.6.1. Khái niệm bộ nhớ ảo . 114
3.6.2. Nạp trang theo nhu cầu . 115
3.7. ĐỔI TRANG . 118
3.7.1. Tại sao phải đổi trang . 118
3.7.2. Các chiến lược đổi trang . 119
3.8. CẤP PHÁT KHUNG TRANG . 125
3.8.1. Giới hạn số lượng khung . 125
3.8.2. Phạm vi cấp phát khung. 126
3.9. TÌNH TRẠNG TRÌ TRỆ . 126
3.10. QUẢN LÝ BỘ NHỚ TRONG INTEL PENTIUM . 127
3.11. QUẢN LÝ BỘ NHỚ TRONG WINDOWS 32 bit . 130
3.12. CÂU HỎI VÀ BÀI TẬP CHƯƠNG . 131
CHƯƠNG 4: HỆ THỐNG FILE . 133
4.1. KHÁI NIỆM FILE . 133
4.1.1. File là gì ? . 133
4.1.2. Thuộc tính của file. 134
4.1.3. Cấu trúc file . 136
4.2. CÁC PHƯƠNG PHÁP TRUY CẬP FILE . 137
4.2.1. Truy cập tuần tự . 137
4.2.2. Truy cập trực tiếp . 137
4.2.3. Truy cập dựa trên chỉ số . 138
4.3. CÁC THAO TÁC VỚI FILE . 139
4.4. THƯ MỤC . 141
4.4.1. Khái niệm thư mục . 141
4.4.2. Các thao tác với thư mục . 142
4.4.3. Cấu trúc hệ thống thư mục . 143
4.4.4. Tên đường dẫn . 147
4.5. CẤP PHÁT KHÔNG GIAN CHO FILE . 148
4.5.1. Cấp phát các khối liên tiếp . 148
4.5.2. Sử dụng danh sách kết nối . 150
4.5.3. Sử dụng danh sách kết nối trên bảng chỉ số . 151
4.5.4. Sử dụng khối chỉ số . 152
4.6. QUẢN LÝ KHÔNG GIAN TRÊN ĐĨA . 153
4.6.1. Kích thước khối . 153
4.6.2. Quản lý các khối trống . 154
4.7. TỔ CHỨC BÊN TRONG CỦA THƯ MỤC . 156
4.7.1. Danh sách. 156
4.7.2. Cây nhị phân . 156
4.7.3. Bảng băm . 156
4.7.4. Tổ chức thư mục của DOS (FAT) . 157
4.7.5. Thư mục của Linux . 157
4.8. ĐỘ TIN CẬY CỦA HỆ THỐNG FILE . 158
4.8.1. Phát hiện và loại trừ các khối hỏng . 158
4.8.2. Sao dự phòng . 159
4.9. BẢO MẬT CHO HỆ THỐNG FILE . 161
4.9.1. Sử dụng mật khẩu . 161
4.9.2. Danh sách quản lý truy cập . 162
4.10. HỆ THỐNG FILE FAT . 163
4.10.1. Đĩa lôgic. 164
4.10.2. Boot sector . 165
4.10.3. Bảng FAT . 167
4.10.4. Thư mục gốc . 168
4.11. TỔ CHỨC THÔNG TIN TRÊN BỘ NHỚ THỨ CẤP . 169
4.11.1. Tổ chức đĩa cứng . 169
4.11.2. Điều độ đĩa . 172
4.12. QUẢN LÝ VÀO/RA . 176
4.12.1. Phần cứng . 176
4.12.2. Tổ chức phân hệ quản lý vào/ra . 177
4.12.3. Quản lý vào/ra mức trên . 179
4.13. CÂU HỎI VÀ BÀI TẬP CHƯƠNG . 181
TÀI LIỆU THAM KHẢO . 183
ết bị cho phép truy cập trực tiếp. - Nhóm vào/ra theo chuỗi ký tự, bao gồm driver chuột, bàn phím hoặc thiết bị tương tự. - Nhóm driver mạng. Ví dụ điển hình của giao diện với driver cho thiết bị mạng là giao diện dưới dạng socket. Giao diện dạng này gồm các hàm cho phép một ứng dụng tạo ra socket – có thể hiểu là điểm kết nối với ứng dụng ở xa – tới một địa chỉ nào đó. Sau đó socket sẽ lắng nghe cho tới khi ứng dụng ở xa kết nối vào socket. Tiếp theo, giao diện cung cấp các hàm cho phép gửi và nhận dữ liệu với ứng dụng ở xa thông quan socket được tạo. P h ần m ềm Phần còn lại của hệ điều hành Phân hệ quản lý vào/ra Driver thiết bị Driver thiết bị … Driver thiết bị Driver thiết bị P h ần c ứ n g Bộ điều khiển thiết bị Bộ điều khiển thiết bị … Bộ điều khiển thiết bị Bộ điều khiển thiết bị Thiết bị Thiết bị … Thiết bị Thiết bị Hình 4.25: Cấu trúc phân hệ vào/ra P T I T Hệ thống file 179 Các thao tác do driver thiết bị thực hiện Driver thiết bị chịu trách nhiệm thực hiện các công việc sau: - Khởi tạo thiết bị. - Giải mã các lệnh (lời gọi hệ thống) từ hệ điều hành. - Quản lý việc truyền dữ liệu vào/ra thiết bị. - Nhận và xử lý ngắt liên quan tới thiết bị. - Đảm bảo tính nhất quán giữa các cấu trúc dữ liệu do driver và các mô đun khác của hệ điều hành sử dụng. Các bước xử lý yêu cầu vào/ra do driver thực hiện. Quy trình xử lý yêu cầu vào/ra của driver có thể tóm tắt một cách đơn giản với các thao tác sau: - Kiểm tra tính hợp lệ của tham số trong yêu cầu vào/ra và dịch yêu cầu vào ra sang ngôn ngữ phù hợp với thiết bị. - Kiểm tra xem thiết bị có rỗi không. Nếu thiết bị bận, tiến trình đưa yêu cầu xử lý có thể bị phong tỏa để chờ cho tới khi thiết bị hết bận. - Sinh các lệnh điều khiển thiết bị: ghi vào thanh ghi tương ứng của bộ điều khiển thiết bị, kiểm tra độ sẵn sàng của thiết bị sau mỗi lệnh. - Phong tỏa và chờ đến khi bộ điều khiển thiết bị thực hiện xong lệnh. - Kiểm tra lỗi. - Trả về thông tin trạng thái và kết thúc việc xử lý. 4.12.3. Quản lý vào/ra mức trên Trong phần trên, ta đã xem xét tổ chức chung phân hệ vào/ra và vai trò của driver. Trong phần này, ta sẽ xem xét một số chức năng khác của phân hệ vào/ra, thường do lớp trên của mô đun vào/ra đảm nhiệm. Các chức năng này hướng vào việc nâng cao tốc độ và độ ổn định vào/ra thông tin, bao gồm các công việc sau: điều độ vào/ra, đệm vào/ra với buffer và cache, xử lý lỗi. Điều độ vào/ra là xác định thứ tự xử lý các yêu cầu vào/ra sao cho đạt được các tiêu chí về tốc độ, tính công bằng .v.v. Ví dụ về điều độ vào/ra đã được trình bầy trong phần điều độ đĩa. Trong phần này ta sẽ xem xét đệm vào/ra và xử lý lỗi. Đệm nhớ buffer Đệm nhớ buffer là kỹ thuật trong đó dữ liệu truyền giữa hai thiết bị hoặc giữa một thiết bị với một ứng dụng được ghi tạm thời vào một vùng bộ nhớ gọi là bộ đệm buffer. Thường dữ liệu được lưu vào buffer khi mới đọc vào từ thiết bị (ví dụ từ bàn phím), hoặc được giữ trong buffer trước khi ghi ra thiết bị (ví dụ trước khi ghi ra đĩa). Buffer cũng được sử dụng khi truyền dữ liệu giữa hai tiến trình. P T I T Hệ thống file 180 Đệm nhớ buffer được sử dụng để giải quyết một số vấn đề sau: - Sự khác nhau về tốc độ giữa thiết bị truyền và nhận dữ liệu. Ví dụ, khi cần lưu dữ liệu truyền qua modem vào đĩa cứng. Do modem chậm hơn đĩa nên dữ liệu từ modem được lưu tạm vào đệm nhớ cho tới khi đủ nhiều mới được ghi cùng nhau ra đĩa. Thông thường sẽ có hai đệm nhớ buffer được sử dụng trong trường hợp này. Khi đệm nhớ thứ nhất đầy, dữ liệu được ghi ra đĩa, trong khi đó dữ liệu nhận được từ modem tiếp tục được lưu vào đệm nhớ thứ hai. Khi đệm nhớ thứ hai đầy, vai trò hai đệm nhớ lại thay đổi. Cơ chế đệm kép như vậy được minh họa trên hình 4.26. Hình 4.26. Vẽ hình tương tự thế này - Vấn đề khác nhau về kích thước dữ liệu truyền và nhận. Khi truyền dữ liệu qua mạng, dữ liệu được chia thành gói. Sau đó các gói sẽ được tập hợp và sắp xếp lại theo đúng thứ tự. Trong lúc chờ đợi để nhận đủ các gói cần cho việc sắp xếp lại, dữ liệu được lưu trong bộ đệm buffer. Đệm nhớ cache Đệm nhớ cache là phần bộ nhớ tốc độ cao dùng làm bộ nhớ trung gian khi truyền dữ liệu giữa thiết bị nhớ tốc độ thấp với thiết bị nhớ tốc độ cao. Trước tiên, dữ liệu được truyền từ bộ nhớ tốc độ thấp (ví dụ đĩa cứng) vào bộ nhớ cache, sau đó được chuyển từ cache vào bộ nhớ tốc độ cao (ví dụ bộ nhớ trong). Khi thực hiện thao tác đọc tiếp theo, nếu phần dữ liệu cần đọc nằm trong cache thì dữ liệu đó được đọc từ cache, thay vì đọc từ đĩa, và do vậy sẽ nhanh hơn nhiều. Do nguyên lý cục bộ về thời gian, tức là thường một dữ liệu được truy cập lại trong tương lai gần, hoặc dữ liệu nằm gần nhau thường được truy cập trong những khoảng thời gian liền nhau, sử dụng cache cho phép tăng tốc độ truy cập dữ liệu. Như vậy, điểm khác biệt chính giữa bộ đệm cache với bộ đệm buffer là cùng một dữ liệu trong cache hoặc láng giềng của dữ liệu đó được truy cập nhiều lần trong khoảng thời Đĩa cứng Modem Đĩa cứng Modem Buffer 1 Buffer 2 Buffer 1 Buffer 2 Đổi buffer P T I T Hệ thống file 181 gian ngắn, trong khi dữ liệu trong buffer không như vậy. Tuy nhiên, trên thực tế, bộ đệm buffer cũng có thể dùng luôn làm bộ đệm cache. Spooling Spooling là kỹ thuật cho phép nhiều tiến trình cùng ghi thông tin ra những thiết bị chỉ có khả năng phục vụ một tiến trình tại một thời điểm như máy in. Khi tiến trình gửi dữ liệu ra máy in, hệ điều hành sẽ nhận dữ liệu này thay vì gửi trực tiếp ra máy in. Dữ liệu từ mỗi tiến trình được ghi vào một đệm nhớ buffer riêng, thường là một file. Khi tiến trình đã hoàn thành việc ghi dữ liệu ra file, file sẽ được xếp vào hàng đợi để chuyển ra máy in khi đến lượt. Như vậy, nhiều tiến trình có thể đồng thời thực hiện thao tác in, trong khi trên thực tế, tại mỗi thời điểm chỉ một file đệm được ghi ra máy in. Xử lý lỗi Thiết bị vào/ra, cũng như bản thân thao tác vào/ra dữ liệu có thể gặp nhiều dạng lỗi khác nhau. Có những lỗi không nghiêm trọng, có thể dễ dàng khắc phục, ví dụ lỗi không đọc được dữ liệu do đĩa cứng chưa quay đủ tốc độ cần thiết, hay lỗi do mạng bị quá tải nên tạm thời không truyền được dữ liệu. Có những lỗi nghiêm trọng hơn, ví dụ lỗi hỏng bộ điều khiển đĩa. Hệ điều hành thường được thiết kế để tự xử lý một số lỗi đơn giản. Ví dụ, khi thao tác đọc đĩa bị lỗi, hệ điều hành sẽ lặp lại thao tác đọc một số lần nhất định để chờ đĩa được chuyển sang trạng thái sẵn sàng. Với những lỗi nghiêm trọng hơn, hệ điều hành thường không thể tự xử lý. Cách giải quyết thông thường là với mỗi thao tác vào/ra, hệ điều hành trả về thông tin trạng thái. Thông tin này cho biết thao tác vào/ra có được thực hiện thành công hay không và một số thông tin cụ thể về dạng lỗi xẩy ra (nếu có). Các ứng dụng sẽ tự quyết định phải làm gì, dựa trên những thông tin về lỗi do lời gọi hệ thống trả lại. 4.13. CÂU HỎI VÀ BÀI TẬP CHƯƠNG 1. Hệ điều hành có nên nhận biết và hỗ trợ các kiểu file khác nhau không, ví dụ file văn bản, file chương trình, file cơ sở dữ liệu .v.v.? Trong câu trả lời hãy phân tích ưu nhược điểm của việc hỗ trợ và không hỗ trợ kiểu file. Lấy ví dụ việc hỗ trợ/không hỗ trợ kiểu file trên một hệ điều hành thông dụng. 2. Giải thích ý nghĩa thao tác mở file và đóng file. 3. Hãy lấy ví dụ một vài ứng dụng đòi hỏi truy cập file theo phương pháp truy cập: 1) tuần tự; 2) trực tiếp. 4. Giả sử hợp hệ thống chỉ hỗ trợ thư mục một mức nhưng cho phép sử dụng tên file dài tùy ý. Có thể mô phỏng thư mục nhiều mức trong trường hợp này không? Hãy giải thích cách làm nếu câu trả lời là “có” hoặc giải thích nguyên nhân không mô phỏng được nếu câu trả lời là “không”. P T I T Hệ thống file 182 5. Thay vì sử dụng ACL (Access Control List – danh sách quản lý truy cập) gắn với mỗi file có thể sử dụng UCL (User Control List – danh sách quản lý người dùng) gắn với mỗi người dùng và quy định người đó được truy cập file nào. Hãy cho biết trong trường nào dùng UCL ưu điểm hơn so với dùng ACL ? 6. Giả sử hệ thống file hỗ trợ cả ba phương pháp cấp phát không gian: cấp phát khối liên tiếp, sử dụng danh sách kết nối, và sử dụng khối chỉ số. Cần xem xét các tiêu chí nào khi lựa chọn phương pháp cấp phát cho một file cụ thể. 7. Viết chương trình đọc và in các tham số chính trong BOOT từ đĩa logic trên thẻ nhớ USB với FAT16 sử dụng hàm đọc sector mức thấp absread. Lưu ý: để chạy được absread, cần sử dụng các hệ điều hành không phân biệt chế độ đặc quyền và chế độ người dùng như Windows 98; có thể cài Windows 98 trên máy ảo để thực hiện bài tập này. 8. Giải thích các bước và viết chương trình đọc và in nội dung 100 ô đầu tiên của bảng FAT trên USB, biết rằng FAT là FAT16. Chương trình cần sử dụng hàm đọc ghi sector mức thấp absread như ở câu trên. 9. Giải thích các bước và viết chương trình in ra tên, phần mở rộng, ngày tháng tạo file, kích thước file, số thứ tự cluster đầu tiên của các file nằm trong thư mục gốc trên USB. Giả sử tất cả tên file là tên file ngắn (không quá 8 ký tự), FAT là FAT 16. Chương trình cần sử dụng hàm đọc ghi sector mức thấp absread như ở câu trên. P T I T Hệ thống file 183 TÀI LIỆU THAM KHẢO 1. A. Silbeschatz, P.B. Galvin, G. Gagne. Operating system concepts. 9 th edition. John Wiley & Sons. 2013. 2. W. Stallings. Operating Systems: Internals and Design Principles. 7 th edition. Prentice Hall 2012. 3. A.S. Tanenbaum. Modern operating systems. 3rd edition. Prentice Hall 2008. 4. Nguyễn Thanh Tùng. Giáo trình Hệ điều hành. ĐHBK Hà nội 1999. 5. Hà Quang Thụy. Giáo trình Nguyên lý các hệ điều hành. In lần thứ ba. NXB KHKT 2009. 6. C. Crowley. Operating systems: A design-oriented approach. Irwin Professional Publishing 1996. 7. Từ Minh Phương. Bài giảng hệ điều hành. Học viện Công nghệ bưu chính viễn thông 2009. P T I T
File đính kèm:
- Giáo trình Hệ điều hành - Từ Minh Phương.pdf