Giáo trình Lý thuyết hệ điều hành - Nguyễn Kim Tuấn
MỤC LỤC
Trang
Chương I: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH
I.1. Chức năng và lịch sử phát triển của hệ điều hành 1
I.1.1. Chức năng của hệ điều hành 1
I.1.2. Lịch sử phát triển của hệ điều hành 3
I.2. Một số khái niệm của hệ điều hành 5
I.2.1. Tiến trình (Process) và tiểu trình (Thread) 5
I.2.2. Bộ xử lý lệnh (Shell) 5
I.2.3. Sự phân lớp hệ thống (System Layering) 6
I.2.4. Tài nguyên hệ thống (System Resources) 7
I.2.5. Lời gọi hệ thống (System Calls) 7
I.3. Hệ điều hành và phân loại hệ điều hành 8
I.3.1. Hệ điều hành là gì? 8
I.3.2. Phân loại hệ điều hành 9
I.4. Thành phần và cấu trúc của hệ điều hành 12
I.4.1. Các thành phần của hệ điều hành 12
I.4.2. Các cấu trúc của hệ điều hành 16
I.5. Hệ điều hành Windows95 21
I.5.1. Giới thiệu về hệ điều hành Windows95 22
I.5.2. Cấu trúc của windows95 24
I.5.3. Bộ nhớ ảo trong windows95 25
I.6. Hệ điều hành Windows 2000 26
I.6.1. Giới thiệu về hệ điều hành Windows 2000 26
I.6.2. Một số đặc tính của Windows 2000 27
I.6.3. Một số khái niệm trong Windows 2000 28
I.6.4. Kiến trúc của Windows 2000 31
I.7. Hệ điều hành Linux 37
Chương II: QUẢN LÝ TIẾN TRÌNH
II.1. Tổng quan về tiến trình 41
I.1.1. Tiến trình và các loại tiến trình 41
I.1.2. Mô hình tiến trình 42
I.1.3. Tiểu trình và tiến trình 45
I.1.4. Các trạng thái tiến trình 46
I.1.5. Cấu trúc dữ liệu của khối quản lý tiến trình 50
I.1.6. Các thao tác điều khiển tiến trình 52
II.2. Tài nguyên găng và đoạn găng 53
II.2.1. Tài nguyên găng (Critical Resource) 53
II.2.2. Đoạn găng (Critical Section) 57
II.2.3. Yêu cầu của công tác điều độ qua đoạn găng 59
II.3. Điều độ tiến trình qua đoạn găng 60
II.3.1. Các giải pháp phần cứng 60
II.3.2. Các giải pháp dùng biến khoá 62
II.3.3. Các giải pháp được hỗ trợ bởi hệ điều hành và ngôn ngữ lập trình 63
II.3.4. Hai bài toán điều phối làm ví dụ 72
II.4. Tắc nghẽn (Deadlock) và chống tắc nghẽn 79
II.4.1. Tắc nghẽn 79
II.4.2. Điều kiện hình thành tắt nghẽn 81
II.4.3. Ngăn chặn tắc nghẽn (Deadlock Prevention) 81
II.4.4. Nhận biết tắc nghẽn (Deadlock Detection) 81
II.5. Điều phối tiến trình
II.5.1. Mục tiêu điều phối 83
II.5.2. Tổ chức điều phối 86
II.5.3. Các chiến lược điều phối 87
II.6. Tiến trình trong Windows NT 89
Chương III: QUẢN LÝ BỘ NHỚ
III.1. Nhiệm vụ của quản lý bộ nhớ 93
III.2. Kỹ thuật cấp phát bộ nhớ (nạp chương trình vào bộ nhớ chính) 95
III.2.1. Kỹ thuật phân vùng cố định (Fixed Partitioning) 95
III.2.2. Kỹ thuật phân vùng động (Dynamic Partitioning) 97
III.2.3. Kỹ thuật phân trang đơn (Simple Paging) 103
III.2.4. Kỹ thuật phân đoạn đơn (Simple Segmentation) .106
III.3. Kỹ thuật bộ nhớ ảo (Virtual Memory) 109
III.3.1. Bộ nhớ ảo 109
III.3.2. Kỹ thuật bộ nhớ ảo 112
III.4. Quản lý bộ nhớ RAM của DOS 126
III.5.a. Program Segment Prefix (PSP) 126
III.5.b. Chương trình COM và EXE
III.5.c. Memory Control Block (MCB)
III.5. Sự phân trang/đoạn trong hệ điều hành Windown NT 130
III.5.a. Segmentation 130
III.5.b. Paging 132
III.6. Các thuật toán thay trang 133
III.7. Cấp phát khung trang 136
III.8. Một số vấn đề về quản lý bộ nhớ của Windows 2000 137
III.8.1. Nhiệm vụ quản lý bộ nhớ của Windows 2000 137
III.8.2. Các dịch vụ trình quản lý bộ nhớ cung cấp 138
III.8.3. Address Space Layout 141
III.8.4. Chuyển đổi địa chỉ 142
Chương IV: QUẢN LÝ FILE và Đ ĨA
IV.1. Tổng quan về quản lý tập tin và đĩa 148
1. Tập tin và hệ thống quản lý tập tin 148
2. Bảng danh mục và tập tin chia sẻ 151
3. Quản lý không gian đĩa 153
4. Quản lý các block chứa file trên đĩa 155
5. An toàn trong quản lý tập tin 158
6. Hiệu suất hệ thống file 162
IV.2. Các điều khiển hệ thống tập tin 164
IV.3. Các hệ thống file trên các hệ điều hành hiện nay 166
IV.4. Tổ chức đĩa của MS_DOS 167
IV.5. Quản lý file trên đĩa của MS_DOS 172
IV.6. Tổ chức bảng thư mục gốc của Windows98 185
IV.7. Tổ chức đĩa của windows 2000 188
IV.7.1. Các loại partition 188
IV.7.2. Các loại volume multipartition 192
IV.8. Quản lý lưu trữ file trên đĩa của windowsNT/2000 195
IV.8.1. Một số chức năng được hỗ trợ bởi NTFS của windows 2000 195
IV.8.2. Cấu trúc của MFT 196
IV.8.3. Quản lý danh sách các block chứa file trên đĩa 203
IV.9. Một số kỹ thuật được hỗ trợ bởi hệ thống file NTFS 206
IV.9.1. Lập bảng chỉ mục 206
IV.9.2. Ánh xạ Bad-cluster 207
IV.10. Tổ chức lưu trữ file trên đĩa CD_ROM 209
Mục lục 212
Tài liệu tham khảo 215
g hay đang rỗi. Hình trên cho thấy một entry file trên VCN, nhưng các entry filename thực tế được đóng gói trong mỗi cluster. Một index buffer 4Kb có thể chứa từ 20 đến 30 entry filename. Cấu trúc dữ liệu cây b+ là một kiểu cây cân bằng, nó là ý tưởng cho việc tổ chức sắp xếp dữ liệu được lưu trữ trên đĩa bởi vì nó cực tiểu số lần truy cập đĩa cần thiết để tìm đến một entry. Trong MFT, một thuộc tính index root của thư mục chứa nhiều filename mà nó đóng vai trò như là các chỉ mục vào cấp thư hai của cây b+. Mỗi filename trong thuộc tính index root có một con trỏ tùy chọn được kết hợp với nó để chỉ đến index buffer. Index buffer mà nó chỉ đến chứa các filename với giá trị (về mặt tự điển) ít hơn sở hữu của nó. Trong hình trên, file4 là entry cấp đầu tiên trong cây b+, nó chỉ đến một index buffer chứa các filename mà ít hơn chính nó, đó là cá filename file0, file1, và file3. Lưu trữ tên file trong cây b+ mang lại nhiều thuận lợi. Việc tìm kiếm thư mục sẽ nhanh hơn vì filename được lưu trữ theo thứ tự được sắp xếp. Và khi một phần mềm cấp cao đếm các file trong thư mục, NTFS sẽ trả lại tên file vừa được sắp xếp. NTFS cũng cung cấp sự hỗ trợ cho chỉ mục dữ liệu bên cạnh filename. Một file có thể có một đối tượng ID được gán cho nó, ID của file được lưu trữ trong thuộc tính $OBJECT_ID của file. NTFS cung cấp một API cho phép các ứng dụng mở file bằng các đối tượng ID của file thay vì dùng tên file của nó. Do đó, NTFS phải tạo ra một tiến trình để chuyển đổi một đối tượng ID thành số file của file một cách hiệu quả. Để thực hiện được điều này NTFS lưu trữ một ánh xạ của tất cả các đối tượng ID của volume thành số tham chiếu file của chúng trong một file metadata \$Extend\$ObjID. NTFS sắp xếp các đối tượng ID trong file nói trên như chỉ mục filename mà ta đã dề cập ở trên. Chỉ mục đối tượng ID được lưu trữ như là cây b+. Ánh xạ bad-cluster Các thành phần quả lý đĩa logic trong windows 2000 như FDISK (đối với basic disk) và LDM (đối với các dynamics disk), có thể khôi phục dữ liệu tại các bad-sector trên các đĩa có khả năng chịu lỗi (fault tolearant disk), với điều kiện đĩa phải sử dụng chuẩn SCSI và còn các sector trống trên đĩa. Các volume chịu lỗi là các volume thuộc loại Mirrored và RAD-5. Hệ thống file FAT và thành phần quản lý đĩa logic của nó không thể đọc dữ liệu từ các bad-sector cũng như không thể phát sinh thông báo khi ứng dụng đọc dữ liệu tại bad-sector. NTFS thay thế một cách tự động các cluster chứa bad-sector và theo dõi bad-cluster vì thế nó không được sử dụng lại sau này. Khi bộ phận quản lý volume trả về cảnh báo bad-sector hoặc khi bộ điều khiển đĩa cứng trả về lỗi bad-sector, NTFS sẽ tìm một cluster mới để thay thế cluster chứa bad-sector. NTFS copy dữ liệu mà bộ phận quản lý volume khôi phục được vào cluster mới để thiết lập lại sự dư thừa dữ liệu. Hình 4.24.a cho thấy một record MFT cho một file của người sử dụng với một bad-cluster trong một trong các Run dữ liệu của nó. Khi nó nhận được lỗi bad-sector, NTFS gán lại cluster chứa bad-sector vào tập bad-cluster của nó. Điều này ngăn cản hệ thóng cấp bad-cluster cho các file khác. Sau đó NTFS tìm một cluster mới cho file và thay đổi ánh xạ VCN-to-LCN để chỉ đến cluster mới. Hình 4.24.a: Record MFT cho một File có bad-cluster Ánh xạ lại bad-cluster trong hình sau. Cluster 1357 có chứa bad-sector, được thay thế bằng cluster mới 1049. Nếu bad-sector ở trên volume redundant, thì bộ phận quản lý volume sẽ khôi phục dữ liệu và thay thế sector nếu có thể. Nếu không thể thay thế sector thì nó sẽ trả về một cảnh báo cho NTFS và NTFS sẽ thay thế cluster chứa bad-sector đó. Hình 4.24.b1: Ánh xạ lại bad-cluster Nếu một volume không được cấu hình là volume redundant thì dữ liệu trong bad-sector không thể khôi phục được. Khi một volume được định dạng như là một volume FAT và bộ phận quản lý volume không thể khôi phục dữ liệu thì việc đọc dữ liệu từ bad-sector sẽ không thành công và cũng không nhận được kết quả trả lời. Nếu các thành phần quan trọng của hệ điều hành đang được chứa tại các bad cluster thì có thể toàn bộ các file thư mục trên volume sẽ bị mất. Giống như các hệ thống file khác, NTFS không thể khôi phục dữ liệu từ bad-sector mà không có sự hỗ trợ từ bộ phận quản lý volume. Tuy nhiên, NTFS chứa nhiều sự hư hại mà các bad-sector có thể gây ra. Nếu NTFS phát hiện ra bad-sector trong quá trình đọc nó sẽ ánh xạ lại cluster chứa bad-sector trong nó, như trình bày trong hình 4.24.b2 sau đây: Hình 4.24.b2: Ánh xạ lại bad-cluster Nếu volume không được cấu hình là volume redundant, NTFS trả lại thông báo lỗi “đọc dữ liệu” cho chương trình người sử dụng yêu cầu đọc dữ liệu. Nếu NTFS phát hiện bad-cluster trong thao tác ghi, thì NTFS sẽ ánh xạ lại cluster trước khi ghi, nên không bị mất dữ liệu cũng như không phát sinh lỗi. Tổ chức lưu trữ file trên đĩa CD_ROM Về nguyên tắc hệ thống file trên CD_ROM đơn giản hơn so với những hệ thống file khác, vì các đĩa CD_ROM chỉ được ghi một lần (write-once media), do đó các file ghi trên nó không thể xóa bỏ hay thay đổi sau khi đĩa đã được chế tạo, chính vì vậy thành phần quản lý File/đĩa của hệ điều hành sẽ không lo đến việc quản lý các Block còn tự do trên đĩa cũng như việc cấp phát và thu hồi các Block cho các file, trong trường hợp các file được lưu trữ trên đĩa CD_ROM. Sau đây chúng ta xem xét hệ thống file chính trên CD_ROM và 2 hệ thống mở rộng của chúng: Hệ thống file ISO 9660: Đây là chuẩn phổ biến nhất đối với các hệ thống file CD_ROM và đã được chấp nhận như một chuẩn quốc tế vào năm 1988 với cái tên ISO 9660. Một trong những mục đích của chuẩn này là làm cho tất cả các CD_ROM đều có thể đọc được trên các máy tính khác nhau, nó không phụ thuộc vào thứ tự byte cũng như hệ điều hành đang sử dụng, kể cả hệ điều hành yếu nhất như MS_DOS. Trên CD_ROM không có track, cylinder như trên các đĩa từ, nó chỉ có một đường xoắn ốc đi từ tâm đĩa ra bên ngoài, đường xoắn ốc này được chia thành các khối (block) logic có kích thước bằng nhau và bằng 2352 byte, đôi khi cũng được gọi là các sector logic. Một vài byte trong khối dành cho phần mở đầu, sửa chữa lỗi, và những việc khác. Phần chính của mỗi khối logic còn lại khoảng 2048 byte. ISO 9660 hỗ trợ cho một tập đĩa CD_ROM với một tập gồm 216-1 đĩa, một CD_ROM riêng lẽ có thể được chia thành nhiều partition. Trong phần này chúng ta chỉ tìm hiểu chuẩn ISO 9660 với một CD_ROM và không được chia thành các Partition. Mỗi CD_ROM đều có phần đầu của đĩa, dài 16 block, chức năng của phần này không được định nghĩa trong chuẩn ISO 9600. Các nhà sản xuất CD_ROM có thể sử dụng phần đầu này để ghi vào đó chương trình BootStrap cho phép máy tính có thể khởi động được từ đĩa CD_ROM, hoặc dùng cho những mục đích khác. Phần tiếp theo là 1 block chứa bộ mô tả Volume chính, bộ mô tả này chứa một số thông tin chung về CD_ROM, bao gồm: định danh hệ thống (32byte), định danh volume (32byte), định danh nhà sản xuất (128byte) và định danh dữ liệu (128byte). Khi chế tạo có thể lấp đầy những trường trên theo ý muốn. Trong phần này còn chứa phần giới thiệu, bản quyền tác giả, thông tin thư mục, kích thước của một khối logic (2048, 4096, 8192, ...), số các block trên CD_ROM, và thời gian tạo và kết thúc của CD_ROM. Cuối cùng, trong bộ mô tả Volume chính còn chứa một tập các mục vào (directory entry) cho thư mục gốc, tại đây chứa địa chỉ của block bắt đầu của thư mục gốc trên CD_ROM. Trên CD_ROM có 2 bộ mô tả volume chính, có nội dung hoàn toàn giống nhau, sử dụng một bộ và một bộ để dự phòng. Sau các phần trên là phần bắt đầu của CD_ROM dùng để chứa các file đang được ghi trên đĩa. Thư mục gốc và tất cả các thư mục khác, chỉ gồm một số mục vào, phần cuối của chúng chứa một bít đánh dấu (mark). Mỗi mục vào chứa từ 10 đến 12 trường, trong đó có một số thuộc ASCII và số khác là những trường số thuộc số nhị phân. Mở rộng Rock Ridge: Các chuyên viên thiết kế của UNIX nhận thấy ISO 9660 còn một vài hạn chế, do đó họ đã mở rộng ISO 9660 với mục đích là cho nó có thể thay thế cho hệ thống file của UNIX trên các đĩa CD_ROM và các file được tạo từ UNIX có thể được sao chép sang CD_ROM và ngược lại, chuẩn mở rộng này được gọi là Rock Ridge. Rock Ridge giữ lại tất cả các trường của ISO 9660, và sử dụng trường System để đưa thêm vào các trường mới, các hệ thống file khác không nhận biết các trường này và xem CD_ROM như một đĩa CD_ROM thông thường. Rock Ridge bổ sung thêm các trường, theo thứ tự là: PX: Posix Attributes, PN: Major and miror device number, SL: Symbolic link, NM: Alternative name, CL: Child location, PL: Parent location, RE: Relocaltion, TF: Times stamps, trong đó trường quan trọng nhất là NM, trường này cho phép sử dụng 2 tên file cho một file, một tên file trong mục vào của thư mục và một tên file kết hợp, tên này không phụ vào tập kí tự hoặc giới hạn chiều dài của chuẩn ISO 9660. Mở rộng Joliet: Cũng như các chuyên viên thiết kế của UNIX, các chuyên viên thiết kế của Microsoft muốn mở rộng ISO 9660 sao cho các file được tạo từ Windows có thể được sao chép sang CD_ROM và ngược lại và họ đã thành công với mở rộng Joliet. Mở rộng Joliet cho phép: Tên file dài đến 64 kí tự; Sử dụng tập kí tự Unicode nên tên file có thể dài đến 128 kí tự; Có nhiều hơn 8 cấp thư mục lồng nhau; Sử dụng tên thư mục với phần mở rộng. TÀI LIỆU THAM KHẢO Nguyễn Thanh Tùng. Bài giảng Hệ điều hành. Đại học Bách khoa Hà Nội, 1996. Trần Hạnh Nhi. Giáo trình Hệ điều hành Nâng Cao. Đại học Khoa học Tự nhiên, TP Hồ Chí Minh, 1998. Dương Quang Thiện. Hệ điều hành MSDOS 6.22. Văn phòng SAMIS, TP Hồ Chí Minh, 1995. Lê Mạnh Thạnh - Nguyễn Kim Tuấn. Hướng dẫn lập trình với Assembly. Nhà xuất bản Khoa học Kỹ thuật Hà Nội, 2001. Michael Tischer. Cẩm nang Lập trình Hệ thống (tập I và tập II). Nguyễn Mạnh Hùng và Phạm Tiến Dũng dich. Nhà xuất bản Thống Kê, 1995. William Stalting. Operating Systems. Prentice Hall, 1995. Andrew S. Tanenbum. Modern Operating Systems. Prentice Hall, 1995. David A. Solomon – Mark E. Russinovich. Inside Microsoft Windows 2000. Microsoft Press, 2000.
File đính kèm:
- Giáo trình Lý thuyết hệ điều hành - Nguyễn Kim Tuấn.doc