(Tiểu luận) báo cáo bài tâp lớn môn hệ điều hành đề tài tìm hiểu về file system

45 10 0
(Tiểu luận) báo cáo bài tâp lớn môn hệ điều hành đề tài tìm hiểu về file system

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG ĐIỆN – ĐIỆN TỬ BÁO CÁO BÀI TÂP LỚN MÔN HỆ ĐIỀU HÀNH ĐỀ TÀI: TÌM HIỂU VỀ FILE SYSTEM GIÁO VIÊN HƯỚNG DẪN: TS NGUYỄN THANH BÌNH Mã lớp: 137325 NHĨM 11 Sinh viên thực MSSV Đỗ Kim Hoàn 20192862 Hoàng Minh Đức 2019770 Trần Quang Linh 20192972 h Mục lục No table of contents entries found h DANH MỤC HÌNH VẼ VÀ BẢNG BIỂU I Hình ảnh h PHÂN CÔNG CÔNG VIỆC Tên Phần việc Đỗ Kim Hoàn - File; - File System; - Hệ thống FAT Hoàng Minh Đức - File Directory; - Tổ chức thông tin đĩa từ Trần Quang Linh - File System Setting: + Cài đặt cho cách quản lý file phân bổ vùng nhớ + Các cách truy nhập file hệ thống File; h LỜI NÓI ĐẦU Nếu nói hệ điều hành, tất chức hệ điều hành hệ thống file quan trọng nhất, nghĩa hệ điều hành quản lý file Nếu nói Windows, có hệ thống file NTFS, trước có hệ điều hành DOS có hệ thống file dos, nói Unix có hệ thống tệp Unix, nói LINUX có hệ thống tệp mở rộng, thời đại ngày nay, nói liệu lớn có hệ thống tệp ZFS Có nghĩa nói hệ điều hành kernel hệ điều hành có module file system File system phần cứng hay phần mềm? File system phần mềm nằm hệ điều hành nghĩa quản lý hệ điều hành Một file máy tính sử dụng lưu trữ RAM hay Cache loại nhớ hoàn toàn hết liệu máy tính khơng cịn hoạt động Vậy để đóng máy tính mở lên mà có liệu loại nhớ khác sinh gọi nhớ lưu trữ vĩnh viễn hay gọi ổ cứng (hard disk), ví dụ SSD, HDD, file system lấy liệu từ ổ cứng để sử dụng User sử dụng file để xem thông tin liệu mình, file nằm Foler Windows, Directory Linux tất chúng quản lý File System User xem foler/directory mà không xem chúng quản lý File System Khi có file liệu cần lưu trữ vào máy, file system chia nhỏ chúng thành block từ block chúng ánh xạ tới địa ổ cứng Công việc xử lý file system, file system có vai trị lưu trữ liệu, tìm kiếm truy xuất liệu h I File system Tổng quan file system 1.1 Vai trò File system phần hệ điều hành chịu trách nhiệm quản lý tệp. Nó cung cấp chế để lưu trữ liệu truy cập vào nội dung tệp bao gồm liệu chương trình. Một số Hệ điều hành coi thứ tệp, ví dụ Ubuntu File system xử lý vấn đề sau  File Structure: Chúng thấy cấu trúc liệu khác tệp lưu trữ. Nhiệm vụ hệ thống tệp trì cấu trúc tệp tối ưu  Recovering Free space: Bất tệp bị xóa khỏi đĩa cứng, có dung lượng trống tạo đĩa. Có thể có nhiều khoảng trống cần khôi phục để phân bổ lại chúng cho tệp khác  disk space assignment to the files: Mối quan tâm tệp định nơi lưu trữ tệp đĩa cứng. Có nhiều thuật toán lập lịch đĩa khác đề cập sau hướng dẫn  Tracking data location: Một tệp khơng thể lưu trữ khối. Nó lưu trữ khối không liền kề đĩa. Chúng cần theo dõi tất khối chứa phần tệp 1.2 File System Structure  File system cung cấp quyền truy cập hiệu vào đĩa cách cho phép liệu lưu trữ, định vị truy xuất cách thuận tiện. Một file sytsem phải có khả lưu trữ tệp, định vị tệp truy xuất tệp  Hầu hết Hệ điều hành sử dụng phương pháp phân lớp cho tác vụ bao gồm file system. Mỗi lớp file system chịu trách nhiệm cho số hoạt động  Hình ảnh hiển thị bên mô tả chi tiết cách hệ thống tệp chia thành lớp khác chức lớp h Hình 7: Các lớp file system  Khi chương trình ứng dụng yêu cầu tệp, yêu cầu chuyển đến file system logic. File system logic chứa liệu Meta cấu trúc tệp thư mục. Nếu chương trình ứng dụng khơng có quyền cần thiết tệp lớp báo lỗi. Các file system hợp lý xác minh đường dẫn đến tệp  Nói chung, tệp chia thành khối logic khác nhau. Các tệp lưu trữ đĩa cứng truy xuất từ đĩa cứng. Đĩa cứng chia thành track sector khác nhau. Do đó, để lưu trữ truy xuất tệp, khối logic cần ánh xạ tới khối vật lý. Việc ánh xạ thực Mơ-đun tổ chức tệp. Nó chịu trách nhiệm quản lý không gian trống  Khi mô-đun tổ chức tệp định khối vật lý mà chương trình ứng dụng cần, chuyển thơng tin đến file system bản. File system chịu trách nhiệm đưa lệnh tới điều khiển I/O để tìm nạp khối  Các điều khiển I/O chứa mã cách sử dụng mà truy cập đĩa cứng. Các mã gọi trình điều khiển thiết bị. Các điều khiển I/O chịu trách nhiệm xử lý ngắt Tổ chức thông tin đĩa từ 2.1 Cấu trúc vật lý đĩa từ  Mặt đĩa từ (magnetic disk): Dùng để lưu trữ thơng tin Thơng tin lưu trữ hai mặt khác  Hai lớp bảo vệ mặt đĩa (woven liner) h  Lớp vỏ cứng bên bảo vệ đĩa 2.2 Mặt đĩa từ  Thông tin lưu đĩa từ hai mặt mặt mặt hay mặt mặt  Mỗi mặt đọc với đầu đọc ghi (header) khác Cho nên người ta đồng mặt đĩa với số hiệu đầu đọc ghi: đầu từ mặt đầu từ mặt  Dữ liệu lưu trữ đĩa vòng tròn đồng tâm hay gọi “rãnh đĩa (track)” Các rãnh đĩa đánh số: 0, 1, 2, … từ vào  Trong vòng tròn đồng tâm, chia cung từ hay gọi sector Các Sector đánh số: 1, 2, 3, … Một sector đĩa xác định toạ độ chiều: (mặt đĩa; rãnh đĩa; số hiệu vector rãnh đĩa) h 2.3 Sector  Sector đơn vị thông tin hệ thống máy tính dung để làm việc với đĩa từ Sector xác định qua tọa độ chiều: Header, Track, Sector Ví dụ: Boot Sector cıa đĩa mềm: Sector  Sector xác định qua số hiệu sector (tọa độ chiều) o Vị trí tương đối so với sector đĩa, ví dụ: Sector đĩa (mặt 0, rãnh 0, sector thứ nhất) có số hiệu #0, tương tự có số hiệu #1, … o Đối với mặt 1, số hiệu #8 (số hiệu lớn tương ứng mặt 0) giảm dần #0 Ví dụ #8 2.4 Cấu trúc vật lý đĩa cứng  Gồm nhiều mặt đĩa đánh số từ 0,1…  Các rãnh bán kính tạo lên cylinder, đánh số từ 0,1,…  Các sector mặt cylinder đánh số từ 1,2,… h  Định vị thông tin theo tạo độ chiều (Header, Cylinder, Sector) hay (H, C, S) Ngồi định vị theo toạ độ chiều số hiệu sector với đĩa từ; Sector – Header – Cylinder 2.5 Truy nhập sector  Máy tính làm việc với đĩa theo đơn vị Sector Ta truy cập tới sector thiết bị lưu trữ đọc/ghi/format/… Sector  Truy nhập sử dụng ngắt BIOS 13h ví dụ chức để đọc, chức để ghi chức để format Lúc sector xác định qua toạ độ chiều Với cách ta phụ thuộc hệ điều hành  Truy nhập sử dụng lời gọi hệ thống ngắt hệ thống, ví dụ hệ thống MSDOS có ngắt 25h/26h cho phép đọc/ghi sector theo địa tuyến tính Hoặc hàm WIN32 API ReadFile(), CreateFile(), WriteFile(), …  Ví dụ: Sử dụng WIN32 API h  Sử dụng “mkfs.fat” để khởi tạo file system, “- F 12” đại diện cho FAT12 file system:  Tiếp theo, đưa phần bootloader vào sector floppy disk, tiếp tục sử dụng lệnh “dd”, “conv=not trunc” có tác dụng ngăn việc bị phần lại ảnh đĩa hay Disk Image File (file ISO): Chỗ lại liên quan đến thông tin file ISO, ơng xem vid2 phút 7:07 để dịch xác với cân nhắc có nên nhắc đến file ISO ko Với file system khởi tạo trên, cần copy file vào file ảnh đĩa Sử dụng “mtool” để thao tác với FAT file ảnh đĩa: Nhưng trước hết, cần thiết phải thêm Header cho Bootloader, FAT12 yêu cần số phần Header quan trọng mà bootloader cần biết để truy cập Để tìm giá trị Header, tạo file ảnh đĩa tên “test.img” “Makefile” với bước tương tự Sau đỏ mở ‘test file’ với “Hex editor” 30 h Đoạn Hex editor cho vào khơng bỏ nói phần khai báo Tại “boot.asm”, thêm giá trị Header Bảng chúng em tham khảo từ wiki giá trị Header FAT12: Offset (decimal) (hex) Size Offset 0x00 (in Meaning bytes) The first three bytes EB 3C 90 disassemble to JMP SHORT 3C NOP (The 3C value may be different.) The reason for this is to jump over the disk format information (the BPB and EBPB) Since the first sector of the disk is loaded into ram at location 0x0000:0x7c00 and executed, without this jump, the processor would attempt to execute data that isn't code Even for non-bootable 31 h volumes, code matching this pattern (or using the E9 jump opcode) is required to be present by both Windows and OS X To fulfil this requirement, an infinite loop can be placed here with the bytes EB FE 90 OEM identifier The first Bytes (3 - 10) is the version of DOS being used The next eight Bytes 29 3A 63 7E 2D 49 48 and 43 read out the name of the version The official FAT Specification from Microsoft says that this field is really meaningless and is ignored by MS FAT Drivers, however 0x03 it "MSWIN4.1" does as recommend some 3rd the party value drivers supposedly check it and expect it to have that value Older versions of dos also report MSDOS5.1, linux-formatted floppy will likely to carry "mkdosfs" here, and FreeDOS formatted disks have been observed to have "FRDOS5.1" here If the string is less than bytes, it is padded with spaces 11 0x0B 13 0x0D 14 0x0E The number of Bytes per sector (remember, all numbers are in the little-endian format) Number of sectors per cluster Number of reserved sectors The boot record sectors are included in this value 32 h 16 0x10 17 0x11 Number of File Allocation Tables (FAT's) on the storage media Often this value is Number of root directory entries (must be set so that the root directory occupies entire sectors) The total sectors in the logical volume If this 19 0x13 value is 0, it means there are more than 65535 sectors in the volume, and the actual count is stored in the Large Sector Count entry at 0x20 21 0x15 This Byte indicates the media descriptor type 22 0x16 Number of sectors per FAT FAT12/FAT16 only 24 0x18 Number of sectors per track 26 0x1A Number of heads or sides on the storage media 28 0x1C Number of hidden sectors (i.e the LBA of the beginning of the partition.) Large sector count This field is set if there are 32 0x20 more than 65535 sectors in the volume, resulting in a value which does not fit in the Number of Sectors entry at 0x13  Khởi tạo Header 33 h Kết quả: Tất header thêm file system copy vào file ảnh đĩa  Kiểm tra kernel có chạy hay khơng lệnh “mdir” cho kết có chạy Để đọc ghi sữ liệu ổ đĩa, cần số hiệu sector, số hiệu cylinder số đầu đọc ghi hay CHS phần I trình bày Tuy nhiên, địa vật lí Trong làm việc với ổ đĩa, địa vật lý không quan trọng việc liệu lưu đầu , hay cuối ổ đĩa Bằng cách sử dụng LBA (logical block address), thay cần tham số địa vật lí, cần tham số để xác 34 h định vị trí khối ổ đĩa Với hàm BIOS viết trên, hỗ trợ CHS nên cần thuật toán để chuyển đổi LBA CHS: Code cho phần chuyển đổi LBA sang CHS: Tham số đầu vào LBA lưu ghi ax Kết đầu số hiệu sector lưu ghi cx (bit 0-5); số hiệu cylinder lưu ghi cx (bit – 15); số đầu đọc lưu dh Giải thích: Đầu tiên làm trống ghi dx ‘xor’ Sử dụng div chia ‘word’ cho số sector track thương lưu ax dư lưu dx Theo 35 h công thức chuyển đổi, tăng dx lên ‘inc’ copy giá trị sang cx, thu số hiệu sector Tiếp theo, làm trống dx xor Tương tự dùng div để chia lấy thương số dư sau Thương lưu ax số hiệu cylinder số dư lưu dx số hiệu đầu đọc ghi Copy giá trị bit thấp dl vào bit cao dh để dh lưu số hiệu đầu đọc ghi copy liệu từ bit thấp al sang bit cao ch Dịch trái bit ah shl sau dùng or để sổ hiệu cylinder lưu ghi cx (bit 6-15) Lưu giá trị ax dx cách push lên stack, sau restore chúng Đọc liệu từ ổ đĩa: Push cx để tạm thời lưu giá trị số sector để đọc vào stack Sau gọi hàm chuyển đổi LBA sang CHS viết Theo hình ảnh bên dưới, cần khai báo thêm ah 02h số sector để đọc vào al 36 h  Khai báo sau:  Đọc liệu từ ổ đĩa BIOS cần phải thực lần Vòng lặp sau: 37 h  Khi lỗi xảy ra, reset disk controller sử dụng ngắt 13h:  Khi khơng có lỗi xảy ra, nhảy đến nhãn done từ vòng lặp: 38 h  Đọc thử sector thứ đĩa:  Kết đọc F0 FF FF FF 0F: Trùng với Sector 2: Vậy đọc liệu sector từ ổ đĩa BIOS!! 2.2.2 Xây dựng FAT file system Base OS 2.2.2.1 Mơ q trình đọc Disk Image FAT  Tạo ảnh đĩa (disk image) đọc file thư mục gốc lấy tên ‘test.txt’  Đầu tiên tìm vị trí thư mục gốc đâu vùng bắt đầu Hai vùng đầu vùng dành riêng cho hệ thống FAT, tính tốn kích thước hai vùng biết vị trí vùng thư 39 h mục gốc ổ đĩa  Tiếp theo tính kích thước vùng ‘Reserved’ (lưu trữ) vùng ‘File allocation tables’ (bảng cấp phát)  Sau cần tính kích thước vùng ‘Root directory’ (Thư mục gốc) để biết cần đọc tìm kiếm đến dừng lại 40 h Ở theo thơng số kĩ thuật hệ thống ví dụ ‘Dir entry’ 32 bytes Khi lấy số byte ‘Dir entry’ nhân với số lượng ‘Dir entry’ chia cho số byte cho sector (Byte per sector) ta số sector mà ta cần đọc Trong trường hợp số sector cần đọc tính số thập phân ta lấy phần nguyên kết cộng thêm Để tránh trường hợp số sector cần đọc số thập phân ta có cộng thêm số byte cho sector trừ trước chia cho số byte sector Bây ta tính vị trí thư mục gốc, cần đọc từ đĩa vào nhớ 2.2.2.2 Mô với ngôn ngữ C Chúng ta mơ C để hiểu rõ bước, sau viết lại ASM Đầu tiên cần viết hàm main để tạo chức cho FAT file system, với tham số truyền vào disk image tên file mà muốn đọc Hàm sau viết file ‘fat.c’ để thư mực với Nanobyte OS ta build phần 41 h Sau đó, ta phải tích hợp ‘fat.c’ vào file Makefile Tiếp theo đọc khu vực boot sector đặt vào cấu trúc liệu Tạo struc có tên ‘BootSector’ lấy thuộc tính từ ‘Boot loader’ 42 h  Sau đó, khởi tạo chức để đọc ‘BootSector’ từ đĩa lưu trữ liệu vào biến tồn cục Để tránh việc trình biên dịch thêm byte đệm vào cấu trúc liệu làm cho ‘BootSector’ khơng tương thích với liệu có đĩa ta thêm ‘_attrribute_’ vào trước cấu trúc ‘BootSector’ đóng gói Sau tiến hành đọc ‘BootSector’ tiến hành 43 h Tài liệu tham khảo - INT 13h: https://www.stanislavs.org/helppc/int - x86 instruction reference: https://c9x.me/x86/ - CHS addressing: https://en.wikipedia.org/wiki/Cylinde - CHS to LBA conversion: https://en.wikipedia.org/wiki/Logical - FAT12 file system: https://wiki.osdev.org/FAT 44 h

Ngày đăng: 04/04/2023, 09:35

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan