Tải bản đầy đủ (.pptx) (29 trang)

Báo cáo bài tập lớn môn CSLT2 Vấn đề tổ chức của một đĩa mềm & Các hàm liên quan đến việc đọc-ghi đĩa

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.06 MB, 29 trang )

LOGO
Báo cáo BTL môn CSLT2
Vấn đề tổ chức của một đĩa mềm
&
Các hàm liên quan đến việc đọc-ghi đĩa
GVHD & Sinh viên thực hiện
GVHD: Nguyễn Trần Thi Văn
Sinh viên thực hiện:
Nguyễn Phú Cường
Vũ Minh Hải
Phan Đức Linh
Nguyễn Kim Sơn
Đỗ Đăng Trường
Nội dung chính
1. Một số khái niệm căn bản về đĩa
1. Track
2. Sector
3. Cluster
4. Cylinder
5. Boot sector
6. FAT
Nội dung chính
2. Tìm hiểu một số hàm đọc ghi đĩa
trong DOS.H
1. Hàm absread
2. Hàm abswrite
3. Hàm getfat & getfatd
4. Hàm handler & harderr
Nội dung chính
3. Demo
1. Format nhanh đĩa mềm


2. Ghi file lên đĩa A
3. Đọc file từ thư mục gốc đĩa A
1. Một số khái niệm căn bản
DISK
TRACK
SECTOR
SIDE
1. Một số khái niệm căn bản

Là những đường tròn đồng tâm trên mặt
đĩa dùng để lưu dữ liệu.

1 track có thể lưu được 100,000 bytes
dữ liệu hoặc hơn.

Được đánh số từ ngoài vào trong theo
thứ tự 0 -> n.
TRACK
1. Một số khái niệm căn bản

Là 1 phần nhỏ của track, là vùng vật lý
chứa dữ liệu nhỏ nhất trong ổ cứng.

Trên mỗi loại đĩa khác nhau thì số lượng
sector được chia trên 1 track cũng khác
nhau.

Thông thường thì 1 sector chứa được
512 bytes dữ liệu.


Được đánh số thứ tự từ 1 -> n.
SECTOR
1. Một số khái niệm căn bản

Là đơn vị lưu trữ cơ bản được chỉ định
của đĩa từ.

Bao gồm 1 hoặc nhiều sector nằm liền
nhau trên 1 track.

Số lượng sector trên 1 cluster tùy vào hệ
điều hành áp đặt cho từng loại đĩa có
dung lượng thích hợp.
CLUSTER
1. Một số khái niệm căn bản

Không gian lưu trữ của đĩa được xác định
dựa trên những cluster, nghĩa là khi 1
file (hoặc một phần của file) chỉ chiếm
dụng một phần hoặc toàn bộ không gian
của cluster thì điều đó cũng được coi là
đã sử dụng một phần không gian của đĩa,
tức là đã sử dụng hết 1 cluster.
CLUSTER
1. Một số khái niệm căn bản

Gây lãng phí không gian trên đĩa, nhưng
giúp hệ điều hành quản lý không gian đĩa
tốt hơn.
CLUSTER

1. Một số khái niệm căn bản

2 track đối xứng ở 2 mặt của đĩa gọi là
1 cylinder.

Đầu đọc đọc-ghi dữ liệu ở 2 track đối
xứng này trước khi chuyển tới track tiếp
theo.

Được đánh số thứ tự theo thứ tự của
track, nghĩa là những track 0 hợp thành
cylinder 0.
CYLINDER
1. Một số khái niệm căn bản

Là 1 sector đặc biệt nằm ở đầu mỗi phân
vùng ổ đĩa, nó chứa các thông tin hoạt
động của phân vùng tương ứng(độ lớn,
sector bắt đầu và kết thúc phân vùng, …)
và các chương trình cần hệ điều hành
nạp vào máy.
BOOT SECTOR
1. Một số khái niệm căn bản

Boot sector nắm vai trò quan trọng trong
quá trình khởi động máy, nên thường
được BIOS bảo vệ rất nghiêm ngặt.

Là nơi dễ bị các loại boot-virus tấn công
phá hoại ổ đĩa, bằng cách chỉnh sửa lại

nội dung của sector này.
BOOT SECTOR
1. Một số khái niệm căn bản

Với đĩa mềm thì boot sector luôn là sector
đầu tiên của đĩa. Những thông tin ở
sector đầu tiên này được gọi là Master
boot record – MBR.
BOOT SECTOR
1. Một số khái niệm căn bản

Là bảng định vị các files trên đĩa, bảng
này liệt kê tuần tự số thứ tự của các
cluster dành cho file lưu trú trên đĩa.

Mỗi đĩa có 2 bảng FAT giống hệt nhau.
FAT thứ nhất bắt đầu ngay sau Boot
Sector và chiếm dụng nhiều sector tiếp
theo, FAT thứ 2 để lưu đề phòng sự cố
nằm tiếp theo sau FAT thứ nhất.
FAT(File Allocation Table)
1. Một số khái niệm căn bản

Hiện tại có 3 loại FAT:

FAT 12 dành cho đĩa mềm hoặc đĩa cứng có
dung lượng rất bé.

FAT 16 dành cho đĩa cứng có dung lượng từ
1GB trở xuống.


FAT 32 dành cho đĩa cứng có dung lượng từ
vài GB trở lên.
FAT(File Allocation Table)
1. Một số khái niệm căn bản

Độ dài của mối phần tử của FAT được tính
bằng số bit. Độ dài này biểu thị khả năng
chỉ thị số đếm của phần tử FAT.

Với các đĩa mềm, số lượng các cluster là
nhỏ nên chỉ cần 12 bit đủ để chỉ thị số
đếm này vì vậy các đĩa mềm dùng FAT 12
bit.
FAT(File Allocation Table)
2. Một số hàm đọc ghi đĩa

Absread() sử dụng lệnh ngắt 0x25 để đọc
những sector đặc trưng của đĩa, nó sẽ bỏ
qua những cấu trúc logic của đĩa và khi
thực hiện nó không chú ý tới những File,
FAT hoặc những thư mục…
ABSREAD
2. Một số hàm đọc ghi đĩa

Cú pháp:
int absread(int driver, int nsects, long lect, void *buffer);

Driver: số thứ tự của ổ đĩa cần đọc


Nsects: số lượng sector cần đọc

Lsect: sector bắt đầu

Buffer: địa chỉ nơi lưu các giá trị đọc được
ABSREAD
2. Một số hàm đọc ghi đĩa

Công dụng:
Đọc dữ liệu của nsects sectors, bắt đầu từ
sector lect từ đĩa vào vùng nhớ buffer
Nếu thành công thì trả về giá trị 0, trả về
giá trị 1 nếu bị lỗi
ABSREAD
2. Một số hàm đọc ghi đĩa

Abswrite() là hàm ghi đặc trưng của
những cung từ đĩa,nó sẽ bỏ qua những
cấu trúc logic của môt đĩa và khi thực
hiện nó không chú ý tới những File, FAT
(bảng phân bố tệp), hoặc những thư
mục…, nó sử dụng hệ điều hành DOS
gián đoạn 0x26 dùng để ghi những sector
đặc trưng của đĩa.
ABSWRITE
2. Một số hàm đọc ghi đĩa

Cú pháp:
int abswrite(int driver, int nsects, long lect, void *buffer);


Driver: số thứ tự của ổ đĩa cần ghi

Nsects: số lượng sector cần ghi

Lsect: sector bắt đầu

Buffer: địa chỉ nơi lưu các giá trị để ghi
ABSWRITE
2. Một số hàm đọc ghi đĩa

Công dụng:
Ghi dữ liệu từ vùng nhớ buffer vào nsects
sectors của đĩa, bắt đầu từ sector lect.
Nếu thành công, trả về giá trị 0, ngược lại,
trả về -1
ABSWRITE
2. Một số hàm đọc ghi đĩa

Cú pháp:
void getfat (unsigned char drive, struct fatinfo *dtable);
Drive: đĩa mà hàm getfat lấy thông tin từ bảng
FAT(0 = default, 1 = A, 2 = B, etc.).
Dtable: trỏ đến cấu trúc fatinfo để điền thông tin
vào đó.
GETFAT & GETFATD

×