Thứ Sáu, 30 tháng 9, 2011

iá trị đặc biệt

Byte đầu tiên (offset 00) của một phần tử trong thư mục gốc còn được gọi là byte trạng thái, byte này có thể chứa một trong các giá trị đặc biệt sau đây:
·        0: cho biết phần tử này chưa được sử dụng va mang trinhdo choi tinh ducam dao giaphau thuat tham my
·        05h: cho biết kí tự đầu tiên của tên file này thực tế là E5h. Nếu người sử dụng cố tình tạo ra một file có tên bắt đầu là kí tự có mã asscii là E5h thì hệ điều hành sẽ tự động thay bằng kí tự có mã là 05h, để phân biệt file này với các file đã bị xoá.
·        2Eh (kí tự dấu chấm “.): cho biết phần tử này chứa thông tin của một thư mục con, nếu byte thứ 2 cũng chứa giá trị 2Eh (hai dấu chấm liên tiếp “..) thì trường start cluster sẽ chứa số hiệu cluster đầu tiên của thư mục cha, nếu là thư mục gốc thì là 0000h.
Nếu bằng cách nào đó người lập trình đưa được một giá trị 1 byte không thuộc một trong các giá trị trên và không phải là các chữ cái tên file thông thường, vào byte đầu tiên của phần tử trong bảng thư mục gốc đang cấp phát cho một file/thư mục nào đó, thì DOS và các tiện ích trên DOS không thể nhận biết các file/thư mục này, và không thể thực hiện các thao tác Dir, Del, vv trên nó. Đây là một cách để bảo vệ các file/thư mục của người sử dụng trên đĩa.
·                    DOS dùng 1 byte, sau 2 phần tên file, để ghi các thuộc tính của file, tuy nhiên DOS chỉ dùng 6 bít từ 0 đến 5 của byte này để ghi 5 thuộc tính lần lượt là: chỉ đọc, ẩn, hệ thống, nhãn đĩa, thư mục con và lưu trữ (trong hình 4.xx.b ở trên 2 bít chưa sử dụng được đánh dấu x):     
·        Thuộc tính chỉ đọc (r: read only): Nếu bít 0 của byte thuộc tính bằng 1, thì tập tin tương ứng có thuộc tính chỉ đọc. Một tập tin có thuộc tính chỉ đọc sẽ không bị thay đổi nội dung và không bị xóa.  
·        Thuộc tính ẩn (h: hidden): Nếu bít 1 của byte thuộc tính bằng 1, thì tập tin tương ứng có thuộc tính ẩn. Một tập tin có thuộc tính ẩn thì các lệnh DOS thông thường như Edit, Del, Dir, Tree, … sẽ không tác động được đến nó.
·        Thuộc tính hệ thống (s: system): Nếu bít 2 của byte thuộc tính bằng 1, thì tập tin tương ứng có thuộc tính hệ thống. Một tập tin có thuộc tính hệ thống tương tự như tập tin có thuộc tính ẩn hoặc vừa ẩn vừa hệ thống. Thuộc tính hệ thống chỉ có ý nghĩa kế thừa, nó không có ý nghĩa trong hệ điều hành DOS.
·        Thuộc tính nhãn đĩa (v: volume): Nếu bít 3 của byte thuộc tính bằng 1,  thì phần tử này chứa nhãn nhận dạng đĩa, được lưu tại trường filename và trường  Ext. Phần tử này chỉ được DOS nhận biết nếu nó nằm trên thư mục gốc. Trong trường hợp này chỉ có trường Date và Time là được sử dụng. Trường start cluster và trường filesize chứa giá trị 0.
·        Thuộc tính thư mục con (d: subdirectory): Nếu bít 4 của byte thuộc tính bằng 1, thì phần tử này chứa các thông tin về thư mục con của thư mục gốc trên đĩa. Đối với DOS thư mục con là một tập tin chứa dữ liệu thông thường, nó có một thuộc tính đặc biệt, đó là thuộc tính d. 
·        Thuộc tính lưu trữ (a:archive): thuộc tính này dùng để trợ giúp cho việc tạo backup của các tập tin trên đĩa cứng. Bít này = 0 đối với tất cả các tập tin chưa bị sửa đổi kể từ lần backup gần đây nhất. Như vậy trong lần tạo backup sau DOS chỉ cần cập nhật cho các tập tin có bít này bằng 1. Tóm lại, lúc đầu bít a = 0, sau đó nếu có bất kỳ sự thay đổi nào trong nội dung của file thì bít này sẽ được chuyển lên thành bằng 1.
·                    10 byte bắt đầu từ offset 0Ch chưa được DOS sử dụng, Microsoft dự trữ vùng này cho các mục đích khác sau này. Hệ điều hành windows98 sử dụng tất cả 10 byte này. Việc dự trữ 10 byte này tạo thành một kẽ hở của DOS, các đoạn code virus có thể định vị ở vùng này mà hệ điều hành không thể phát hiện được.
·                    Trường Date và trường Time kết hợp với nhau để lưu chính xác ngày giờ tạo ra file/ thư mục hay ngày giờ file/ thư mục được thay đổi gần đây nhất.
·                    Trường quan trọng nhất trong của một phần tử trong bảng thư mục gốc là trường start cluster, dài 2 byte, bắt đầu tại offset 1Ah. Nó chứa số hiệu của cluster đầu tiên trong dãy các cluster chứa nội dung của file tương ứng với phần tử này. Do đó trong các thao tác đọc file của hệ điều hành, trường này được xem như một con trỏ trỏ tới bảng FAT để dò tìm dãy các cluster chứa nội dụng của một file. 
·                    Trường filesize cho biết kích thước của file tính theo byte. Nếu một phần tử trong bảng thư mục gốc được dùng cho một thư mục con nào đó thì trường filesize này chứa giá trị 0. Kích thước của thư mục con chỉ được biết nhờ lần theo chuỗi số hiệu cluster tương ứng trong bảng FAT.
Khi người sử dụng xóa một file trên đĩa hệ điều hành không xóa nội dung của file tại các cluster trên vùng data, không xóa dãy các cluster chứa file trong bảng FAT, thậm chí không xóa cluster đầu tiên trong dãy các cluster chứa file tại phần tử tương ứng với file trong bảng thư mục gốc mà hệ điều hành chỉ thay kí tự đầu tiên của tên file tại phần tử trong bảng thư mục gốc bằng giá trị E5h. Do đó, sau khi đã xóa một file thì hệ điều hành có thể khôi phục lại được file này, bằng các thay kí tự mã E5h ở byte đầu tiên của tên file bằng một kí tự khác. Trường hợp không khôi phục được là do sau một thời gian, hệ điều hành đã sử dụng phần tử trong thư mục gốc, các phần tử trong bảng FAT và các cluster trên vùng data của file đã bị xóa, cấp phát cho các file mới sau này. Khi duyệt bảng thư mục gốc gặp các phần tử có byte đầu bàng E5h hệ điều hành biết đây là phần tử của file đã bị xóa nên không in ra màn hình. Điều vừa trình bày trên đây hoàn toàn đúng với trường hợp của các thư mục con trên đĩcan dien tu

Không có nhận xét nào:

Đăng nhận xét