Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 249 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
249
Dung lượng
2,79 MB
Nội dung
ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KHOA HỌC KHOA CÔNG NGHỆ THƠNG TIN GIÁO TRÌNH LÝ THUYẾT HỆ ĐIỀU HÀNH BIÊN SOẠN: NGUYỄN KIM TUẤN Huế 06/2004 MỤC LỤC Trang Chương I: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH I.1 Chức lịch sử phát triển hệ điều hành I.1.1 Chức hệ điều hành I.1.2 Lịch sử phát triển hệ điều hành I.2 Một số khái niệm hệ điều hành I.2.1 I.2.2 I.2.3 I.2.4 I.2.5 Tiến trình (Process) tiểu trình (Thread) Bộ xử lý lệnh (Shell) Sự phân lớp hệ thống (System Layering) Tài nguyên hệ thống (System Resources) Lời gọi hệ thống (System Calls) I.3 Hệ điều hành phân loại hệ điều hành I.3.1 Hệ điều hành gì? I.3.2 Phân loại hệ điều hành I.4 Thành phần cấu trúc hệ điều hành 12 I.4.1 Các thành phần hệ điều hành 12 I.4.2 Các cấu trúc hệ điều hành 16 I.5 Hệ điều hành Windows95 21 I.5.1 Giới thiệu hệ điều hành Windows95 22 I.5.2 Cấu trúc windows95 24 I.5.3 Bộ nhớ ảo windows95 25 I.6 Hệ điều hành Windows 2000 26 I.6.1 Giới thiệu hệ điều hành Windows 2000 26 I.6.2 Một số đặc tính Windows 2000 27 I.6.3 Một số khái niệm Windows 2000 28 I.6.4 Kiến trúc 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 tiến trình 41 I.1.1 Tiến trình loại tiến trình 41 I.1.2 I.1.3 I.1.4 I.1.5 I.1.6 Mơ hình tiến trình 42 Tiểu trình tiến trình 45 Các trạng thái tiến trình 46 Cấu trúc liệu khối quản lý tiến trình 50 Các thao tác điều khiển tiến trình 52 II.2 Tài nguyên găng đ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ô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 hỗ trợ hệ điều hành ngôn ngữ lập trình 63 II.3.4 Hai tốn điều phối làm ví dụ 72 II.4 Tắc nghẽn (Deadlock) 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 Windows NT 89 Chương III: QUẢN LÝ BỘ NHỚ III.1 Nhiệm vụ quản lý nhớ 93 III.2 Kỹ thuật cấp phát nhớ (nạp chương trình vào 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 nhớ ảo (Virtual Memory) 109 III.3.1 Bộ nhớ ảo 109 III.3.2 Kỹ thuật nhớ ảo 112 III.4 Quản lý nhớ RAM DOS 126 III.5.a .Progr am Segment Prefix (PSP) 126 III.5.b Chươ ng trình COM EXE III.5.c Mem ory Control Block (MCB) III.5 Sự phân trang/đoạn 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 đề quản lý nhớ Windows 2000 137 III.8.1 Nhiệm vụ quản lý nhớ Windows 2000 137 III.8.2 Các dịch vụ trình quản lý nhớ cung cấp 138 III.8.3 Address Space Layout 141 III.8.4 Chuyển đổi địa 142 Chương IV: QUẢN LÝ FILE Đ ĨA IV.1 Tổng quan quản lý tập tin đĩa 148 IV.2 IV.3 IV.4 IV.5 Tập tin hệ thống quản lý tập tin 148 Bảng danh mục tập tin chia sẻ 151 Quản lý không gian đĩa 153 Quản lý block chứa file đĩa 155 An toàn quản lý tập tin 158 Hiệu suất hệ thống file 162 Các điều khiển hệ thống tập tin 164 Các hệ thống file hệ điều hành 166 Tổ chức đĩa MS_DOS 167 Quản lý file đĩa MS_DOS 172 IV.6 Tổ chức bảng thư mục gốc Windows98 185 IV.7 Tổ chứ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 đĩa windowsNT/2000 195 IV.8.1 Một số chức hỗ trợ NTFS windows 2000 195 IV.8.2 Cấu trúc MFT 196 IV.8.3 Quản lý danh sách block chứa file đĩa 203 IV.9 Một số kỹ thuật hỗ trợ hệ thống file NTFS 206 IV.9.1 Lập bảng mục 206 IV.9.2 Ánh xạ Bad-cluster 207 IV.10 Tổ chức lưu trữ file đĩa CD_ROM 209 Mục lục 212 Tài liệu tham khảo 215 Chương I TỔNG QUAN VỀ HỆ ĐIỀU HÀNH Nếu khơng có phần mềm, máy tính thiết bị điện tử thông thường Với hỗ trợ phần mềm, máy tính lưu trữ, xử lý thơng tin người sử dụng gọi lại thơng tin Phần mềm máy tính chia thành nhiều loại: chương trình hệ thống, quản lý hoạt động máy tính Chương trình ứng dụng, giải vấn đề liên quan đến việc sử dụng khai thác máy tính người sử dụng Hệ điều hành thuộc nhóm chương trình hệ thống chương trình hệ thống quan trọng máy tính người sử dụng Hệ điều hành điều khiển tất tài nguyên máy tính cung cấp mơi trường thuận lợi để chương trình ứng dụng người sử dụng viết chạy máy tính Trong chương xem xét vai trò hệ điều hành trường hợp Một máy tính đại bao gồm: nhiều processor, nhớ chính, clocks, đĩa, giao diện mạng, thiết bị vào/ra khác Tất tạo thành hệ thống phức tạp Để viết chương trình để theo dõi tất thành phần máy tính sử dụng chúng cách hiệu quả, người lập trình phải biết processor thực chương trình nào, nhớ lưu trữ thơng tin nào, thiết bị đĩa làm việc (ghi/đọc) nào, lỗi xảy đọc block đĩa, … công việc khó khăn khó người lập trình Nhưng may cho người lập trình ứng dụng người sử dụng công việc hệ điều hành hỗ trợ nên họ không cần quan tâm đến Chương cho nhìn tổng quan liên quuan đến việc thiết kế cài đặt chức hệ điều hành để hệ điều hành đạt mục tiêu: Giúp người sử dụng khai thác máy tính dễ dàng chương trình người sử dụng chạy máy tính I.8 Chức lịch sử phát triển hệ điều hành I.1.7 Chức hệ điều hành Một hệ thống máy tính gồm thành phần chính: phần cứng, hệ điều hành chương trình ứng dụng người sử dụng Trong hệ điều hành phận quan trọng khơng thể thiếu hệ thống máy tính, nhờ có hệ điều hành mà người sử dụng đối thoại khai thác chức phần cứng máy tính Có thể nói hệ điều hành hệ thống chương trình đóng vai trò trung gian người sử dụng phần cứng máy tính Mục tiêu cung cấp môi trường thuận lợi để người sử dụng dễ dàng thực chương trình ứng dụng họ máy tính khai thác triệt để chức phần cứng máy tính Để đạt mục tiêu hệ điều hành phải thực chức sau đây: Giả lập máy tính mở rộng: Máy tính thiết bị vi điện tử, cấu thành từ phận như: Processor, Memory, I/O Device, Bus, , để đối thoại khai thác máy tính người sử dụng phải hiểu chế hoạt động phận phải tác động trực tiếp vào nó, tất nhiên số 0,1 (ngôn ngữ máy) Điều khó người sử dụng Để đơn giản cho người sử dụng hệ điều hành phải che đậy chi tiết phần cứng máy tính máy tính mở rộng, máy tính mở rộng có đầy đủ chức máy tính thực đơn giản dễ sử dụng Theo cần tác động vào máy tính thực người sử dụng cần tác động vào máy tính mở rộng, chuyển đổi thơng tin điều khiển từ máy tính mở rộng sang máy tính thực ngược lại hệ điều hành thực Mục đích chức là: Giúp người sử dụng khai thác chức phần cứng máy tính dễ dàng hiệu Quản lý tài nguyên hệ thống: Tài nguyên hệ thống là: processor, memory, I/O device, printer, file, , tài nguyên mà hệ điều hành dùng để cấp phát cho tiến trình, chương trình trình điều khiển hoạt động hệ thống Khi người sử dụng cần thực chương trình hay chương trình cần nạp thêm tiến trình vào nhớ hệ điều hành phải cấp phát khơng gian nhớ cho chương trình, tiến trình để chương trình, tiến trình nạp vào nhớ hoạt động Trong môi trường hệ điều hành đa nhiệm có nhiều chương trình, tiến trình đồng thời cần nạp vào nhớ, khơng gian lưu trữ nhớ có giới hạn, hệ điều hành phải tổ chức cấp phát nhớ cho hợp lý để đảm bảo tất chương trình, tiến trình cần nạp vào nhớ để hoạt động Ngoài hệ điều hành cịn phải tổ chức bảo vệ khơng gian nhớ cấp cho chương trình, tiến trình để tránh truy cập bất hợp lệ tranh chấp nhớ chương trình, tiến trình, đặc biệt tiến trình đồng thời hoạt động hệ thống Đây nhiệm vụ quan trọng hệ điều hành Trong trình hoạt động hệ thống, đặc biệt hệ thống đa người dùng, đa chương trình, đa tiến trình, cịn xuất tượng khác, nhiều chương trình, tiến trình đồng thời sử dụng khơng gian nhớ hay tập tin (dữ liệu, chương trình) Trong trường hợp hệ điều hành phải tổ chức việc chia sẻ giám sát việc truy xuất đồng thời tài nguyên nói cho việc sử dụng tài nguyên có hiệu tránh mát liệu làm hỏng tập tin Trên hai dẫn chứng điển hình để thấy vai trò hệ điều hành việc quản lý tài nguyên hệ thống, sau thấy việc cấp phát, chia sẻ, bảo vệ tài nguyên hệ điều hành cơng việc khó khăn phức tạp Hệ điều hành chi phí nhiều cho cơng việc nói để đạt mục tiêu: Trong trường hợp tất chương trình, tiến trình cần cấp phát tài nguyên để hoạt động sớm hay muộn cấp phát đưa vào trạng thái hoạt động Trên hai chức tổng quát hệ điều hành, xem mục tiêu mà nhà thiết kế, cài đặt hệ điều hành phải hướng tới Các hệ điều hành có chức cụ thể sau đây: Hệ điều hành cho phép thực nhiều chương trình đồng thời mơi trường đa tác vụ - Multitasking Environment Hệ điều hành multitasking bao gồm: Windows NT, Windows 2000, Linux OS/2 Trong hệ thống multasking hệ điều hành phải xác định ứng dụng chạy ứng dụng chạy khoản thời gian phải dừng lại ứng dụng khác chạy Hệ điều hành tự nạp vào nhớ - It loads itself into memory: Quá trình nạp hệ điều hành vào nhớ gọi trình Booting Chỉ hệ điều hành nạp vào nhớ cho phép người sử dụng giao tiếp với phần cứng Trong hệ thống có nhiều ứng dụng đồng thời hoạt động nhớ hệ điều hành phải chịu trách nhiệm chia sẻ không gian nhớ RAM nhớ cache cho ứng dụng Hệ điều hành API: Application Programming Interface: API tập hàm/thủ tục xây dựng sẵn bên hệ thống, thực nhiều chức khác shutdown hệ thống, đảo ngược hiệu ứng hình, khởi động ứng dụng, … Hệ điều hành giúp cho chương trình người sử dụng giao tiếp với API hay thực lời gọi đến hàm/thủ tục API Nạp liệu cần thiết vào nhớ - It loads the requied data into memory: Dữ liệu người sử dụng cung cấp đưa vào nhớ để xử lý Khi nạp liệu vào nhớ hệ điều hành phải lưu lại địa nhớ nơi mà liệu lưu Hệ điều hành phải ln theo dõi đồ cấp phát nhớ, nơi liệu chương trình lưu trữ Khi chương trình cần đọc liệu, hệ điều hành đến địa nhớ nơi lưu trữ liệu mà chương trình cần đọc để đọc lại Hệ điều hành biên dịch thị chương trình - It interprets program instructions: Hệ điều hành phải đọc giải mã thao tác cần thực hiện, viết chương trình người sử dụng Hệ điều hành chịu trách nhiệm sinh thông báo lỗi hệ thống gặp lỗi hoạt động Hệ điều hành quản lý tài nguyên - It managers resources: Nó đảm bảo việc sử dụng thích hợp tất tài nguyên hệ thống là: nhớ, đĩa cứng, máy in, … I.1.8 Lịch sử phát triển hệ điều hành I.1.2.a Thế hệ (1945 - 1955): Vào năm 1950 máy tính dùng ống chân khơng đời Ở hệ máy tính nhóm người thực hiện, bao gồm việc thiết kế, xây dựng chương trình, thao tác, quản lý, Ở hệ người lập trình phải dùng ngơn ngữ máy tuyệt đối để lập trình Khái niệm ngơn ngữ lập trình hệ điều hành chưa biết đến khoảng thời gian I.1.2.b Thế hệ (1955 - 1965): Máy tính dùng bán dẫn đời, sản xuất để cung cấp cho khách hàng Bộ phận sử dụng máy tính phân chia rõ ràng: người thiết kế, người xây dựng, người vận hành, người lập trình, người bảo trì Ngơn ngữ lập trình Assembly Fortran đời thời kỳ Với máy tính hệ để thực thao tác, lập trình viên dùng Assembly Fortran để viết chương trình phiếu đục lỗ sau đưa phiếu vào máy, máy thực cho kết qủa máy in Hệ thống xử lý theo lô đời thời kỳ Theo đó, thao tác cần thực máy tính ghi trước băng từ, hệ thống đọc băng từ , thực cho kết băng từ xuất Hệ thống xử lý theo lô hoạt động điều khiển chương trình đặc biệt, chương trình hệ điều hành sau I.1.2.c Thế hệ (1965 - 1980) Máy IBM 360 sản xuất hàng loạt để tung thị trường Các thiết bị ngoại vi xuất ngày nhiều, thao tác điều khiển máy tính thiết bị ngoại vi ngày phức tạp Trước tình hình nhu cầu cần có hệ điều hành sử dụng chung tất máy tính nhà sản xuất người sử dụng trở nên thiết Và hệ điều hành đời thời kỳ Hệ điều hành đời nhằm điều phối, kiểm soát hoạt động hệ thống giải yêu cầu tranh chấp thiết bị Hệ điều hành viết ngôn ngữ Assembly Hệ điều hành xuất khái niệm đa chương, khái niệm chia sẻ thời gian kỹ thuật Spool Trong giai đoạn xuất hệ điều hành Multics Unix I.1.2.d Thế hệ (từ 1980) Máy tính cá nhân đời Hệ điều hành MS_DOS đời gắn liền với máy tính IBM_PC Hệ điều hành mạng hệ điều hành phân tán đời thời kỳ Trên chúng tơi khơng có ý định trình bày chi tiết, đầy đủ lịch sử hình thành hệ điều hành, mà muốn mượn mốc thời gian đời hệ máy tính bạn thấy q trình hình thành hệ điều hành gắn liền với trình hình thành máy tính Mục tiêu chúng tơi mục muốn nhấn mạnh với bạn điểm sau đây: Các ngơn ngữ lập trình, đặc biệt ngơn ngữ lập trình cấp thấp, đời trước hệ điều hành Đa số hệ điều hành xây dựng từ ngơn ngữ lập trình cấp thấp trừ hệ điều hành Unix, xây dựng từ C, ngơn ngữ lập trình cấp cao Nếu khơng có hệ điều hành việc khai thác sử dụng máy tính khó khăn phức tạp nhiều sử dụng máy tính Sự đời phát triển hệ điều hành gắn liền với phát triển máy tính, ngược lại phát triển máy tính kéo theo phát triển hệ điều hành Hệ điều hành thực phát triển máy tính PC xuất thị trường Ngồi chúng tơi muốn giới thiệu số khái niệm như: hệ thống xử lý theo lô, hệ thống đa chương, hệ thống chia sẻ thời gian, kỹ thuật Spool, , mà xuất khái niệm đánh dấu bước phát triển hệ điều hành Chúng ta làm rõ khái niệm chương sau tài liệu I.9 Một số khái niệm hệ điều hành I.2.6 Tiến trình (Process) tiểu trình (Thread) Tiến trình phận chương trình thực Tiến trình đơn vị làm việc hệ thống, hệ thống tồn nhiều tiến trình hoạt động, có tiến trình hệ điều hành tiến trình chương trình người sử dụng Các tiến trình hoạt động đồng thời với Để tiến trình vào trạng thái hoạt động hệ thống phải cung cấp đầy đủ tài nguyên cho tiến trình Hệ thống phải trì đủ tài nguyên cho tiến trình suốt trình hoạt động tiến trình Ở cần phân biệt khác tiến trình chương trình, chương trình tập tin thụ động nằm đĩa, tiến trình trạng thái động chương file, bắt đầu tìm kiếm file thư mục gốc Sau trình mở file, NTFS lưu trữ tham chiếu MFT file để truy cập trực tiếp record MFT file đọc ghi file sau Khơng gian trống volume theo dõi bitmap Bitmap file Địa đĩa file bipmap ghi record (tên $bitmap) MFT Record đến file Bootstrap (có tên $Boot): File chứa mã bootstrap windows 2000 Để hệ thống boot được, mã bootstrap phải nạp vào vị trí đặc biệt đĩa Trong q trình format đĩa hệ điều hành định nghĩa vùng byte cách tạo file record cho File boot file metadata NTFS, bảo vệ riêng công cụ mơ tả bảo mật mà áp dụng cho tất đối tượng windows 2000 Record (có tên $BadClus) đến file, file dùng để lưu trữ danh sách liên kết block (cluster) bị bad volume Record (tên file $Secure): đến file chứa thông tin bảo mật, file lưu trữ sở liệu mơ tả bảo mật tồn volume Các file thư mục NTFS có thiết lập mô tả bảo mật riêng, NTFS lưu trữ thiết lập file chung, cho phép file thư mục có thiết lập bảo mật tham chiếu đến mô tả bảo mật Trong nhiều mơi trường, tồn thư mục có thiết lập bảo mật, nên chế mang lại nhiều thuận lợi việc tiết kiệm không gian lưu trữ mô tả bảo mật Record 10 (tên $Upcase): đến file case mapping, file chứa bảng chuyển đổi kí tự thường kí tự hoa Cuối cùng, record 11 (tên $Extend) đến thư mục, thư mục chứa file hỗn hợp như: hạn ngạch đĩa (Quotas), định danh đối tượng (Object identifier), record MFT cuối dự trữ cho việc sử dụng sau Khi lần truy cập volume, NTFS phải Mount nó, tức đọc metadata từ đĩa xây dựng cấu trúc liệu bên để xử lý truy cập từ ứng dụng Để mount volume, NTFS tìm boot sector địa vật lý MFT Theo trên, record file riêng MFT entry MFT, record file thứ hai trỏ đến file định vị vùng đĩa, MFT mirror (tên $MftMir) Khi NTFS tìm thấy record file MFT, lấy thông tin ánh xạ từ VNC-to-LCN thuộc tính data lưu vào nhớ để chuẩn bị cho trình ghi/đọc file sau Các Record File Hệ thống file NTFS lưu trữ file tập cặp thuộc tính/giá trị (attribute/value), số liệu chứa (được gọi thuộc tính liệu khơng tên) Các thuộc tính file bao gồm tên file, thông tin time stamp thuộc tính có tên thêm vào Hình 4.19.a sau cho thấy record MFT cho file nhỏ: có thuộc tính: Standard Information (thông tin chuẩn), Filename (tên file) Data (dữ liệu) Mỗi thuộc tính file lưu trữ dòng tách biệt byte phạm vi file Nói cách khác NTFS khơng đọc ghi file mà đọc ghi dịng thuộc tính NTFS cung cấp thao tác thuộc tính như: create, delete, read (byte range), write (byte range) Các dịch vụ ghi đọc thường thao tác thuộc tính liệu khơng đặt tên Tuy nhiên, lời gọi thuộc tính liệu khác cách sử dụng cú pháp dòng liệu đặt tên Standard Information Filena me D ata Hình 4.19.a: Một record MFT cho file nhỏ, có thuộc tính Cả NTFS FAT cho phép tên file đường dẫn dài đến 255 kí tự, có kí tự unicode dấu phân cách khác Để tương thích với ứng dụng 16 bít DOS, có file với tên file dài tạo windows 2000 tự động sinh tên file theo kiểu DOS (tên file 8.3) Tên theo kiểu DOS lưu trữ record MFT với tên file NTFS (tên file dài), tham chiếu đến file Hình 4.19.b: Một record MFT có chứa tên MS_DOS Windows 2000 tạo tên file theo kiểu DOS từ tên file dài tương tự cách mà hệ điều hành windows98 làm Tên MS_DOS dùng để ghi, đọc, copy file Thuộc tính thường trú thuộc tính khơng thường trú Với file có kích thước nhỏ tất thuộc tính giá trị chứa record MFT Khi giá trị thuộc tính lưu trực tiếp MFT thuộc tính gọi thuộc tính thường trú Thuộc tính thơng tin chuẩn thuộc tính mục gốc thường định nghĩa thuộc tính thường trú Hình 4.20.a: Header value thuộc tính thường trú Mỗi thuộc tính bắt đầu với header, header chứa thơng tin thuộc tính, thơng tin mà NTFS dùng để quản lý thuộc tính Header cho biết thơng tin liên quan đến giá trị có phải thường trú (RESIDENT) hay không, offset từ header đến giá trị thuộc tính, độ dài (length) giá trị thuộc tính, vv Hình 4.20.b sau cho thấy thuộc tính filemane gồm có header “RESIDENT” + Offset:8h + Length:14h value MYFILE.DAT Khi giá trị thuộc tính lưu trữ record MFT thời gian đọc nội dung file NTFS giảm xuống, khơng phải tìm danh sách cluster chứa nội dung file dựa vào việc phân tích bảng FAT hệ thống file FAT, mà cần đọc giá trị cluster đĩa chứa nội dung file, danh sách cluster ghi phần giá trị thuộc tính Thuộc tính cho thư mục nhỏ giống thuộc tính file nhỏ, thường trú MFT Hình sau record MFT cho thư mục nhỏ: Hình 4.20.b: Một record MFT cho thư mục nhỏ Trong thuộc tính Index root chứa mục tham chiếu đến file thư mục thư mục Trong thực tế nội dung thư mục, gồm file thư mục nó, khơng thể nén thành record MFT có kích thước cố định 1MB Nếu thuộc tính đặc biệt, thuộc tính liệu file chẳng hạn, lớn để chứa hết record MFT NTFS cấp phát cluster riêng cho liệu thuộc tính từ MFT Vùng gọi Run (hay phạm vi) Nếu giá trị thuộc tính sau phát triển, nội dung file tăng lên chẳng hạn, NTFS định vị Run khác cho liệu thêm vào Các thuộc tính mà giá trị lưu trữ Run khơng phải record MFT gọi thuộc tính khơng thường trú Hệ thống file định có hay khơng thuộc tính cụ thể thường trú hay khơng thường trú Khi thuộc tính khơng thường trú header chứa thơng tin mà NTFS cần để tìm đến giá trị thuộc tính đĩa Hình sau cho thấy thuộc tính liệu khơng thường trú lưu trữ Run Hình 4.20.c: Record cho file lớn với Run Trong số thuộc tính chuẩn (standard attribute), có thuộc tính tăng lên trở thành khơng thường trú Các thuộc tính thông tin chuẩn tên file luôn thường trú Hình 4.20.d: Record MFT cho thư mục lớn với mục filename không thường trú Một thư mục lớn có thuộc tính khơng thường trú Chúng ta xem hình say đây, ta thấy record MFT không đủ chỗ để lưu trữ hết Index file chứa thư mục lớn Một phần Index lưu trũ thuộc tính Index Root, phần cịn lại lưu Run khơng thường trú gọi vùng đệm mục (Index Buffer) NTFS theo dõi Run cặp ánh xạ VCN-to-LCN Các LCN đánh số thứ tự cluster toàn volume từ đến n Các VCN đánh số cluster riêng cho file từ đến m Xem hình 4.20.e sau đây: Hình 4.20.e: Các VCN cho thuộc tính liệu khơng thường trú Nếu file có nhiều Run Run thứ bắt đầu với VCN Xem hình sau đây, header thuộc tính liệu chứa ánh xạ VCN-to-LCN cho Run đây, cho phép NTFS dễ dàng tìm đến định vị cấp phát đĩa Hình 4.20.f: Các ánh xạ VCN-to-LCN cho thuộc tính liệu khơng thường trú Hình 4.20.f Run liệu, thuộc tính khác lưu trữ Run record MFT không đủ chỗ để chứa chúng file có q nhiều thuộc tính dẫn đến khơng chứa đủ record record thứ MFT sử dụng để chứa thuộc tính thêm vào Trong trường hợp thuộc tính gọi danh sách thuộc tính (attribute list) thêm vào Thuộc tính attribute list chứa tên mã loại cho thuộc tính file file tham chiếu record MFT, nơi thuộc tính nạp Thuộc tính attribute list cung cấp cho trường hợp: kích thước file tăng lên file bị phân mảnh, dẫn đến record MFT đơn chứa hết ánh xạ VCN-to-LCN cần thiết để tìm tất Run Tóm lại record MFT có trường sau: Trường record MFT record header, theo sau cặp header value thuộc tính Record header chứa mã số sử dụng để kiểm tra tính hợp lệ, số cập nhật record sử dụng lại cho file mới, tham chiếu đến file, số byte record sử dụng, nhận dạng (chỉ số, dãy số liên tiếp) record sở (chỉ sử dụng cho record mở rộng), số trường khác Sau record header header thuộc tính thứ giá trị thuộc tính thứ nhất, header thuộc tính thứ hai giá trị thuộc tính thứ hai, NTFS định nghĩa 13 thuộc tính xuất record MFT Chúng liệt kê bảng sau Mỗi record MFT bao gồm dãy header thuộc tính, chúng đồng với phần đầu thuộc tính cho biết độ dài vị trí trường giá trị với trạng thái cờ số thông tin khác Thông thường, giá trị thuộc tính nằm sau header chúng, giá trị dài để đặt record MFT, chúng đặt vào block đĩa tách rời Thuộc tính gọi thuộc tính khơng thường trú Một vài thuộc tính tên, lặp lại, tất thuộc tính phải đặt hàng cố định recorrd MFT Các header cho thuộc tính thường trú có độ dài 24 byte; thuộc tính khơng lưu trú dài chúng lưu thêm thơng tin để tìm thuộc tính đĩa Thuộ c tính Standard information File name Mơ tả Các bítcờ, timestamp, Tên file Unicode: lặp lại tên DOS Security descriptor Đã lỗi thời Thông tin bảo mật $extend$Secure Attribute list Vị trí MFT record thêm vào cần Object ID 64-bit, file nhận biết volume Reparse point Dùng cho liên kết tăng dần tượng trưng Volume name Tên volume (chỉ sử dụng $Volume) Volume information Phiên Volume (chỉ sử dụng $Volume) Index root Được sử dụng cho thư mục Index allocation Được sử dụng cho thư mục lớn Bitmap Được sử dụng cho thư mục lớn Logged utility Điều khiển kết nối đến $LogFile stream Data Dữ liệu luồng; lặp lại nhiều lần Bảng 4.7: Các thuộc tính sử dụng record MFT Trường thông tin chuẩn (Standard Information) file bao gồm: thông tin bảo mật, timestamp, liên kết cố định, bít đọc bítlưu trữ, vv Nó trường có kích thước cố định ln hữu Trường tên file (File Name) chuỗi mã Unicode có độ dài thay đổi Để tạo file với tên tên MS-DOS gần với ứng dụng 16-bítcũ, file có tên 8+3 MS-DOS Nếu tên file thực tuân theo quy tắc đặt tên 8+3 MS-DOS, tên file MS_DOS phụ khơng sử dụng Trong NT 4.0, thông tin bảo mật (Security) đưa vào thuộc tính Windows 2000 tất đưa vào file riêng, nhiều file chia sẻ phần bảo mật Danh sách thuộc tính (Attribute List) cần thiết thuộc tính khơng đặt record MFT Thuộc tính để tìm record mở rộng Mỗi mục vào dãy thuộc tính chứa số 48-bíttrong MFT gọi record mở rộng dãy số 16-bítcho phép kiểm tra phù hợp record mở rộng record sở Thuộc tính định danh đối tượng ID (Object Identifer) đối tượng làm cho tên file Trường peparse point gọi thủ tục phân tách tên file để thực thao tác đặc biệt Kỹ thuật sử dụng cài đặt liên kết biểu tượng Hai thuộc tính volume (Volume Name Volume Information) sử dụng để xác định volume Ba thuộc tính (Index Root, Index Allocation Bitmap) sử dụng cho việc cài đặt thư mục Thuộc tính Logged utility stream sử dụng hệ thống file mã hoá Cuối cùng, thuộc tính liệu Một dãy tên file nằm thuộc tính heard Tiếp theo header danh sách địa đĩa mà chúng gọi block chứa file, hay cho file vài trăm byte riêng Trong thực tế, đặt liệu file vào record MFT gọi file trực tiếp Phần lớn liệu khơng đặt MFT record, thuộc tính thường khơng thường trú IV.9.3 Quản lý danh sách block chứa File đĩa Trong Windows 2000 với NTFS nội dung File cần lưu trữ volume chia thành block (tương ứng với block hay cluster đĩa), block file gọi block logic Các block file lưu nhiều đoạn block không liên tiếp đĩa, đoạn block bao gồm n block liên tiếp (n = 2, 3, 4, ), đoạn block trường hợp gọi Run Ví dụ file A lưu trữ block liên tiếp: từ block 10 đến block 16 file B lưu trữ 35 block: từ block 30 đến block 44 từ block 41 đến block 60 Như file A lưu trữ đoạn block (Run #1) file B lưu trữ hai đoạn block (Run #1 Run #2) Thông thường, block logic file ghi block 20 đĩa block logic ghi vào block 21 đĩa block logic thứ ghi vào block 22 đĩa, vv Với cách lưu trữ hệ điều hành ghi nhiều blok logic vào block đĩa lúc Đây ưu điểm Windows 2000 Danh sách block đĩa chứa nội dụng file mô tả record MFT (đối với file nhỏ) dãy record MFT, khơng liên tiếp (đối với file lớn) Mỗi record MFT dùng để mô tả dãy block logic kề Mỗi record MFT trường hợp bắt đầu với header lưu địa offset block file Tiếp đến địa offset block mà khơng nằm record Ví dụ có file lưu đoạn block là: – 49 60 – 79 record có header (0, 50) cung cấp địa đĩa cho 50 block record có header (60, 80) cung cấp địa đĩa cho 20 block Tiếp sau record header hay nhiều cặp, cặp lưu địa block đĩa bắt đầu đoạn block số block có đoạn (độ dài Run) Hình sau record MFT chứa thông tin file Infor about data blocks File Name Stand ard Header Infor Header Standa rd Infor Record Header (thông tin block liệu) Data Header Header Run #1 Run#2 Run#3 File Name 20 64 80 Unused Các block đĩa 20-23 64-65 80-82 Hình 4.21: Một record MFT cho file có run, gồm block Hình 4.21 record MFT cho file ngắn (ngắn có nghĩa tất thông tin block file chứa vừa record MFT) File gồm block, chứa Run: Run #1 gồm block từ 20 đến 23, Run #2 gồm block từ 64 đến 65 Run #3 gồm block từ 80 đến 82 Mỗi Run ghi vào record MFT theo cặp (địa block đĩa, tổng số block) Cần ý khơng có giới hạn cho kích thước file trình bày theo cách Trong trường hợp thiếu địa nén, cặp cần có số 64-bít tổng số 16 byte Tuy nhiên cặp tượng trưng cho triệu block đĩa liên tiếp Trên thực tế, file 20 Mb bao gồm 20 Run triệu block Kb, Run đặt record MFT Khi lưu trữ file có kích thước lớn (số lượng block lớn) thơng tin file có phân mảnh lớn lưu trữ block MFT trình bày hình sau: Trong hình sau ta thấy record sở file nằm record MFT 102 Nó có nhiều Run record MFT, hệ thống cần phải có nhiều record mở rộng, thêm record mở rộng, đặt chúng vào record sở Phần lại record sở sử dụng cho k Run Khi tất byte record 102 dùng hết, run tích lũy tiếp tục với record MFT 105 Khi nhiều run xếp vào hết record hay record đầy phần run cịn lại vào record MFT 108 Theo cách này, nhiều record MFT dùng để quản lý file lớn khác 10 10 10 10 10 10 10 10 … Run n+1 Run #k+1 MFT 105 Record mở rộng Run# m Run #n Record mở rộng Run #k Record sở MFT10 Run#1 10 Hình 4.22: Các record MFT file lớn Một vấn đề nảy sinh cần nhiều record MFT khơng đủ chổ MFT sở để liệt kê tất mục chúng Có giải pháp cho vấn đề thực hiên không lưu danh sách phần đuôi mở rộng record MFT (chẳng hạn, lưu trử đĩa thay ghi MFT sở) Lúc đó, kích thước file phát triển lớn đến mức cần thiết Một số kỹ thuật hỗ trợ hệ thống file NTFS Lập bảng mục Trong hệ thống file NTFS, danh mục file mục đơn tên file, tập tên file (cùng với tham chiếu file chúng) tổ chức theo cách đặc biệt để tăng tốc độ truy xuất file Để tạo danh mục, NTFS lập mục cho thuộc tính filename file thư mục Một record cho thư mục gốc volume đưa hình 4.23 sau Hình 4.23: Chỉ mục tên file cho thư mục gốc volume Một emtry MFT cho thư mục chứa thuộc tính index root danh sách xếp file thư mục Đối với thư mục lớn, tên file thực tế lưu trữ vùng đệm mục (index buffer) có kích thước cố định 4Kb, index buffer chứa tổ chức tên file Index buffer cài đặt cấu trúc liệu b+, nhờ mà cực tiểu số lần truy cập trực tiếp đĩa cần thiết để tìm đến file, đặc biệt thư mục lớn Thuộc tính Index root chứa cấp b+ trỏ đến Index buffer chứa cấp Hình 4.23 trình bày tên file thuộc tính index root index buffer (file5), entry index chứa tham chiếu file MFT, nơi chứa thơng tin mơ tả, kích thước, timestamp file NTFS nhân đơi thơng tin timestamp kích thước file từ record MFT file Kỹ thuật sử dụng FAT NFTS, yêu cầu cập nhật thơng tin để ghi vào hai nơi Do đó, tăng tốc độ đáng kể cho thao tác duyệt thư mục cho phép hệ thống file hiển thị timestamp kích thước file file mà không cần mở file thư mục Thuộc tính index allocation ánh xạ VCN Run index buffer mà báo nơi index buffer thường trú đĩa Thuộc tính bitmap theo dõi VCN index buffer sử dụng hay rỗi Hình cho thấy entry file VCN, entry filename thực tế đóng gói cluster Một index buffer 4Kb chứa từ 20 đến 30 entry filename Cấu trúc liệu b+ kiểu cân bằng, ý tưởng cho việc tổ chức xếp liệu lưu trữ đĩa cực tiểu số lần truy cập đĩa cần thiết để tìm đến entry Trong MFT, thuộc tính index root thư mục chứa nhiều filename mà đóng vai trị mục vào cấp thư hai b+ Mỗi filename thuộc tính index root có trỏ tùy chọn kết hợp với để đến index buffer Index buffer mà đến chứa filename với giá trị (về mặt tự điển) sở hữu Trong hình trên, file4 entry cấp b+, đến index buffer chứa filename mà nó, cá filename file0, file1, file3 Lưu trữ tên file b+ mang lại nhiều thuận lợi Việc tìm kiếm thư mục nhanh filename lưu trữ theo thứ tự xếp Và phần mềm cấp cao đếm file thư mục, NTFS trả lại tên file vừa xếp NTFS cung cấp hỗ trợ cho mục liệu bên cạnh filename Một file có đối tượng ID gán cho nó, ID file lưu trữ thuộc tính $OBJECT_ID file NTFS cung cấp API cho phép ứng dụng mở file đối tượng ID file thay dùng tên file Do đó, NTFS phải tạo tiến trình để chuyển đổi đối tượng ID thành số file file cách hiệu Để thực điều NTFS lưu trữ ánh xạ tất đối tượng ID volume thành số tham chiếu file chúng file metadata \$Extend\$ObjID NTFS xếp đối tượng ID file nói mục filename mà ta dề cập Chỉ mục đối tượng ID lưu trữ b+ Ánh xạ bad-cluster Các thành phần lý đĩa logic windows 2000 FDISK (đối với basic disk) LDM (đối với dynamics disk), khôi phục liệu badsector đĩa có khả chịu lỗi (fault tolearant disk), với điều kiện đĩa phải sử dụng chuẩn SCSI sector trống đĩa Các volume chịu lỗi volume thuộc loại Mirrored RAD-5 Hệ thống file FAT thành phần quản lý đĩa logic khơng thể đọc liệu từ bad-sector phát sinh thông báo ứng dụng đọc liệu bad-sector NTFS thay cách tự động cluster chứa bad-sector theo dõi bad- cluster khơng sử dụng lại sau Khi phận quản lý volume trả cảnh báo bad-sector điều khiển đĩa cứng trả lỗi bad-sector, NTFS tìm cluster để thay cluster chứa bad-sector NTFS copy liệu mà phận quản lý volume khôi phục vào cluster để thiết lập lại dư thừa liệu Hình 4.24.a cho thấy record MFT cho file người sử dụng với bad-cluster trong Run liệu Khi nhận lỗi badsector, NTFS gán lại cluster chứa bad-sector vào tập bad-cluster Điều ngăn cản hệ thóng cấp bad-cluster cho file khác Sau NTFS tìm cluster cho file thay đổi ánh xạ VCN-to-LCN để đến cluster Hình 4.24.a: Record MFT cho File có bad-cluster Ánh xạ lại bad-cluster hình sau Cluster 1357 có chứa bad-sector, thay cluster 1049 Nếu bad-sector volume redundant, phận quản lý volume khôi phục liệu thay sector Nếu khơng thể thay sector trả cảnh báo cho NTFS NTFS thay cluster chứa bad-sector Hình 4.24.b1: Ánh xạ lại bad-cluster Nếu volume khơng cấu hình volume redundant liệu bad-sector khôi phục Khi volume định dạng volume FAT phận quản lý volume khơng thể khơi phục liệu việc đọc liệu từ bad-sector không thành công không nhận kết trả lời Nếu thành phần quan trọng hệ điều hành chứa bad cluster tồn file thư mục volume bị Giống hệ thống file khác, NTFS khơi phục liệu từ badsector mà khơng có hỗ trợ từ phận quản lý volume Tuy nhiên, NTFS chứa nhiều hư hại mà bad-sector gây Nếu NTFS phát bad-sector q trình đọc ánh xạ lại cluster chứa bad-sector nó, trình bày hình 4.24.b2 sau đây: Hình 4.24.b2: Ánh xạ lại bad-cluster Nếu volume khơng cấu hình volume redundant, NTFS trả lại thơng báo lỗi “đọc liệu” cho chương trình người sử dụng yêu cầu đọc liệu Nếu NTFS phát bad-cluster thao tác ghi, NTFS ánh xạ lại cluster trước ghi, nên không bị liệu không phát sinh lỗi Tổ chức lưu trữ file đĩa CD_ROM Về nguyên tắc hệ thống file CD_ROM đơn giản so với hệ thống file khác, đĩa CD_ROM ghi lần (write-once media), file ghi khơng thể xóa bỏ hay thay đổi sau đĩa chế tạo, thành phần quản lý File/đĩa hệ điều hành không lo đến việc quản lý Block tự đĩa việc cấp phát thu hồi Block cho file, trường hợp file lưu trữ đĩa CD_ROM Sau xem xét hệ thống file CD_ROM hệ thống mở rộng chúng: Hệ thống file ISO 9660: Đây chuẩn phổ biến hệ thống file CD_ROM chấp nhận chuẩn quốc tế vào năm 1988 với tên ISO 9660 Một mục đích chuẩn làm cho tất CD_ROM đọc máy tính khác nhau, khơng phụ thuộc vào thứ tự byte hệ điều hành sử dụng, kể hệ điều hành yếu MS_DOS Trên CD_ROM khơng có track, cylinder đĩa từ, có đường xoắn ốc từ tâm đĩa bên ngoài, đường xoắn ốc chia thành khối (block) logic có kích thước 2352 byte, gọi sector logic Một vài byte khối dành cho phần mở đầu, sửa chữa lỗi, việc khác Phần khối logic cịn lại khoảng 2048 byte ISO 9660 hỗ trợ cho tập đĩa CD_ROM với tập gồm 216-1 đĩa, CD_ROM riêng lẽ chia thành nhiều partition Trong phần tìm hiểu chuẩn ISO 9660 với CD_ROM không chia thành Partition Mỗi CD_ROM có phần đầu đĩa, dài 16 block, chức phần không định nghĩa chuẩn ISO 9600 Các nhà sản xuất CD_ROM sử dụng phần đầu để ghi vào chương trình BootStrap cho phép máy tính khởi động từ đĩa CD_ROM, dùng cho mục đích khác Phần block chứa mơ tả Volume chính, mơ tả chứa số thông tin chung CD_ROM, bao gồm: định danh hệ thống (32byte), định danh volume (32byte), định danh nhà sản xuất (128byte) định danh liệu (128byte) Khi chế tạo lấp đầy trường theo ý muốn Trong phần chứa phần giới thiệu, quyền tác giả, thông tin thư mục, kích thước khối logic (2048, 4096, 8192, ), số block CD_ROM, thời gian tạo kết thúc CD_ROM Cuối cùng, mô tả Volume cịn chứa tập mục vào (directory entry) cho thư mục gốc, chứa địa block bắt đầu thư mục gốc CD_ROM Trên CD_ROM có mơ tả volume chính, có nội dung hồn tồn giống nhau, sử dụng để dự phòng Sau phần phần bắt đầu CD_ROM dùng để chứa file ghi đĩa Thư mục gốc tất thư mục khác, gồm số mục vào, phần cuối chúng chứa bít đánh dấu (mark) Mỗi mục vào chứa từ 10 đến 12 trường, có số thuộc ASCII số khác trường số thuộc số nhị phân Mở rộng Rock Ridge: Các chuyên viên thiết kế UNIX nhận thấy ISO 9660 vài hạn chế, họ mở rộng ISO 9660 với mục đích cho thay cho hệ thống file UNIX đĩa CD_ROM file tạo từ UNIX chép sang CD_ROM ngược lại, chuẩn mở rộng gọi Rock Ridge Rock Ridge giữ lại tất trường ISO 9660, sử dụng trường System để đưa thêm vào trường mới, hệ thống file khác không nhận biết trường xem CD_ROM đĩa CD_ROM thông thường Rock Ridge bổ sung thêm 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, trường quan trọng NM, trường cho phép sử dụng tên file cho file, tên file mục vào thư mục tên file kết hợp, tên khơng phụ vào tập kí tự giới hạn chiều dài chuẩn ISO 9660 Mở rộng Joliet: Cũng chuyên viên thiết kế UNIX, chuyên viên thiết kế Microsoft muốn mở rộng ISO 9660 cho file tạo từ Windows chép sang CD_ROM ngược lại 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 dài đến 128 kí tự; Có nhiều 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 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 tập II) Nguyễn Mạnh Hùng Phạm Tiến Dũng dich Nhà xuất 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