Giáo trình Nguyên lý hệ điều hành (Phần 2)
Liên kết địa chỉ
Thông thường, một chương trình nằm trên đĩa như một tập tin có thể thực thi
dạng nhị phân. Chương trình này được mang vào trong bộ nhớ và được đặt trong một
quá trình để nó được thực thi. Phụ thuộc vào việc quản lý bộ nhớ đang dùng, quá
trình có thể được di chuyển giữa đĩa và bộ nhớ trong khi thực thi. Tập hợp các quá
trình trên đĩa đang chờ được mang vào bộ nhớ để thực thi hình thành một hàng đợi
nhập (input queue).
Thủ tục thông thường là chọn một trong những quá trình trong hàng đợi nhập
và nạp quá trình đó vào trong bộ nhớ. Khi một quá trình được thực thi, nó truy xuất
các chỉ thị và dữ liệu từ bộ nhớ. Cuối cùng, một quá trình kết thúc và không gian bộ
nhớ của nó được xác định là trống.
Hầu hết các hệ thống cho phép một quá trình người dùng nằm ở bất cứ phần
nào của bộ nhớ vật lý. Do đó, mặc dù không gian địa chỉ của máy tính bắt đầu tại
00000, nhưng địa chỉ đầu tiên của quá trình người dùng không cần tại 00000. Sắp xếp
này ảnh hưởng đến địa chỉ mà chương trình người dùng có thể dùng. Trong hầu hết
các trường hợp, một chương trình người dùng sẽ đi qua một số bước, một vài trong
chúng có thể là tuỳ chọn, trước khi được thực thi (Hình 3.1). Các địa chỉ có thể được
hiện diện trong những cách khác trong những bước này. Các địa chỉ trong chương
trình nguồn thường là những danh biểu. Một trình biên dịch sẽ liên kết các địa chỉ
danh biểu tới các địa chỉ có thể tái định vị (chẳng hạn như 14 bytes từ vị trí bắt đầu
của module này). Bộ soạn thảo liên kết hay bộ nạp sẽ liên kết các địa chỉ có thể tái
định vị tới địa chỉ tuyệt đối (chẳng hạn 74014). Mỗi liên kết là một ánh xạ từ một
không gian địa chỉ này tới một không gian địa chỉ khác
Về truyền thống, liên kết các chỉ thị và dữ liệu tới các địa chỉ có thể được thực
hiện tại bất cứ bước nào theo cách sau đây:
- Thời gian biên dịch: nếu tại thời điểm biên dịch có thể biết quá trình nằm ở
đâu trong bộ nhớ thì mã tuyệt đối có thể được phát sinh. Thí dụ, nếu biết trước quá
trình người dùng nằm tại vị trí R thì mã trình biên dịch được phát sinh sẽ bắt đầu tại
vị trí đó và mở rộng từ đó. Nếu tại thời điểm sau đó, vị trí bắt đầu thay đổi thì sẽ cần
biên dịch lại mã này. Các chương trình định dạng .COM của MS-DOS là mã tuyệt đối
giới hạn tại thời điểm biên dịch.
- Thời điểm nạp: nếu tại thời điểm biên dịch chưa biết nơi quá trình sẽ nằm ở
đâu trong bộ nhớ thì trình biên dịch phải phát sinh mã có thể tái định vị. Trong trường
hợp này, liên kết cuối cùng được trì hoãn cho tới thời điểm nạp. Nếu địa chỉ bắt đầu
thay đổi, chúng ta chỉ cần nạp lại mã người dùng để hợp nhất giá trị được thay đổi
này.
- Thời gian thực thi: nếu quá trình có thể được di chuyển trong thời gian thực
thi từ một phân đoạn bộ nhớ này tới một phân đoạn bộ nhớ khác thì việc liên kết phải
bị trì hoãn cho tới thời gian chạy. Phần cứng đặc biệt phải sẳn dùng cho cơ chế này để
thực hiện công việc. Hầu hết những hệ điều hành này dùng phương pháp này.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Giáo trình Nguyên lý hệ điều hành (Phần 2)
ệt được ghi vào phần tử tương ứng trong bảng FAT để báo cho các thường trình phân phối (allocation routine) không sử dụng block đó nữa. Nếu các block trở thành bad trong khi hoạt động bình thường, có thể chạy một chương trình đặc biệt như chkdsk để tìm các bad block và xử lý chúng như ở trên. Dữ liệu trên các bad block thường bị mất. Trên các đĩa phức tạp, vd đĩa SCSI, việc phục hồi bad block thông minh hơn: Mạch điều khiển duy trì một danh sách các bad block trên đĩa. DS này được khởi tạo khi format cấp thấp tại nhà máy và được cập nhật trong suốt sự tồn tại của đĩa. Format cấp thấp cũng thiết lập các sector dự phòng (spare sector) vô hình đối với HĐH. Mạch điều khiển có thể thay thế mỗi bad sector một cách logic bởi một trong số các sector dự phòng. 292 Sector sparing (kỹ thuật dự phòng sector) hay forwarding. Hệ điều hành cố gắng đọc block 87. Mạch điều khiển (controller) tính toán ECC và thấy sector đó là bad. Nó thông báo cho HĐH biết. Ở lần khởi động tiếp theo, một lệnh đặc biệt được chạy để ra lệnh cho Mạch điều khiển SCSI thay thế bad sector, ví dụ bởi sector 202. Sau đó, mỗi khi hệ thống yêu cầu block 87, mạch điều khiển sẽ thông dịch yêu cầu sang địa chỉ của sector 202. 4.2.4 Quản lý không gian swap Swap-space: Bộ nhớ ảo sử dụng không gian đĩa như là sự mở rộng của bộ nhớ chính vì vậy tăng dung lượng, tăng tốc độ. Swap-space có thể được tạo ra: - Từ hệ thống file bình thường: swap-space là một file lớn do thường trình hệ thống file tạo, đặt tên và phân phối bộ nhớ. Phương pháp này dễ thực hiện nhưng không hiệu quả: định vị cấu trúc thư mục và cấu trúc dữ liệu trên đĩa tốn nhiều thời gian và truy nhập đĩa nhiều lần hơn. - Trong 1 partition riêng (phổ biến hơn): không có cấu trúc thư mục và file trên đó, 1 trình quản lý bộ nhớ hoán đổi riêng điều khiển việc phân phối và thu hồi các block. Nó sử dụng các giải thuật để tối ưu tốc độ hơn là để lưu trữ hiệu quả. 4.2.5 Độ tin cậy của đĩa Ổ đĩa quan hệ với các thành phần của hệ thống, các ổ đĩa có tỉ lệ lỗi cao và chính các lỗi là nguyên nhân gây mất dữ liệu. Hình 4.12 Bản đồ phân đoạn bộ nhớ swap Theo thời gian các đĩa được thay thế và dữ liệu được lưu trữ lại, việc lưu trữ lại dữ liệu mất rất nhiều thời gian cũng như việc phục hồi các dữ liệu bị mất trên băng từ hoặc những đĩa cũ. Vì vậy cần phải có một hệ thống đĩa đảm bảo độ tin cậy là rất 293 quan trọng. Có nhiều công nghệ tăng độ tin cậy của đĩa nhưng hệ thống RAID được sử dụng phổ biến. RAID có thể thực hiện được bằng phần mềm hoặc phần cứng. Fault Tolerance phần cứng thì đắt tiền hơn Fault Tolerance phần mềm. Fault Tolerance phần cứng thường làm cho máy tính hoạt động nhanh hơn là Fault Tolerance phần mềm. Các giải pháp về Fault Tolerance phần cứng có thể hạn chế các tuỳ chọn thiết bị chỉ đến một nhà cung cấp. Các giải pháp về Fault Tolerance phần cứng có thể thực thi việc xét nghiệm các đĩa cứng để cho phép thay thế một đĩa bị hỏng mà không cần phải thoát máy tính. Thực thi phần mềm RAID: Trong qui trình thực thi phần mền RAID, hệ điều hành cung cấp các cơ chế để bảo đảm sự thặng dư về dữ liệu. RAID 0: RAID 0 còn được gọi là Disk Striping, ở đây volume lưu trữ dữ liệu theo các dãy trên hai hoặc nhiều đĩa thể hình. Dữ liệu trong một volume được tạo vạch thì được cáp phát và được cách điều trong các dãy thường tạo ra hoạt động tối ưu cho tất cả các kiểu volume RAID 1: RAID1 cũng được gọi là Disk Mirroring. Disk Mirroring ghi dữ liệu vào 2 đĩa cùng một lúc. Nếu một đĩa bị hỏng, thì hệ thống sử dụng dữ liệu từ đĩa kia để tiếp tục hoạt động. RAID 5: RAID 5 volume chia sẻ dữ liệu ngang qua tất cả các đĩa trong một mảng. RAID level 5 là duy nhất, bởi vì nó ghi Parity information (thông tin dư) sang tất cả các đĩa. Parity Information Thông tin thặng dư vốn được liên kết với một khối thông tin. Thực thi phần cứng RAID: Trong qui trình thực thi phần cứng RAID, giao diện điều khiển đĩa xử lý việc tạo và tạo lại thông tin thặng dư. Một vài nhà cung cấp phần cứng thực thi chế độ bảo vệ dữ liệu RAID một cách trực tiếp và phần cứng của họ y hệt như với card disk array controller. Bởi vì những phương pháp này riêng biệt cho những nhà cung cấp và bỏ qua trình diều khiển phần mềm Fault Tolerance của hệ điều hành, cho nên những nhà cung cấp này thường cải tiến hoạt động trên việc thực thi phần mềm của RAID thường có chứa các tính năng dư thừa. Chẳng hạn như việc 294 cuộn đĩa cứng đã bị hỏng và khắc phục bộ nhớ nhằm cái tiến hoạt động. Mức RAID được hỗ trợ trong việc thực thi phần cứng thì phụ thuộc vào nhà sản xuất phần cứng. 4.2.6 Cài đặt hệ lưu trữ ổn định Theo lý thuyết thông tin lưu trữ ổn định sẽ không bao giờ mất, để cài đặt chúng ta cần lưu trữ thông tin trên nhiều thiết bị độc lập Khi ghi đĩa có thể sảy ra các trường hợp sau: - Hoàn thành việc ghi: dữ liệu được ghi đúng trên đĩa - Một phần thất bại: Một lỗi sảy ra trong quá trình truyền dữ liệu, có những sector đã được ghi dữ liệu mới và các sector bị lỗi trong quá trình ghi - Thất bại hoàn toàn: Xảy ra trước khi ghi đĩa, vì vậy các dữ liệu trước đó trên đĩa vẫn còn nguyên. Như vậy, khi xay ra lỗi trong quá trình ghi một khối dữ liệu, hệ thống phát hiện và gọi một thủ tục phục hồi để khôi phục lại trạng thái khối thống nhất. Để làm được điều ssos hệ thống cần phải duy trì hai vật lý cho một khối logic. Dầu ra được thực hiện như sau: + Ghi thông tin trên trên khối vật lý đầu tiên + Khi việc ghi khối đầu tiên hoàn thành, ghi tương tự thông tin trên khối vật lý thứ hai + Khai báo việc thực hiện xong sau khi khối thứ hai đã ghi thành công. Trong quá trình phục hồi lỗi, mỗi cặp khối vật lý được kiểm tra. Nếu cả hai khối giống nhau và không có lối thì tốt, nếu một trong các khối chứa lỗi thay thế nội dung bằng giá trị của khối khác.. Nếu cả hai khối đều không lỗi nhưng nội dung lại khác nhau thay thế nội dung của khối thứ nhất bằng giá trị của khối thứ hai. Thủ tục này hục hồi đảm bảo ghi và lưu trữ ổn định thành công hoàn toàn hoặc kết quả không thay đổi. 4.2.7 Các thiết bị lưu trữ thứ ba: Các công việc của hệ điều hành và vấn đề về hiệu năng 1) Các thiết bị nhớ cấp ba Giá thành rẻ là đặc điểm nổi bật của bộ nhớ cấp ba. Nói chung, bộ nhớ cấp ba gồm các thiết bị khả chuyển (removable media). Ví dụ phổ biến: đĩa mềm, đĩa CD, flash disk. 295 - Removable Disks. Floppy disk là đĩa mềm dẻo mỏng được phủ lớp từ và được bảo vệ bên ngoài bởi một vỏ bằng chất dẻo. Có dung lượng khoảng 1.4 MB; - Removable magnetic disk được tạo bằng kỹ thuật tương tự. Có dung lượng hơn 1 GB. Có tốc độ nhanh gần như hard disks, nhưng rất dễ bị hỏng. - Đĩa từ-quang (magneto-optic disk) ghi dữ liệu trên một mặt đĩa cứng được phủ lớp từ. Ổ đĩa có 1 cuộn dây sinh từ trường. Tại nhiệt độ thường, từ trường quá rộng và yếu nên không thể từ hóa các bit trên đĩa. Sử dụng phương pháp đốt Laser: đầu đĩa chiếu 1 tia laser lên mặt đĩa để ghi một bit. Ánh sáng Laser cũng được sử dụng để đọc dữ liệu. Đầu đọc đĩa từ-quang bay xa mặt đĩa hơn nhiều so với đầu đọc đĩa từ, và lớp từ được phủ một lớp bảo vệ dầy bằng kính hoặc chất dẻo để chống sự phá hủy của đầu đọc. - Các đĩa quang (optical disk) không sử dụng hiện tượng từ tính; chúng sử dụng các chất liệu đặc biệt có thể bị biến đổi bằng ánh sáng laser thành các điểm sáng và tối. Ví dụ: đĩa đổi pha: Đĩa được phủ chất liệu có thể đông cứng thành trạng thái kết tinh hoặc vô định hình. Trạng thái kết tinh trong suốt hơn nên tia laser sáng hơn khi đi qua chất liệu đổi pha và bật ra khỏi lớp phản chiếu. Ổ đĩa đổi pha sử dụng ánh sáng laser ở 3 cường độ: cường độ yếu để đọc dữ liệu, cường độ trung bình để xóa đĩa (làm tan rồi đông cứng lại), cường độ mạnh làm tan chất liệu thành tr.thái vô định hình để ghi dữ liệu. Ví dụ: re-recordable CD-RW và DVD-RW - Tapes: So với đĩa, băng rẻ hơn và lưu chứa nhiều dữ liệu hơn, nhưng sự truy nhập ngẫu nhiên chậm hơn nhiều. Băng là một giải pháp tiết kiệm cho những mục đích không yêu cầu truy nhập nhanh, vd: lưu trữ bản sao của dữ liệu trên đĩa; sử dụng trong những trung tâm siêu máy tính lớn để lưu trữ lượng thông tin khổng lồ phục vụ nghiên cứu khoa học. - Công nghệ tương lai: Công nghệ lưu trữ ảnh giao thoa laser (Holographic storage): Sử dụng ánh sáng laser để ghi các bức ảnh giao thoa laser (holographic photograph) trên các thiết bị đặc biệt. Các bức ảnh đen trắng là một mảng 2 chiều các pixel, mỗi pixel biểu diễn 1 bit: 0-đen; 1-trắng. Một 296 bức ảnh có thể lưu hàng triệu bit dữ liệu; tất cả các pixel được truyền rất nhanh với tốc độ ánh sáng laser vì vậy tốc độ truyền dữ liệu rất cao, là công nghệ lưu trữ đầy hứa hẹn của tương lai. Hệ cơ khí vi điện tử (Micro electronic mechanical system - MEMS): chế tạo các chip điện tử để sản xuất các thiết bị lưu trữ nhỏ, nếu thành công sẽ cung cấp công nghệ lưu trữ dữ liệu không khả biến, nhanh hơn đĩa từ và rẻ hơn DRAM bán dẫn. 2) Các công việc của hệ điều hành - Giao diện ứng dụng Hầu hết các hệ điều hành quản lý các đĩa khả chuyển giống như các đĩa cố định, một đĩa mới phải được format và tạo một hệ thống file rỗng trên đó. Các thao tác cơ bản với ổ đĩa: read, write, seek. Các băng được coi là phương tiện lưu trữ thô, ví dụ: ứng dụng không mở 1 file trên băng mà mở toàn bộ ổ băng. Các thao tác cơ bản với tape: locate: định vị băng vào 1 khối (block) xác định read position: trả về vị trí hiện thời của đầu băng (block number) Các ổ băng là các thiết bị "chỉ ghi thêm“ (append-only). Một dấu EOT (End Of Tape) được đặt sau mỗi khối vừa được ghi. - Đặt tên file Vấn đề đặt tên các file trên các thiết bị nhớ khả chuyển là đặc biệt khó khi chúng ta muốn ghi dữ liệu lên nó trên một máy tính và rồi sử dụng nó trên một máy tính khác: Tìm đường dẫn đến file, kiểu ổ đĩa có tương thích; thứ tự lưu trữ các byte dữ liệu khác nhau, ví dụ: các bộ vi xử lí Intel 80x86 và Pentium: lưu trữ kiểu little- endian; các bộ vi xử lí Motorola 680x0 và RISC: lưu trữ kiểu big-endian Các hệ điều hành hiện nay nói chung để mặc vấn đề trên, phụ thuộc vào các ứng dụng và người sử dụng để tìm ra cách truy nhập, hiển thị dữ liệu. Một số thiết bị nhớ khả chuyển (CD, DVD) được tiêu chuẩn hóa tốt để tất cả các máy tính sử dụng chúng theo một cách chung. - Hiệu năng + Tốc độ 297 Hai mặt của tốc độ trong bộ nhớ cấp ba là dải thông (bandwidth) và trễ truy nhập (latency). Dải thông (số byte/giây) Dải thông liên tục (Sustained bandwidth) – tốc độ dữ liệu trung bình trong suốt quá trình truyền lớn; được tính bằng số byte/thời gian truyền. Là tốc độ dữ liệu khi dòng dữ liệu truyền thực sự + Effective bandwidth (Dải thông có hiệu lực) – tính trung bình trên toàn bộ thời gian vào-ra. Là tốc độ dữ liệu tổng thể của ổ đĩa. Dải thông của ổ đĩa thường được hiểu là sustained bandwith. Các removable disk: 0.25 - 5 MB/s; Các tape: 0.25 - 30 MB/s Trễ truy nhập là khoảng thời gian cần thiết để định vị dữ liệu Thời gian truy nhập của ổ đĩa là dịch đầu từ tới cylinder được chọn và đợi trễ quay (rotational latency); < 35 ms. Truy nhập trên băng đòi hỏi phải cuộn ống băng cho đến khi khối được chọn chạm đến đầu băng; tốn hàng chục hoặc hàng trăm giây. Nói chung truy nhập ngẫu nhiên trên băng chậm hơn trên đĩa hàng nghìn lần. + Độ tin cậy Một ổ đĩa cố định có vẻ đáng tin cậy hơn một ổ đĩa hay ổ băng khả chuyển. Một đĩa quang có vẻ đáng tin cậy hơn một đĩa từ hay băng từ. Sự rơi đầu từ trong một đĩa cứng cố định thường phá hủy dữ liệu, trong khi đó hỏng ổ băng hay ổ đĩa quang thường không làm hỏng đến dữ liệu. + Giá thành (USD/1 MB) Bộ nhớ chính (Main memory) đắt hơn nhiều so với bộ nhớ cấp hai và cấp ba. Câu hỏi và bài tập chương 4 1. So sánh các thuật toán đọc đĩa. 2. Lựa chọn các thuậ toán đọc đĩa như thế nào? 3. Nguyên nhân các lỗi khi truy xuất đĩa và cách khắc phục? 4. RAM disks là gì? 298 5. Vì sao có cơ chế Interleave? 6. Đặc điểm của phần cứng terminal. 7. Terminal ánh xạ bộ nhớ dùng để làm gì? 8. Vai trò của đồng hồ. 9. Trình bày sơ lược về cấu trúc và nguyên tắc hoạt động của đĩa từ. Hệ điều hành quản lý đĩa từ theo đơn vị nào? Thế nào là thư mục thiết bị 10. Trình bày các phương pháp quản lý và cấp phát không gian nhớ tự do trên đĩa từ của hệ điều hành 11. Trình bày các yếu tô liên quan đến thời gian truy nhập đĩa từ, từ đó nêu khái niệm về lập lịch cho đĩa (disk scheduler) 12. Trình bày khái niệm về hệ file, các yếu tố của hệ file và các phương pháp tổ chức hệ file 13. Giả sử vùng không gian nhớ của đĩa từ được mô tả qua sơ đồ sau: File F1 được phân bố lại các block có số hiệu: 0,2,4,5,9,13,14,15. Trình bày phương pháp các phát liên kết (block là 0, block cuối là 2) và phương pháp cấp phat theo địa chỉ số (block chỉ số là 15) 14. Giả sử vùng không gian nhớ của đĩa từ được mô tả qua sơ đồ sau: (các block màu sẫm là các block đã sử dụng) a) Mô phỏng các phương pháp quản lý không gian nhớ tự do qua sơ đồ trên 299 b) File F1 có kích thước 3 block. Mô phỏng các phương pháp không gian nhớ cho F1 qua sơ đồ trên 15. Giả sử một ổ cứng có 200 track được ký hiệu từ 0 đến 199; các yêu cầu đọc ghi dữ liệu tại các track theo thứ tự sau đây: 45,14,9,26,87,52,122,183,68,184,185. Đầu từ đọc/ghi đang định vị tại track 60. Vẽ sơ đồ dịch chuyển đầu từ đọc ghi theo các thuật toán: FCFS, SSTF, Scan, C-Scan, Look, C-Look 16. Cho không gian đĩa như hình sau, các khối 2,3,4,5,8,9,10,11,12,13,17,18,25,26,27 là các khối đĩa tự do. Tìm bitmap quản lý không gian bộ nhớ tự do: 17. Giả sử đĩa có 2 side, mỗi side có 1024 track, mỗi track có 32 sector. Tốc độ xoay của đĩa là 6000 vòng/phút. Thời gian di chuyển giữa các track là 100ms. Giả sử thời gian đọc và chuyển dữ liệu là không đáng kể. Cho biết để truy xuất tất cả sector logic sau phải tốn bao lâu : 34, 16, 120, 14, 86, 200, 79, 300, 8, 500, 170, 450, 1000, 380, 800 Biết : Sector = Seclog / SecTrk + 1 Side = (Seclog/SecTrk) / SideNo Track = (Seclog/(Sectrk *SideNo)) Với Seclog là sector logic, SideNo là số side, Sectrk là số sector trên 1 track 300 TÀI LIỆU THAM KHẢO [1]. Andrew S. Tanenbaum, Albert S Woodhull, Operating Systems: Design and Implementation, 3rd edition, Prentice-Hall. 2006. [2]. Andrew S. Tanenbaum, Modern Operating Systems, 2nd edition, Prentice-Hall, 2001. [3]. Abraham Silberschatz, Peter Baer Galvin, Greg Gagne, Operating System Concepts, 7th edition, John Wiley & Sons, Inc., 2005. [4]. Daniel P. Bovet, Marco Cesati, Understanding Linux Kernel, 2nd edition, O'Reilly & Associates, 2002. [5]. Robert Love, Linux Kernel Development, Sams Publishing, 2003. [6]. William Stallings, Operating Systems: Internals and Design Principles 5th edition, Prentice-Hall, 2005. [7]. W. Richard Stevens, Advanced Programming in the UNIX Environment, Addison-Wesley, 1992. [8]. Hà Quang Thụy, Nguyên lý hệ điều hành, NXB KHKT, 2002.
File đính kèm:
- giao_trinh_nguyen_ly_he_dieu_hanh_phan_2.pdf