Download miễn phí Bài giảng Lập trình xử lý đĩa và file
Bằng FDISK của HĐH ta có thể chia không gian lưu trữ của đĩa cứng thành các phần khác nhau gọi là Partition.
DOS cho phép tạo ra 3 loại Partition :
Primary Dos, Extended Dos và None Dos
Ta có thể cài đặt các HĐH khác nhau lên các Partition khác nhau.
http://cloud.liketly.com/flash/edoc/jh2i1fkjb33wa7b577g9lou48iyvfkz6-swf-2014-02-11-bai_giang_lap_trinh_xu_ly_dia_va_file.Ml21FC0J9g.swf /tai-lieu/de-tai-ung-dung-tren-liketly-58397/Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phíTóm tắt nội dung tài liệu:
LẬP TRÌNH XỬ LÝ ĐĨA&FILE CƠ BẢN VỀ LƯU TRỮ TRÊN ĐĨA TỪ. MỘT ỨNG DỤNG HIỂN THỊ SECTOR MỘT ỨNG DỤNG HIỂN THỊ CLUSTER. CÁC CHỨC NĂNG VỀ FILE Ở MỨC HỆ THỐNG. QUẢN LÝ ĐĨA VÀ THƯ MỤC. TRUY XUẤT ĐĨA VỚI INT 13H CỦA ROMBIOS BÀI TẬP GiỚI THIỆU FILE VÀ LẬP TRÌNH XỬ LÝ FILE CƠ BẢN VỀ LƯU TRỮ TRÊN ĐĨA TỪ Ngôn ngữ ASM vượt trội hơn các ngôn ngữ khác về khả năng xử lý đĩa. Ta xem xét việc lưu trữ thông tin trên đĩa theo 2 mức độ : mức phần cứng/BIOS và mức phần mềm/DOS. mức phần cứng :lưu trữ thông tin liên quan đến cách dữ liệu được lưu trữ 1 cách vật lý như thế nào trên đĩa từ? mức phần mềm : việc lưu trữ được quản lý bởi tiện ích quản lý File của HĐH DOS. CÁC ĐẶC TÍNH LUẬN LÝ & VẬT LÝ CỦA ĐĨA TỪ Ở mức vật lý : đĩa được tổ chức thành các Tracks, Cylinders, Sectors. Khả năng lưu trữ của đĩa được mô tả bằng 3 thông sô : C (cylinder number) H (Head side) R (sector number) CÁC KHÁI NIỆM TRACK, CYLINDER, SECTOR Tracks : là các vòng tròn đồng tâm được tạo ra trên bề mặt đĩa. Cylinder : tập các tracks cùng bán kính trên 1 chồng đĩa. Mặt đĩa có bao nhiêu track thì sẽ có bấy nhiêu Cylinder. Sector : là 1 đọan của track (cung từ) có khả năng lưu trữ 512 bytes dữ liệu. Các sector được đánh số bắt đầu từ 1 trên mỗi track trên 1 đĩa tồn tại nhiều sector cùng số hiệu. Cluster : là 1 nhóm gồm 2,4,6 các sector kề nhau. Đó chính là đơn vị cấp phát vùng lưu trữ cho dữ liệu (file). Các cluster được đánh số bắt đầu từ 0. Ở mức luận lý : đĩa được tổ chức thành các Clusters, các files mà DOS sẽ dùng để cấp phát vùng lưu trữ cho dữ liệu cần lưu trữ. Nếu dữ liệu cần lưu trữ chỉ 1 byte thì hệ điều hành cũng cấp phát 1 cluster. số bytes/cluster hay sector/cluster tùy thuộc vào từng loại đĩa. TƯƠNG QUAN GIỮA SECTOR VẬT LÝ VÀ SECTOR LOGIC TRÊN ĐĨA MỀM Trên bề mặt đĩa có thể tồn tại các sector mà HĐH không thể ghi dữ liệu vào đó hay không thể đọc dữ liệu từ đó. Các sector này gọi là Bad Sector. Kiểm tra giá trị của các phần tử (entry) trong bảng FAT, phần tử nào chứa giá trị (F)FF7H thì cluster tương ứng bị Bad Làm sao biết sector nào là bad sector BAD SECTOR DOS quản lý các File nhờ vào 1 bảng gọi là bảng FAT. Trong bảng FAT có ghi cluster bắt đầu của File này ở đâu ? Và đĩa còn bao nhiêu Clusters trống chưa cấp phát. Boot record Bảng FAT1 Bảng FAT2 Root directory data tổ chức luận lý của đĩa được mô tả như hình sau : BẢNG FAT FILE ALLOCATION TABLE Thí dụ về bảng FAT Đĩa mềm 3.5”” 360K thì : Sector 0 : boot sector Sector 1-4 : bảng FAT Sector 5 – 11 : thư mục gốc Sector 12-719 : vùng chứa data Còn được gọi là Boot Sector. Ổ đĩa cứng gọi là Master boot, là Sector đầu tiên khi đĩa được format. chứa 1 chương trình nhỏ cho biết dạng lưu trữ trên đĩa và tên hệ thống MT, kiểm tra xem có các file hệ thống IO.SYS, MSDOS.SYS, COMMAND.COM hay không ? nếu có thì nạp chúng vào bộ nhớ (gọi là chương trình mồi của HĐH) BOOT RECORD BOOT RECORD (tt) Tọa độ vật lý : C=0, H=0, R =1 (C0H0R1) tức ở tại sector đầu tiên của track đầu tiên, mặt trên của đĩa đầu tiên trong ổ đĩa cứng. Trong Master boot có chứa bảng PARTITION TABLE cho biết tầm địa chỉ vật lý (dung lượng) của ổ đĩa luận lý. Master boot không thuộc Partition nào BOOT RECORD (tt) BOOT RECORD được ROM BIOS nạp vào địa chỉ 0000:7C00H. Nếu máy không bị Virus thì lệnh đầu tiên của chương trình BOOT là JMP 7C3EH, nghĩa là nhảy đến chương trình nạp mồi. chương trình nạp mồi (Bootstrap Loader) nạp thành phần cốt lõi của DOS lên RAM trong quá trình khởi động MT. THÔNG TIN TRONG MASTER BOOT BYTEBĐẦU SỐ BYTES THÔNG TIN THÔNG TIN TRONG MASTER BOOT BYTE BĐẦU SỐ BYTES THÔNG TIN THÔNG TIN TRONG MASTER BOOT BYTE BĐẦU SỐ BYTES THÔNG TIN THÔNG TIN TRONG MASTER BOOT Từ thông tin trong bảng FORMAT, ta tính được địa chỉ của bảng FAT1, FAT2, Thư mục gốc ổ đĩa, địa chỉ bắt đầu của vùng dữ liệu. BẢNG FAT Bảng chứa các danh sách liên kết các clusters. Mỗi danh sách trong bảng cho DOS biết rằng các clusters nào đã cấp phát, các clusters nào chưa dùng. tùy theo ổ đĩa có thể có 1 hay 2 bảng FAT, bảng FAT2 để dự phỏng. có 2 loại bảng FAT : bảng có Entry 12 bit cho đĩa mềm. bảng có Entry 16 bit cho đĩa cứng. PARTITON TABLE 64 Bytes của Partiton table được chia làm 4, mỗi phần 16 bytes mô tả cho 1 partition các thông tin sau : Bytes Mô tả 00H active flag (=0 Non bootable =80H Bootable) 01H starting head – Nơi bắt đầu Partittion 02H starting cylinder Bằng FDISK của HĐH ta có thể chia không gian lưu trữ của đĩa cứng thành các phần khác nhau gọi là Partition. DOS cho phép tạo ra 3 loại Partition : Primary Dos, Extended Dos và None Dos Ta có thể cài đặt các HĐH khác nhau lên các Partition khác nhau. PARTION TABLE PARTITON TABLE 03H starting sector 04H parttition type : 0 Non Dos 1 cho đĩa nhỏ 12 bit FAT Entry 4 cho đĩa lớn 16 bit FAT Entry 5 Extended Dos 05H Ending nơi kết thúc Partition 06H Ending Cylinder 07H Ending Sector 08H, 0BH Starting sector for partition 0Ch,0FH Partition length in sectors Một số thí dụ kiểm tra Partition Active đọc sector đầu tiên của đĩa cứng lưu vào biến. kiểm tra offset 00 của 4 phần tử Partition trong Partition Table MOV CX, 4 MOV SI, 1BEH PACTIVE : MOV AL, MBOOT [SI] CMP AL, 80H JE ACTIVE ADD SI, 16 LOOP PACTIVE NO_ACTIVE : ………………. ACTIVE : ………….. Một số thí dụ Đọc nội dung của BootSector ghi vào biến dem đọc sector đầu tiên của đĩa cứng lưu vào buffer. tìm partition active (phần tử trong bảng partition có offset 80h) đọc byte tại offset 01h và word tại offset 02h của phần tử partition tương ứng ở trên (head, sector, cylinder) để xác định số hiệu bắt đầu của partition active boot sector của đĩa cứng. đọc nội dung của sector đọc được ở trên lưu vào buffer. Một số thí dụ ACTIVE : MOV AX, 0201H ; đọc 1 sector MOV CX, WORD PTR MBOOT [SI+2] ; sector cylinder MOV DH, BYTE PTR MBOOT[SI+1] ; head MOV DL, 80H ; đĩa cứng MOV ES, CS ; trỏ về đầu vùng buffer lưu LEA BX, BUFFER INT 13H THƯ MỤC GỐC (ROOT DIRECTORY) Là danh sách tất cả các Files đã có trên đĩa, các thư mục cấp 1 đã có. Mỗi phần tử (32 bytes) trong bảng thư mục sẽ chứa thông tin về tên file hay là thư mục, kích thước, thuộc tính, cluster bắt đầu của file này hay cluster bắt đầu của thư mục thứ cấp (thư mục con). mỗi bảng thư mục chứa tối đa 112 entry, mỗi entry là 32 bytes. THƯ MỤC GỐC (ROOT DIRECTORY) Offset Nội dung Kích thước 00H tên chính của File 8 bytes 08H phần mở rộng của tên file 3 bytes 0BH thuộc tính của File 1 byte 0CH dự trữ 10 bytes 16H giờ thay đổi thông tin cuối cùng 2 bytes 18H ngày thay đổi thông tin cuối cùng 2 bytes 1Ah cluster đầu tiên của File 2 bytes 1CH Kích thước File 4bytes BYTE THUỘC TÍNH x : không sử dụng a : thuộc tính lưu trữ (Archive) d : thuộc tính thư mục con (Sub – Directory) v : thuộc tính nhãn đĩa (Volume) s : thuộc tính hệ thống (System) h : thuộc tính ẩn (Hidden) r : thuộc tính chỉ đọc (Read Only) VÙNG LƯU TRỮ là vùng dành cho việc lưu trữ dữ liệu. như vậy việc lưu trữ dữ liệu trên đĩa có cấu trúc là 1 danh sách liên kết mà bảng thư mục gốc là đầu của danh sách liên kết. đầu mỗi cluster luôn luôn chứa địa chỉ của cluster sau nó cho biết phần còn lại của file là cluster nào. Nếu giá trị này là 0 thì cluster này là cluster cuối cùng. SỰ PHÂN VÙNG TRÊN ĐĨA CLUSTERS SYSTEM AREA DATA AREA CÁC LOẠI ĐĨA Disk sides track sectors total cluster total Type per per sector size bytes side track 360K 2 40 9...