Bài giảng Hệ điều hành - Chương 4: Hệ thống quản lý tập tin

Các khái niệm tập tin- thư mục

Mô hình quản lý và tổ chức tập tin

Các chức năng hệ thống tập tin

Cài đặt hệ thống tập tin

Hệ thống tập tin hệ điều hành MS-DOS

Hệ thống tập tin hệ điều hành Unix

 

ppt52 trang | Chia sẻ: hienduc166 | Lượt xem: 1070 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Hệ điều hành - Chương 4: Hệ thống quản lý tập tin, để xem tài liệu hoàn chỉnh bạn click vào nút TẢI VỀ ở trên
g tin sau:0: Entry này còn trống. : Thư mục cha0E5 : Entry của tập tin này tạm thời bị xóaKý tự bất kỳ : tên của một tập tinDiễn dải byte thuộc tính:1: tập tin ẩn1: tập tin chỉ đọc1: tập tin hệ thống1: Nhãn đĩa1: Thư mục con1: lưu trữHệ thống tập tin HĐH MSDOS (tt)Diễn dải ngày tạo, giờ tạo7bit: năm	4bit : tháng	5bit: ngày5bit: Giờ	6bit : Phút	5bit: giâyHệ thống tập tin HĐH MSDOS(tt)Cấu trúc dữ liệu cài đặt:Bảng tham số đĩaTypedef struct {	unsigned char 	JMP[3];	 unsigned char 	Ver[8];	 unsigned 	SecSiz;	 unsigned char	ClustSiz;	 unsigned 	ResSec;	 unsigned char 	FatCnt;	 unsigned 	RootSiz;	 unsigned 	TotSec;	 unsigned char	Media;	 unsigned 	FatSiz;	 unsigned 	TrkSec;	 unsigned 	HeadCnt;	 unsigned 	HidSec;	}EntryBPB;Hệ thống tập tin HĐH MSDOS(tt)Bảng tham số đĩa	typedef union {	 unsigned char 	Sector[512];	 EntryBPB	Entry;	}UnionBPB JMPVerSecSizClustSiz.MSDOS6.0	512	1UnionBpBHệ thống tập tin HĐH MSDOS(tt)Cấu trúc dữ liệu cài đặt:Cấu trúc ngày thángtypedef struct {	 unsigned 	S: 5 ;	unsigned	M: 6 ;	unsigned	H:5;	}Time;typedef union {	 unsigned 	intTime;	Time	T ;	}UnionTime;Hệ thống tập tin HĐH MSDOS(tt)Cấu trúc dữ liệu cài đặt:Cấu trúc ngày thángtypedef struct {	 unsigned 	D: 5 ;	unsigned	M: 6 ;	unsigned	H:7;	}Date;typedef union {	 unsigned 	intDate;	Date	Day ;	}UnionDate;Hệ thống tập tin HĐH MSDOS(tt)Cấu trúc dữ liệu cài đặt:Cấu trúc byte thuộc tính tập tintypedef struct {	 unsigned char 	ReadOnly: 1 ;	 unsigned char 	Hidden : 1 ; 	unsigned char 	System	 : 1 ;	unsigned char 	Volume	 : 1 ;	unsigned char 	SubDir 	 : 1 ;	unsigned char 	Archive 	 : 1 ;	 unsigned char 	DR	 : 2 ;	}Attrib;typedef union {	 unsigned char 	charAtt;	 Attrib	Attr ;	}UnionAttrib;Hệ thống tập tin HĐH MSDOS(tt)Cấu trúc dữ liệu cài đặt:Cấu trúc một Entry tập tintypedef struct {	 unsigned char 	FileName[8] ;	 unsigned char 	Ext[3] ; 	UnionAttrib 	Attribute ;	unsigned char 	DR[10] ;	UnionTime 	CreateTime ;	UnionDate	CreateDate ;	 unsigned char 	ClustBegin ;	long	FileSize;	}EntryDir;typedef union {	 unsigned char 	Entry[32];	 EntryDir	EntDir ;	}UnionDir;Hệ thống tập tin HĐH MSDOS(tt)Cấu trúc dữ liệu cài đặt:Danh sách liên kếttypedef struct Node{	void *Data;	Node *Next;	 }NodeType;typedef NodeType *PointerType;Clust1	Clust2	Clust3ListTMC1	TMC2	TMC3EntryDir1	EntryDir2	EntryDir3Hệ thống tập tin HĐH MSDOS(tt)Cấu trúc dữ liệu cài đặt:Hàm InsertLastInt InsertLast (PointerType &List, PointerType &Last, void* Item){	PointerType Temp;	Temp= new NodeType;	if( !Temp)	return 0;	Temp->Data = Item;	Temp->Next = NULL;	if(List==NULL)	List=Temp;	else Last->Next=Temp;	Last = Temp;	return 1;}Hệ thống tập tin HĐH MSDOS(tt)Cấu trúc dữ liệu cài đặt:Hàm đọc Sector từ đĩa vớI số hiệu theo kiểu vật lýint ReadDiskBios(char *Buff,unsigned Side, unsigned Track, unsigned Sector, unsigned SecNum){	union REGS u, v;	struct SREGS s;	int k, I=0;	v.x.cflag=1;	while((I>2;	X=X & 0X00FF;	X=X | Sector;	Track = Track <<8;	Track=Track | X; //Track ( 10), Sector(6)Hệ thống tập tin HĐH MSDOS(tt)if ( ReadDiskBios(Buff, Side, Track, Sector, SecNum))	return 1;	else	return 0;}	Hệ thống tập tin HĐH UNIXGiới thiệu:Unix được thiết kế cho hầu hết các loại máy tính.Unix là môi trường phát triển ứng dụng tốt cho các ứng dụng đòi hỏi tính toán trên bộ xử lý 32bitUnix là hệ điều hành đa nhiệm nhiều người dùngUnix được sử dụng nhiều trong các hệ thống mạng lớn.Lịch sử phát triển:Năm 1969 Ken Thompson thiết kế một môi trường để nghiên cứu và phát triển các chương trình đó là tiền thân của HĐH Unix. Unix được viết bằng hợp ngữ và bao gồm các hệ thống tập tin, cơ chế kiểm soát tiến trình, công cụ xây dựng chương trình.Năm 1970 Unix được thiết kế quản lý 24K bộ nhớ, quản lý tập tin lớn nhất là 64KB.Hệ thống tập tin HĐH UNIXLịch sử phát triển (tt)Năm 1973 Unix được viết lại bằng ngôn ngữ C bởi Denis Ritchie giúp cho phần mềm hệ thống Unix dễ hiểu hơn.Từ năm 1973 đến 1975 mã nguồn của Unix được cung cấp cho các trường đại học và nó trở nên rất phổ biến.Năm 1979 Unix là hệ thống chia xẻ thời gian, kích thước file quản lý được là 1 tỷ byte.Năm 1980 Xenix là HĐH Unix của Microsoft cho bộ xừ lý 16 bitNăm 1982 Unix System III của AT&T ra đời cung cấp cơ chế truy xuất từ xa.Ngày nay Unix được phát triển rộng khắp thế giới bởi các công ty khác nhau và cung cấp môi trường sử dụng thân thiện hơn.Hệ thống tập tin HĐH UNIXCài đặt hệ thống tập tin I-node.Bootsector	Khối đặc biệt	Bảng I-node	Khối dữ liệu- BootSector : chứa chương trình mồi hệ điều hànhKhối đặc biệt: lưu trữ các thông tin quan trọng về toàn bộ hệ thống tập tin, (số I-node, số khối đĩa, dãy các ô nhớ còn trống trên đĩa,) Sau khối đặc biệt là bảng I-Node được đánh số từ 1 đến tối đa. Khối dữ liệu là vùng nhớ lưu trữ nội dung tập tin, thư mục.Hệ thống tập tin HĐH UNIX(tt)Cách quản lý các ô nhớ còn trống trong khối dữ liệu:	Dùng phương pháp Bitmap: Với đĩa có n ô nhớ sẽ được ánh xạ thành n bit với giá trị 1 là còn trống, giá trị 0 là đã chứa dữ liệu. Như vậy một đĩa 20MB cần 20000 bit để lưu trữ thông tin. Chiếm khoảng 3 ô nhớ.....10011100001111000011011111100000Hệ thống tập tin HĐH UNIX(tt)Tổ chức lưu trữ tập tin:Mỗi file trong unix tương ứng với một I-Node. Một I-Node có kích thước 64byte bao gồm các thông tin về file: file Node, quyền sở hữu file của người sử dụng, quyền sở hữu nhóm, kích thước file, thời điểm tạo,thời điểm truy cập sau cùng, thời điểm thay đổi sau cùng, địa các ô nhớ chứa nội dung,Phần đánh địa chỉ các ô nhớ nội dung tập tin được chia thành 2 phần: phần đầu gồm 10 pt chứa được 10 địa chỉ ô nhớ. Phần thứ 2 gồm 3 con trỏ gián tiếp: Single indirect, double indirect, triple indirect.Đối với tập tin có kích thước nhỏ hơn 10 ô nhớ dữ liệu thì các con trỏ gián tiếp không được sử dụng để ghi địa chỉ.Khi một file có kích thước lớn hơn 10 ô nhớ dữ liệu thì con trỏ single indirect được sử dụng chỉ đến một ô nhớ dành riêng, ô nhớ này lại chứa 256 địa chỉ của ô nhớ dữ liệu.Tương tự con trỏ double chỉ đến một ô nhớ chứa 256 địa chỉ ô nhớ và mỗi ô nhớ này lại chứa 256 địa chỉ ô nhớ dữ liệu.Một file lớn nhất sử dụng cả 3 con trỏ gián tiếp là 16 GB.Hệ thống tập tin HĐH UNIX(tt)File Inodesố liên kếtNgười sở hữuNhóm sở hữuKích thước fileNgày, giờ tạo ..Pt1Pt2Pt10Single indirectDouble indirectTriple indirect.Pt1Pt2.Pt256.Pt1.Pt256Pt1Pt2.Pt256Pt1Pt2.Pt256Hệ thống tập tin HĐH UNIX(tt)Cấu trúc thư mụcCấu trúc thư mục được sử dụng trong Unix vô cùng đơn giản, mỗi entry bao gồm tên tập tin, số hiệu I-Node của file. Mỗi Entry có kích thước 16 byte:I-NodeTên tập tinKhi một file được mở , hệ thống file phải xác định vị trí khối dữ liệu trên đia nhờ vào đường dẫn được cung cấp.Ví dụ; cách truy tìm file dựa vào đường dẫn được cung cấp :	/usr/ast/mboxHệ thống tập tin HĐH UNIX(tt)Trước hết đọc I-Node của thư mục gốc – là I-Node đầu tiên trong bảng I-NodeĐọc từng entry trong thư mục gốc so sánh với thư mục usr từ đó tím ra I-node của thư mục usr.Từ I-node này tiếp tục xác định các entry trong thư mục và so sánh với ast khi đó tìm được I-node của /usr/ast. Tiếp tục tương tự sẽ tìm được I-node của /usr/ast/mbox1.1..4Bin7Dev14Db9Ect6Usr8tmpModeSizeTime4066.1..19Dick30Erik51Jim26Ast45Bal87Dat26.6..64Grant93Book60Mbox81Minix17SrcModeSizeTime132Root Dir	I-node 6	 Khối 132 là thư I-node của	Khối 406	của /usr	 mục /usr	 /usr/ast	thư mục /usr/astHướng dẫn giải các bài tậpBài tập 1: Viết chương trình giả lập lệnh DIR trong hệ điều hành MSDOSVD: người sử dụng cung cấp đường dẫn A:\BT\BT1Phân tích đường dẫn: 	void PathAnalyse(char *Path, PointerType &ListPath)BTBT1NULLListPathHướng dẫn giải các bài tậpBài tập 1: Viết chương trình giả lập lệnh DIR trong hệ điều hành MSDOSVD: người sử dụng cung cấp đường dẫn A:\BT\BT12. Đọc bảng tham số đĩa đưa vào BPB : 	EntryBpb ReadBpB()3. Đọc bảng Fat :	unsigned char FAT[512* Bpb.FatSiz]	void ReadFat ( )Fat1Fat2RootDataFATReadDisk(FAT, Bpb.ResSec, Bpb.FatSiz)Hướng dẫn giải các bài tậpBài tập 1: Viết chương trình giả lập lệnh DIR trong hệ điều hành MSDOSVD: người sử dụng cung cấp đường dẫn A:\BT\BT14. Lấy danh sách các sector của thư mục gốc : ListClust	 PointerType GetClusterRoot () Fat1Fat2RootDataListClustidnId1Hướng dẫn giải các bài tậpBài tập 1: Viết chương trình giả lập lệnh DIR trong hệ điều hành MSDOSVD: người sử dụng cung cấp đường dẫn A:\BT\BT15. Đọc nội dung thư mục Root vào danh sách ListEntry	 PointerType GetEntryDir (PointerType ListClust, char flag) 	flag=0: Đọc các entry thư mục gốc	flag =1: Đọc các entry thư mục conFat1Fat2RootDataListEntryEntryDirEntryDirHướng dẫn giải các bài tậpBài tập 1: Viết chương trình giả lập lệnh DIR trong hệ điều hành MSDOSVD: người sử dụng cung cấp đường dẫn A:\BT\BT16. Tìm trong ListEntry có thư mục BT không nếu có lấy được số hiệu cluster của thư mục BT và các cluster còn lại bằng hàm NextEntry và lại đưa vào danh sách ListClust mới.ListEntryEntry(BT)ClustBigEntryDirClustBigClustBigListClustNextEntryNextEntryHướng dẫn giải các bài tậpBài tập 1: Viết chương trình giả lập lệnh DIR trong hệ điều hành MSDOSVD: người sử dụng cung cấp đường dẫn A:\BT\BT15. Đọc nội dung thư mục BT dựa vào danh sách ListClust mới tìm được	 PointerType GetEntryDir (PointerType ListClust, char flag) 	flag=0: Đọc các entry thư mục gốc	flag =1: Đọc các entry thư mục con (đổi số hiệu cluster sang số hiệu SectorCurrSec=Bpb.ResSec+Bpb.Fatsiz*Bpb.FatCnt+(Bpb.RootSiz*32)/512 +( CurrClust-2)*Bpb.ClustSiz;Fat1Fat2RootDataListEntry(BT1)EntryDirEntryDirHướng dẫn giải các bài tậpBài tập 1: Viết chương trình giả lập lệnh DIR trong hệ điều hành MSDOSVD: người sử dụng cung cấp đường dẫn A:\BT\BT17. Duyệt danh sách ListEntry(BT1) để in ra màn hình các tập tin và thư mục con theo định dạng như sau:	void PrintTo(PointerType ListEntry)Tên 	Kích thước	Ngày tạo	Giờ tạo		.	..		.	..		.	..Hướng dẫn giải các bài tậpBài tập 2: Viết chương trình giả lập lệnh TYPE trong hệ điều hành MSDOSVD: người sử dụng cung cấp đường dẫn A:\BT\tt.txtLàm tương tự như trên cuối cùng có danh sách ListClust của tập tin tt.txt. Thực hiện xuất từng ký tự trong nội dung các ListClust với số byte là kích thước tập tin.	void PrintFile (PointerType ListClust)

File đính kèm:

  • pptHe dieu hanh 4.ppt