Quản lý hệ thống file

Một phần của tài liệu BÀI GIẢNG KIẾN TRÚC MÁY TÍNH VÀ HỆ ĐIỀU HÀNH (Trang 103)

6.1.1Các khái niệm liên quan tới file

6.1.1.1File là gì?

Bộ nhớ ngoài bao gồm các thiết bị khác nhau như đĩa từ, băng từ, đĩa quang, đĩa quang từ, thẻ nhớ dùng cổng USB… Bộ nhớ ngoài có nhiều ưu điểm như dung lượng lớn, giá thành rẻ hơn bộ nhớ trong, nội dung lưu trữ không bị mất ngay cả khi không được cấp điện.

Việc truy cập bộ nhớ ngoài đòi hỏi thông tin chi tiết về đặc điểm của từng loại thiết bị và cách tổ chức lưu trữ dữ liệu trên đó. Chẳng hạn để đọc và ghi lên đĩa cứng cần biết các cồng tương ứng của bộ điều khiển đĩa, cũng như số lượng đầu đọc, số rãnh trên đĩa.v.v. của đĩa đang sử dụng. Việc cần biết những chi tiết này gây khó khăn cho thao tác lưu trữ thông tin trên bộ nhớ ngoài.

Để thuận tiện, giúp người dùng không phải quan tâm đến chi tiết thiết bị nhớ, hệ điều hành tránh những chi tiết cụ thể đó bằng cách trừu tượng hoá các thiết bị nhớ ngoài. Thông tin lưu trữ trên bộ nhớ ngoài được nhìn một cách thống nhất dưới dạng file. File là khái niệm lôgic, không phụ thuộc vào thiết bị lưu trữ cụ thể. Hệ điều hành sẽ đảm nhiệm việc ánh xạ lên các thiết bị lưu trữ.

File được định nghĩa như tập hợp các thông tin liên quan đến nhau được đặt tên và được lưu trữ trên bộ nhớ ngoài.

Có thể thấy, định nghĩa này rất tổng quát. Trên thực tế, file có thể chứa chương trình (mã nguồn hoặc mã chạy được), hoặc dữ liệu. Dữ liệu trong file có thể có dạng số, dạng ký tự hay dạng nhị phân, có thể có cấu trúc, có thể không. Nói một cách chung nhất, file là tập hợp các bit, các byte, các dòng văn bản hay các bản ghi. ý nghĩa các đơn vị thành phần này của file hoàn toàn do người tạo ra file và người sử dụng file quy định. Việc định nghĩa file một cách tổng quát, do vậy, là hợp lý và cần thiết.

Nhờ có khái niệm file, người dùng có thể quy định cấu trúc, ý nghĩa, cách sử dụng cho thông tin cần lưu trữ và đặt tên cho tập các thông tin này. Người sử dụng có thể không quan tâm tới việc file được lưu trữ cụ thể ở đâu, ra sao.

6.1.1.2Thuộc tính của file

Ngoài thông tin và dữ liệu được lưu trữ trong file, hệ điều hành còn gắn cho file các thông tin có tác dụng mô tả. Các thông tin này gọi là thuộc tính (attribute) của file. Các thuộc tính cụ thể có thể thay đổi ở những hệ điều hành khác nhau. Dưới đây liệt kê một số thuộc tính file có thể gặp trong những hệ điều hành thông dụng:

- Tên file: Là thuộc tính rất quan trọng và thường được người dùng sử dụng khi truy cập file

- Kiểu file: Một số hệ điều hành phân biệt các kiểu file khác nhau. Ví dụ, trong Linux, file có thể là file thông thường chứa dữ liệu hay là file chứa thông tin về thư mục và được dùng cho mục đích quản lý file.

- Kích thước file: Kích thước hiện thời của file. Kích thước này thường tính bằng byte nhưng cũng có thể tính theo đơn vị từ (word) hay bản ghi (record). Kích thước file có thể bao gồm kích thước thực và kích thước mà file chiếm trên đĩa. Do đặc điểm lưu trữ dữ liệu trên đĩa, trong đó mỗi file chiếm một số nguyên các khối hay cung nên kịch thước thực và kích thước mà file được cấp phát trên đĩa có thể khác nhau.

- Người tạo file, người sở hữu file: Chứa tên hoặc số định danh của người đã tạo ra và người đang có quyền sở hữu file. Người tạo file và người sở hữu có thể không trùng nhau. Ví dụ, trong Windows NT, 2000, quản trị hệ thống có thể chiếm quyền sở hữu file từ người tạo file trong trường hợp cần thiết.

- Quyền truy cập file: Chứa thông tin về việc ai có quyền thực hiện đọc, thay đổi nội dung, xoá file.v.v.

- Thời gian tạo file, sửa file, truy cập file lần cuối: Bao gồm thời gian, ngày tháng tạo, ssửa, truy cập lần cuối. Các thông tin này có thể cần thiết cho việc quản lý sao lưu, bảo mật, đồng bộ nội dung file.

- Vị trí file: Cho biết dữ liệu của file được lưu trữ ở đâu trên bộ nhớ ngoài. Thông tin này cần thiết cho hệ điều hành khi truy cập tới file.

Có hai cách lưu trữ thuộc tính file trên đĩa. Theo cách thứ nhất, thuộc tính file được lưu trữ trong khoản mục ứng với file trong thư mục (sẽ đề cập tới trong phần về thư mục). Theo cách thứ hai, thuộc tính được lưu trữ luôn cùng với dữ liệu file, chẳng hạn trong phần tiêu đề (header) nằm ở đầu file.

Để đọc và thay đổi các thông tin về thuộc tính file, hệ điều hành thường cung cấp các lời gọi hệ thống tương ứng. Ví dụ, MS-DOS cho phép đọc và thay đổi thuộc tính file bằng hàm 43h của ngắt 21h, thời gian sửa file lần cuối có thể thay đổi bằng hàm 57h của ngắt 21h.

Đặt tên cho file

Trong số các thuộc tính, tên file là thuộc tính rất quan trọng cho phép xác định file, và là thông tin mà người dùng thường sử dụng nhất khi làm việc với file. Tên tồn tại cùng với file và cho phép truy cập tới file khi cần. Trong quá trình tồn tại của file, tên có thể thay đổi nếu cần thiết.

Nói chung không có quy tắc đặt tên file thống nhất cho các hệ điều hành. DOS chỉ hỗ trợ tên file độ dài 8 ký tự cộng 3 ký tự phần mở rộng, không phân biệt chữ hoa với chữ thường (nghĩa là file VIDU.TXT với file vídu.txt được coi là một), trong khi LINUX lại hỗ trợ tên file tới 256 ký tự, có phân biệt chữ hoa với chữ thường.

Các lựa chọn khi quy định việc đặt tên cho file bao gồm độ dài cho phép của tên file, các ký tự có thể dùng trong tên file, có phân biệt chữ hoa và chữ thường không, có sử dụng phần mở rộng không.

Ví dụ quy tắc đặt tên cho hệ thống file của MS-DOS phiên bản cũ (FAT), Windows NT (FAT, NTFS) và Linux (EXT3) được cho trong bảng sau:

Chương 6 – Các thành phần của hệ điều hành

102

Quy tắc đặt tên file của một số hệ điều hành Hệ điều

hành

Độ dài tối đa Phân biệt chữ hoa, chữ thường Cho phép sử dụng dấu cách Các ký tự cấm

MS-DOS 8 cho tên file 3 cho mở rộng

không không Bắt đầu bằng chữ cái hoặc số Không được chứa các ký tự / \ [ ] : ; | = , ^ ? @ Windows NT FAT 255 ký tự cho cả tên file và đường dẫn

không có Bắt đầu bằng chữ cái hoặc số Không được chứa các ký tự / \ [] : ; | = , ^ ? @

Windows NT NTFS

255 không có Không được chứa các ký tự /

\ < > * | : Linux (EXT3) 256 Có có (nếu tên file chứa trong ngoặc kép)

Không được chứa các ký tự ! @ # $ % ^ & * ( ) [ ] { } ‘ “ / \ : ; < > `

Rất nhiều hệ điều hành hỗ trợ việc chia tên file thành hai phần, cách nhau bởi dấu chấm (.). Phần sau dấu chấm là phần mở rộng và chứa một số thông tin bổ xung về file (thường là kiểu file). Ví dụ, phần mở rộng của tên file trong FAT phiên bản cũ có độ dài tối đa là 3 và cho biết kiểu file như progrm.c là file chương trình nguồn trên C. UNIX và LINUX hỗ trợ phần mở rộng có số lượng và độ dài tuỳ ý. Tên file có thể có nhiều hơn một phần mở rộng, chẳng hạn myfile.tar.z. Việc gán phần mở rộng cho tên file có thể có ích trong một số trường hợp. Ví dụ, một số chương trình dịch có thể phân biệt file chương trình nguồn với các file khác thông qua phần mở rộng.

6.1.1.3Cấu trúc file

File là tập hợp các thông tin do người tạo file định ra. Các thông tin này có thể rất khác nhau: văn bản, mã nguồn chương trình, chương trình đã được dịch và liên kết, hình ảnh từ máy quét, các bản ghi của cơ sở dữ liệu.v.v. Cấu trúc của file do vậy cũng rất khác nhau và phụ thuộc vào thông tin chứa trong file. File văn bản sẽ gồm các ký tự xếp liền nhau trong khi file cơ sở dữ liệu là các bản ghi có cấu trúc nhất định.

Vậy hệ điều hành có cần biết và hỗ trợ các kiểu cấu trúc file hay không?

Việc hỗ trợ cấu trúc file ở mức hệ điều hành có một số ưu điểm sau. Thứ nhất, các thao tác với file sẽ dễ dàng hơn đối với người lập trình ứng dụng. Thứ hai, hệ điều hành có thể kiểm soát được các thao tác với file. Việc kiểm soát được các thao tác với file cho phép hạn

chế một số lỗi. Ví dụ, khi ta vô tình in một file chương trình (đã được dịch và lưu trữ dưới dạng nhị phân) ra máy in, hệ điều hành sẽ phát hiện ra rằng file kiểu nhị phân không hỗ trợ in ấn và ngăn chặn việc in ra như vậy.

Tuy nhiên, hỗ trợ cấu trúc file ở mức hệ điều hành có các hạn chế là làm tăng kích thước hệ thống. Có bao nhiêu kiểu cấu trúc file được hệ điều hành hỗ trợ thì phải có bấy nhiêu đoạn chương trình được thêm vào hệ điều hành để thao tác với những kiểu cấu trúc này. Một số lượng lớn cấu trúc file sẽ khiến kích thước hệ điều hành tăng lên đáng kể.

Nhược điểm thứ hai quan trọng hơn là tính mềm dẻo của hệ điều hành bị giảm. Các chương trình chỉ có thể sử dụng các file có cấu trúc do hệ điều hành định sẵn. Việc tạo ra một file có cấu trúc khác với các cấu trúc mà hệ thống hỗ trợ sẽ bị ngăn cản. Ta hãy xem xét ví dụ sau. Giả sử hệ điều hành chỉ hỗ trợ các file văn bản và file chương trình. Do yêu cầu bảo mật, người dùng muốn tạo ra một file văn bản đã được mã hoá. Sau khi mã hoá, file văn bản sẽ có dạng như một file nhị phân, tức là giống với file chương trình hơn file văn bản. Hệ điều hành khi đó có thể nhầm và xếp file đã mã hoá vào kiểu file chương trình và ngăn cản việc đọc file này để giải mã.

Do các nhược điểm nêu trên, đa số hệ điều hành không hỗ trợ và quản lý kiểu cấu trúc file. Cấu trúc file sẽ do chương trình ứng dụng và người dùng tự quản lý. UNIX, DOS, WINDOWS là các hệ điều hành như vậy. Trong các hệ điều hành này, các file được xem như tập hợp (không có cấu trúc) các byte2. Các chương trình ứng dụng khác nhau sẽ tạo ra và tự quản lý cấu trúc file riêng của mình. Chẳng hạn, hệ thống quản lý dữ liệu sẽ tạo ra file bao gồm các bản ghi, chương trình xử lý đồ hoạ lưu file dưới dạng mã nhị phân đã được nén.v.v. Cách tổ chức như vậy cho phép chương trình ứng dụng hoàn toàn tự do trong việc tổ chức lưu trữ thông tin của mính.

6.1.2Thư mục

6.1.2.1KHái niệm thư mục

Trong một hệ thống tính toán, số lượng file lưu trữ trên đĩa có thể rất lớn (nhiều nghìn file). Để dễ dàng quản lý, truy cập, các file phải được tổ chức theo một cách nào đó. Nói chung, không gian của đĩa được chia thành các phần (partition) gọi là đĩa lôgic3. Các đĩa lôgic có thể sử dụng với hai mục đích. Thứ nhất, đĩa lôgic cho phép chia không gian đĩa thành những vùng riêng biệt, có kích thước nhỏ hơn kích thước đĩa vật lý. Các vùng riêng biệt này được quản lý và sử dụng độc lập, không phụ thuộc vào các phần khác. Ngược với cách trên, người ta có thể tạo ra đĩa lôgic từ những vùng không gian khác nhau trên các đĩa vật lý khác nhau. Kích thước đĩa lôgic khi đó có thể lớn hơn kích thước của mỗi đĩa vật lý.

Để quản lý các file trên mỗi đĩa lôgic, thông tin về file được lưu trong thư mục của đĩa. Thư mục được tạo thành từ các khoản mục (entry), mỗi khoản mục ứng với một file. Khoản mục chứa các thông tin về file như tên file, kích thước, vị trí, kiểu file và các thuộc tính khác hoặc chứa con trỏ tới nơi lưu trữ những thông tin này.

2Tuy nhiên hệ điều hành vẫn phải nhận biết và hỗ trợ một số loại file nhất định. Ví dụ như file chương trình phải có cấu trúc phù hợp cho việc tải vào bộ nhớ và chạy chương trình đó. Các ví dụ là file kiểu EXE của Windows.

Chương 6 – Các thành phần của hệ điều hành

104

Có thể hình dung thư mục như một bảng, trong đó mỗi dòng là khoản mục ứng với một file. Việc tìm ra dòng cần thiết được thực hiện theo tên file. Nói cách khác, thư mục cho phép ánh xạ từ tên file vào bản thân file đó.

Với các hệ điều hành khác nhau, có nhiều cách khác nhau để lưu thông tin về file trong thư mục. Theo cách thứ nhất, toàn bộ thuộc tính của file được lưu trong thư mục, bản thân file chỉ chứa dữ liệu (Hình 98a). MS-DOS sử dụng kiểu tổ chức thư mục này. Kích thước của mỗi khoản mục và cả thư mục nói chung khi đó rất lớn. Theo cách thứ hai, một phần thuộc tính được lưu trữ luôn cùng với dữ liệu của file. Thư mục chỉ lưu thông tin tối thiểu cần thiết cho việc tìm vị trí của file trên đĩa (Hình 98b). Kích thước thư mục do vậy giảm xuống. Toàn bộ hoặc một phần lớn của thư mục có thể được đọc vào bộ nhớ để tăng tốc độ xử lý. Đây là cách tổ chức thư mục sử dụng trong hệ thống file EXT2 và EXT3 của Linux.

Hình 98: Lưu trữ thuộc tính file (a) Trong thư mục; (b) cùng với file

Khi thực hiện thao tác mở file, hệ điều hành tìm trong thư mục khoản mục tương ứng với tên file cần mở. Sau đó hệ điều hành đọc các thuộc tính và vị trí dữ liệu của file vào một bảng chứa thông tin về các file đang mở. Bảng này nằm ở bộ nhớ trong và được sử dụng để cung cấp thông tin nhanh chóng cho thao tác đọc ghi file sau đó. Nếu khoản mục trỏ tới cấu trúc khác chứa thuộc tính file, cấu trúc này sẽ được đọc vào bảng nói trên.

6.1.2.2Các thao tác với thư mục

Có rất nhiều cách xây dựng và tổ chức thư mục khác nhau. Tuy nhiên, dù là cách tổ chức như thế nào thì phải hỗ trợ các thao tác với thư mục cho thuận lợi. Trước khi đề cập kỹ đến các cách tổ chức và xây dựng thư mục, việc xem xét các thao tác cần thực hiện với thư mục là rất cần thiết. Nói chung, thư mục phải cho phép tìm kiếm, tạo file, xoá file, liệt kê các thông tin về file trong thư mục. Sau đây ta sẽ xem xét cụ thể các thao tác đó:

Tìm kiếm file: Cấu trúc thư mục phải cho phép tìm kiếm file theo tên file hay chính xác hơn là tìm kiếm khoản mục ứng với file theo tên file đó. Trong trường hợp cần tìm một nhóm file có tên tương tự hoặc tìm kiếm file mà không nhớ chính xác tên, hệ thống cần cung cấp khả năng tìm các file có tên phù hợp với mẫu yêu cầu. Các kỹ tự thường được sử dụng để xây dựng mẫu là ký tự “*” thay thế cho một chuỗi kỹ tự bất kỳ và ký tự “?” thay thế cho một ký tự bất kỳ. Ví dụ, trong Windows, mẫu “*.c” ứng với tất cả các file có phần mở rộng là “c”. file1.txt file2.c file3.pas file4.doc Thuộc tính Thuộc tính Thuộc tính Thuộc tính file1.txt file2.c file3.pas file4.doc (a) (b) thuộc tính thuộc tính thuộc tính thuộc tính

Tạo file: như đã nói trong phần các thao tác với file, việc tạo file đòi hỏi phải tạo ra khoản mục mới và thêm vào thư mục.

Xoá file: ngoài việc giải phóng không gian mà file chiếm, thông tin về file và khoản mục tương ứng cũng bị xoá khỏi thư mục.

Duyệt thư mục: một thao tác quan trọng với thư mục là liệt kê tất cả các file chứa trong thư mục cũng như thông tin chứa trong khoản mục của file.

Đổi tên file: người dùng cần có khả năng thay đổi tên file khi có nhu cầu (chẳng hạn để

Một phần của tài liệu BÀI GIẢNG KIẾN TRÚC MÁY TÍNH VÀ HỆ ĐIỀU HÀNH (Trang 103)

Tải bản đầy đủ (PDF)

(144 trang)