CÁC THAO TÁC VỚI FILE

Một phần của tài liệu Giáo trình môn Hệ Điều Hành PTIT (Trang 139)

Như đã nói ở trên, file là một kiểu dữ liệu lô gic, là nơi có thể lưu trữ và truy cập thông tin. Hệ điều hành cũng quy định ra các thao tác mà người dùng và ứng dụng có thể thực hiện với file. Các thao tác này được hệ điều hành thực hiện khi chương trình ứng dụng gọi lời gọi hệ thống tương ứng. Những thao tác với file thường gặp trong các hệ điều hành bao gồm:  Tạo file. Một file trống chưa có dữ liệu được tạo ra. File được dành một chỗ trong thư

mục kèm theo một số thuộc tính như thời gian tạo file, tên file, người tạo file.v.v.  Xoá file. Thao tác xoá file bao gồm giải phóng không gian mà file chiếm trên đĩa, sau

đó giải phóng chỗ của file trong thư mục. Việc giải phóng không gian có thể đơn thuần là đánh dấu không gian đó như không gian tự do.

Mở file. Thao tác mở file được tiến hành trước khi đọc hoặc ghi file. Hệ điều hành căn cứ vào tên file cần mở để tìm kiếm thông tin về file chứa trong thư mục. Thực chất của việc mở file là đọc các thuộc tính của file và vị trí file trên đĩa vào bộ nhớ để tăng tốc độ cho các thao tác đọc ghi tiếp theo.

Hệ điều hành sẽ lưu trữ một bảng chứa thông tin liên quan tới các file đang được mở trong bộ nhớ. Mỗi khi cần đọc ghi các file đang mở, hệ điều hành sẽ lấy thông tin cần thiết (chẳng hạn vị trí file trên đĩa) từ bảng này chứ không phải tìm kiếm trong thư mục nữa. Lệnh mở file thường trả về con trỏ tới mục chứa thông tin về file trong bảng các file đang mở. Con trỏ này sẽ được sử dụng làm thông số cho các thao tác tiếp theo với file.

Đóng file. Sau khi hoàn thành tất cả các thao tác đọc ghi file, file cần được đóng, có nghĩa là các thông tin về file chứa trong bảng nói trên bị xoá để nhường chỗ cho các file sắp mở. Rất nhiều hệ điều hành hạn chế số lượng file có thể mở cùng một lúc, do đó, việc đóng các file đã truy cập xong là rất quan trọng.

Ghi vào file. Vị trí của file trên đĩa được xác định từ thông tin ghi trong thuộc tính của file. Thông thường, thông tin này đã đọc vào bộ nhớ khi tiến hành thao tác mở file. Dữ liệu được ghi vào vị trí hiện thời (xem phần phương pháp truy cập file). Nếu vị trí hiện thời là cuối file, thông tin sẽ được thêm vào và kích thước file tăng lên. Nếu vị trí này

Tên n Số thứ tự bản ghi An Bắc Giang File dữ liệu . . . 3 PTIT

không phải cuối file, thông tin ở vị trí đó sẽ bị ghi đè lên. Lệnh ghi file cần cung cấp thông tin cần ghi.

Đọc file. Thông tin ở vị trí hiện thời sẽ được đọc. Lệnh đọc file cần cung cấp thông tin về số lượng byte hoặc bản ghi cần đọc và nơi chứa dữ liệu được đọc từ file (ví dụ vị trí bộ đệm).

Định vị (seek). Đối với file truy cập trực tiếp, thao tác định vị cho phép xác định vị trí hiện thời để tiến hành đọc hoặc ghi.

Đọc thuộc tính của file. Một số chương trình trong quá trình làm việc cần đọc các thuộc tính của file. Ví dụ thông tin về những người có quyền truy cập file rất cần cho hệ thống bảo mật.

Thay đổi thuộc tính của file. Một số thuộc tính của file có thể được đặt lại giá trị. Thông tin về quyền truy cập file là một ví dụ thuộc tính loại này. Hệ điều hành cung cấp lời gọi hệ thống cho phép xác lập hoặc thay đổi giá trị thuộc tính đó.

Cần nói thêm về thao tác mở file. Đây là thao tác không mang tính bắt buộc khi thiết kế hệ thống file của hệ điều hành nhưng thường được thêm vào do nó giúp tăng hiệu quả thao tác vào ra với file.

Giả sử file không được mở trước khi đọc ghi. Để thực hiện mỗi thao tác đọc ghi khi đó hệ điều hành sẽ phải tìm kiếm file trong thư mục, đọc các thuộc tính của file, xác định vị trí của file trên đĩa (được lưu như một thuộc tính của file trong thư mục) sau đó mới thực hiện thao tác đọc ghi. Để tránh lặp đi lặp lại các công đoạn này, file được mở trước khi truy cập. Thao tác mở file bao gồm tìm file (theo tên file) trong thư mục, sau đó đọc một phần thông tin từ khoản mục của file vào một bảng trong bộ nhớ gọi là bảng các file đang mở (Hình ??). Các thông tin thường được đọc là tên file, quyền truy cập, chủ sở hữu file và vị trí các khối chứa nội dung file trên đĩa.

Chỉ số Tên file Chủ sở hữu file Quyền truy cập Vị trí các khối trên đĩa 0 1 .. n Mail.txt myprog.c ... r rwx ... Hình 4.2: Một ví dụ bảng các file đang mở

Sau khi đã đọc khoản mục vào bảng các file mở, thao tác mở file trả về chỉ số ứng với file trong bảng đó. Chỉ số có thể là số thứ tự của file trong bảng hoặc con trỏ tới dòng chứa thông tin về file. Chỉ số này được sử dụng làm thông số cho các thao tác đọc ghi về sau. Các hệ điều hành khác nhau gọi chỉ số bằng những tên khác nhau. Trong MS-DOS chỉ số được gọi là khối quản lý file (file control block) hoặc file handle, trong Windows NT, chỉ số cũng được gọi là file handle, trong khi đó UNIX sử dụng thuật ngữ khối mô tả file (file descriptor) cho thông số này.

Với các hệ điều hành cho phép nhiều người dùng cùng sử dụng, thao tác mở file phức tạp hơn do có thể xẩy ra trường hợp nhiều người cùng yêu cầu mở file một lúc. Trong trường hợp đó, hệ điều hành sẽ xây dựng một bảng lưu trữ các thông tin chung về file như tên, vị

trí.v.v. và xây dựng riêng cho mỗi tiến trình một bảng chứa thông tin riêng liên quan đến việc sử dụng file của tiến trình đó như vị trí hiện thời ở trong file.

Nhìn chung, mỗi file đang mở thường có các thông tin sau đi kèm:

- Con trỏ tới vị trí hiện thời trong file: dùng xác định vị trí đọc, ghi hiện thời trong file. Thông tin này đặc thù cho mỗi phiên làm việc với file và do vậy không thể lưu trữ cùng các thuộc tính khác trên đĩa.

- Vị trí file trên đĩa: giúp cho việc đọc ghi ra đĩa thực hiện nhanh hơn.

- Số tiến trình mở file. Một file có thể được nhiều tiến trình mở, số lượng tiến trình đang mở file tăng lên khi có tiến trình mới mở file và giảm khi đóng file. Khi số lượng này giảm tới không, hệ điều hành sẽ xóa thông tin về file khỏi bảng các file đang mở.

- Quyền truy cập. Mỗi file được gắn một danh sách người dùng và quyền truy cập của người dùng đó. Thông tin về quyền truy cập được sử dụng để xác định xem một yêu cầu truy cập với file có được phép hay không.

Khóa file (lock). Trong trường hợp nhiều tiến trình đồng thời thay đổi nội dung một file, việc thay đổi có thể dẫn tới kết quả không mong đợi. Để không xẩy ra tình huống này, một số hệ điều hành cho phép khóa file. Khi một tiến trình mở file, tiến trình đó có thể yêu cầu khóa file, tức là không cho các tiến trình khác truy cập. Chế độ khóa file có thể xác định với từng loại thao tác cụ thể, chẳng hạn tiến trình khác có thể đọc file bị khóa nhưng không thể ghi vào file đó.

Một phần của tài liệu Giáo trình môn Hệ Điều Hành PTIT (Trang 139)