操作系统第8章课件.ppt

上传人(卖家):三亚风情 文档编号:3204039 上传时间:2022-08-03 格式:PPT 页数:56 大小:1.04MB
下载 相关 举报
操作系统第8章课件.ppt_第1页
第1页 / 共56页
操作系统第8章课件.ppt_第2页
第2页 / 共56页
操作系统第8章课件.ppt_第3页
第3页 / 共56页
操作系统第8章课件.ppt_第4页
第4页 / 共56页
操作系统第8章课件.ppt_第5页
第5页 / 共56页
点击查看更多>>
资源描述

1、2022年8月3日星期三第第8 8章章 操作系统操作系统实例二:实例二:Linux Linux 2022年8月3日星期三8.1 Linux 的进程管理的进程管理8.2 Linux 的存储管理的存储管理8.3 Linux 的文件管理的文件管理8.4 Linux 的设备管理的设备管理2022年8月3日星期三熟练掌握:熟练掌握:LinuxLinux进程的组成,进程的组成,LinuxLinux的进程调度,的进程调度,LinuxLinux的虚拟的虚拟存储空间,内存分配和页面淘汰策略,存储空间,内存分配和页面淘汰策略,LinuxLinux文件系统文件系统的构成,的构成,EXT2EXT2对磁盘的组织,对磁盘

2、的组织,LinuxLinux设备管理概述,设备管理概述,LinuxLinux对字符设备的管理,对字符设备的管理,LinuxLinux对块设备的管理。对块设备的管理。掌握:掌握:LinuxLinux进程间的通信进程间的通信消息队列,消息队列,EXT2EXT2文件的物理结文件的物理结构,虚拟文件系统构,虚拟文件系统VFSVFS。了解:了解:管理虚拟存储空间的数据结构,管理内存空间的数据管理虚拟存储空间的数据结构,管理内存空间的数据结构结构。2022年8月3日星期三8.1 Linux8.1 Linux的进程管理的进程管理8.1.1 Linux8.1.1 Linux的进程的进程 Linux Linux

3、系统的进程分为两大类:系统的进程分为两大类:一类是系统进程,它运行在内核模式下,执行操作系统代一类是系统进程,它运行在内核模式下,执行操作系统代码,完成一些管理性的工作码,完成一些管理性的工作;另一类是用户进程,通常在用户模式下运行,并通过系统另一类是用户进程,通常在用户模式下运行,并通过系统调用或在中断、异常情况发生时进入内核模式。调用或在中断、异常情况发生时进入内核模式。当考虑到响应的及时性时,当考虑到响应的及时性时,LinuxLinux系统中的进程也可分为实系统中的进程也可分为实时进程和普通进程。时进程和普通进程。2022年8月3日星期三 Linux Linux利用一个数据结构利用一个数

4、据结构task_structtask_struct来表示一个进程。来表示一个进程。task_structtask_struct结构包含在文件结构包含在文件include/linux/sched.hinclude/linux/sched.h中,主要包含以中,主要包含以下信息:下信息:(1)(1)进程标志:进程标志:task_structtask_struct结构中定义了进程标志号结构中定义了进程标志号PIDPID、组标志、组标志号号GIDGID、用户标志号、用户标志号UIDUID等。等。(2)(2)进程状态:进程状态:TASK_RUNNINGTASK_RUNNING、TASK_INTERRUPT

5、IBLETASK_INTERRUPTIBLE、TASK_UNINTERRUPTIBLETASK_UNINTERRUPTIBLE、TASK_STOPPEDTASK_STOPPED、TASK_ZOMBIETASK_ZOMBIE。(3)(3)进程调度信息:进程调度信息:LinuxLinux进程调度程序利用这部分信息在就绪队进程调度程序利用这部分信息在就绪队列(列(run_queuerun_queue)中选出一个就绪进程在)中选出一个就绪进程在CPUCPU上运行。上运行。2022年8月3日星期三 (4)(4)进程通信信息:用于消息队列、管道、信号量等进程通进程通信信息:用于消息队列、管道、信号量等进程

6、通信。信。(5)(5)进程的家族关系:每个进程的进程的家族关系:每个进程的task_structtask_struct结构中有许多结构中有许多进程指针,分别指向祖先进程即初始化进程、父进程、子进程等进程指针,分别指向祖先进程即初始化进程、父进程、子进程等的的task_structtask_struct结构,使系统中结构,使系统中task_structtask_struct结构形成了一棵进程结构形成了一棵进程树。树。(6)(6)时间和定时器:用于记录进程执行的总时间及进行软件时间和定时器:用于记录进程执行的总时间及进行软件定时。定时。(7)(7)文件系统信息:记录进程访问文件系统中相关文件的信文

7、件系统信息:记录进程访问文件系统中相关文件的信息。息。(8)(8)存储管理信息:存储管理信息:task_structtask_struct结构中保存了进程虚拟内存结构中保存了进程虚拟内存空间信息及其与物理存储有关的信息。空间信息及其与物理存储有关的信息。(9)(9)处理机现场保留信息处理机现场保留信息2022年8月3日星期三8.1.2 Linux8.1.2 Linux的进程调度的进程调度 在在LinuxLinux系统中系统调度的基本单位是进程,当进程调度时机成系统中系统调度的基本单位是进程,当进程调度时机成熟时,进程调度程序在多个进程间进行合理选择,为条件最佳的进程熟时,进程调度程序在多个进程

8、间进行合理选择,为条件最佳的进程分配处理机并使之投入运行。分配处理机并使之投入运行。Linux Linux使用进程调度统一处理进程和内核线程,所以通过进程调使用进程调度统一处理进程和内核线程,所以通过进程调度就可以得知线程调度的具体情况。度就可以得知线程调度的具体情况。Linux Linux中进程调度涉及了中进程调度涉及了3 3方面:调度方式、调度时机和调度策略。方面:调度方式、调度时机和调度策略。2022年8月3日星期三1.1.调度方式调度方式 Linux Linux采用采用“有条件的可剥夺有条件的可剥夺”调度方式。对于普通进程,调度方式。对于普通进程,当其时间片用完时,调度程序挑选出下一个

9、处于当其时间片用完时,调度程序挑选出下一个处于task_runningtask_running状状态的进程作为当前进程(自愿调度)。对于实时进程,若其优先态的进程作为当前进程(自愿调度)。对于实时进程,若其优先级足够高,则会从当前的运行进程中抢占级足够高,则会从当前的运行进程中抢占CPUCPU成为新的当前进程成为新的当前进程(强制调度)。发生强制调度时,若进程在用户空间中运行,就(强制调度)。发生强制调度时,若进程在用户空间中运行,就会被直接剥夺会被直接剥夺CPUCPU;若进程在内核空间中运行,即使迫切需要其;若进程在内核空间中运行,即使迫切需要其放弃放弃CPUCPU,也仍要等到它从系统空间返

10、回之前才被剥夺,也仍要等到它从系统空间返回之前才被剥夺CPUCPU。2022年8月3日星期三原因原因处理机执行的进程发生状态转换。处理机执行的进程发生状态转换。直接执行调度程序。直接执行调度程序。就绪队列中增加了新进就绪队列中增加了新进程。程。正在执行的进程所分配正在执行的进程所分配的时间片用完。的时间片用完。系统内核结束中断处系统内核结束中断处理返回到用户态。理返回到用户态。执行系统调用的进程执行系统调用的进程返回到用户态。返回到用户态。2.2.调度时机调度时机 调度时机是指重新进行进程调度,即重新分配处理机的时机。调度时机是指重新进行进程调度,即重新分配处理机的时机。LinuxLinux中

11、设置的进程调度标志为中设置的进程调度标志为need_reschedneed_resched,当该标志为,当该标志为1 1时,可以执行进程时,可以执行进程调度程序。通常引起调度程序。通常引起LinuxLinux系统中进程调度的原因有以下几种:系统中进程调度的原因有以下几种:2022年8月3日星期三3.3.调度策略调度策略1 1)数据结构)数据结构在在task_structtask_struct中有中有4 4 个与进程调度密切相关的参数:个与进程调度密切相关的参数:policypolicy进程的调度策略。进程的调度策略。prioritypriority进程的调度优先级。普通进程的可用的时间片的初值

12、进程的调度优先级。普通进程的可用的时间片的初值即为即为该该值。值。RtRt-priority-priority实时进程专用的调度优先级。实时进程的可用时间实时进程专用的调度优先级。实时进程的可用时间片的片的初值初值即为该值。即为该值。countercounter进程可用的时间片记数。进程可用的时间片记数。2022年8月3日星期三抢占式调度。抢占式调度。用优先级的设定,区分两用优先级的设定,区分两类进程,实现多级调度。类进程,实现多级调度。进程的分类和调度策略。进程的分类和调度策略。依据优先级依据优先级weight来选择可来选择可运行进程。运行进程。特点特点2 2)调度策略的特点)调度策略的特点

13、2022年8月3日星期三8.1.3 Linux8.1.3 Linux进程间进程间的通信的通信-消息消息队列队列 Linux Linux为进程间的通信提供了多种机制,常见的有信号、信为进程间的通信提供了多种机制,常见的有信号、信号量、管道、消息队列和共享内存储区等。信号用于一个进程向号量、管道、消息队列和共享内存储区等。信号用于一个进程向另一个进程发出通知;而信号量则用于进程间取得同步;管道、另一个进程发出通知;而信号量则用于进程间取得同步;管道、消息队列和共享存储区都用于在进程间传递数据。消息队列和共享存储区都用于在进程间传递数据。消息消息队列是进程间的一种异步通信方法。队列是进程间的一种异步

14、通信方法。“异步异步”即发送消即发送消息的进程在消息发出之后,不必等待接收进程作出反应,就可以息的进程在消息发出之后,不必等待接收进程作出反应,就可以去做其他的事情了。去做其他的事情了。Linux Linux 对消息的长度没有限制。消息队列使对消息的长度没有限制。消息队列使用完毕后,应该予以释放(即删除)。用完毕后,应该予以释放(即删除)。2022年8月3日星期三 1.1.消息队列的数据结构消息队列的数据结构 一一个消息队列是一个由消息缓冲区所构成的链表,它允许一个或个消息队列是一个由消息缓冲区所构成的链表,它允许一个或多个进程从中读出或写入消息。多个进程从中读出或写入消息。采用采用这种通信机

15、制时,这种通信机制时,LinuxLinux需维护一个消息队列数组需维护一个消息队列数组msgquemsgque,每个数组元素是一个描述某个消息队列的每个数组元素是一个描述某个消息队列的msqid_dsmsqid_ds结构的结构体,结构的结构体,LinuxLinux通过该结构管理消息队列。当创建新的消息队列时,系统将从通过该结构管理消息队列。当创建新的消息队列时,系统将从内存中申请分配一个由内存中申请分配一个由msqid_dsmsqid_ds结构描述的内存块,并将它们插入到结构描述的内存块,并将它们插入到数组数组msgquemsgque中。中。2022年8月3日星期三该通信机制所用到的数据结构描

16、述如下:该通信机制所用到的数据结构描述如下:static struct msqid_ds msgque;/*每个消息队列占一个每个消息队列占一个msqid_ds结构结构*/struct msqid_ds struct ipc_perm msg_prem;struct msg*msg_first;/*指向消息队列的第一条消息指向消息队列的第一条消息*/struct msg*msg_last;/*指向消息队列的最后一条消息指向消息队列的最后一条消息*/time_t msg_stime;/*最后发送时间最后发送时间*/time_t msg_rtime;/*最后接收时间最后接收时间*/time_t m

17、sg_ctime;/*最后修改时间最后修改时间*/struct wait_queue*wait;/*写消息进程的等待队列指针写消息进程的等待队列指针*/struct wait_queue*rwait;/*读消息进程的等待队列指针读消息进程的等待队列指针*/ushort msg_cbytes;/*队列中消息的字节数队列中消息的字节数*/ushort msg_qnum;/*队列中消息数队列中消息数*/ushort msg_qbytes;/*队列中消息的最大字节数队列中消息的最大字节数*/ushort msg_lspid;/*最后一个发送消息的进程的标志号最后一个发送消息的进程的标志号*/ushor

18、t msg_lrpid;/*最后一个接收消息的进程的标志号最后一个接收消息的进程的标志号*/;2022年8月3日星期三struct msg/struct msg/*每条信息占一个每条信息占一个msgmsg结构结构*/struct msg struct msg*msg_next;/msg_next;/*指向下一条消息的指针指向下一条消息的指针*/long msg_type;/long msg_type;/*消息类型消息类型*/char char*msg_spot;/msg_spot;/*消息文本的地址指针消息文本的地址指针*/time_t msg_stime;/time_t msg_stime;

19、/*发送此条消息的时间发送此条消息的时间*/short msg_ts;/short msg_ts;/*消息文本的长度消息文本的长度*/;Linux Linux系统中表示消息的结构中含有指向下一条消息的指针系统中表示消息的结构中含有指向下一条消息的指针msg_nextmsg_next,每个消息队列均为一个单向,每个消息队列均为一个单向链表。链表。2022年8月3日星期三LinuxLinux系统中的消息队列系统中的消息队列2022年8月3日星期三2.2.消息队列相关的系统调用消息队列相关的系统调用1 1)创建新消息队列系统调用)创建新消息队列系统调用newque()newque()2 2)删除消息

20、队列系统调用)删除消息队列系统调用freeque()freeque()3 3)发送消息系统调用)发送消息系统调用msgsnd()msgsnd()4 4)接收消息系统调用)接收消息系统调用msgrcv()msgrcv()2022年8月3日星期三 1.1.虚拟地址空间虚拟地址空间 在在PentiumPentium计算机上,计算机上,LinuxLinux系统采用系统采用3 3位虚拟地址,因而每位虚拟地址,因而每个用户的虚拟地址空间可达到个用户的虚拟地址空间可达到4 GB4 GB,其中高地址的,其中高地址的1 GB1 GB是系统空是系统空间,低地址的间,低地址的3 GB3 GB是是用户空间。用户空间。

21、进程进程实际用到的虚拟地址空间由若干个连续的区域构成。实际用到的虚拟地址空间由若干个连续的区域构成。LinuxLinux系统采用虚存段和链表来表示。每个虚存段表示进程的一系统采用虚存段和链表来表示。每个虚存段表示进程的一段连续区域,虚存段之间不一定是连续的。每个进程通常占用几段连续区域,虚存段之间不一定是连续的。每个进程通常占用几个虚存段,分别为代码段、数据段和堆栈段等,虚存段用单链表个虚存段,分别为代码段、数据段和堆栈段等,虚存段用单链表来管理。来管理。8.2.1 Linux8.2.1 Linux的虚拟存储空间的虚拟存储空间8.28.2 LinuxLinux的存储管理的存储管理2022年8月

22、3日星期三LinuxLinux的虚拟存储空间的虚拟存储空间2022年8月3日星期三 2.2.页表管理页表管理 Linux Linux系统采用请求页式技术管理虚拟内存。在系统采用请求页式技术管理虚拟内存。在LinuxLinux中,采用中,采用二级页目表的形式,即把页表分为二级结构:页目录表(二级页目表的形式,即把页表分为二级结构:页目录表(PGDPGD)和页)和页表(表(PTEPTE)。每个进程有一个页目录表,其大小为)。每个进程有一个页目录表,其大小为4 KB4 KB,以,以4 B4 B为一个为一个表项,共包含表项,共包含1 0241 024个表项,每个页目录表项指向页表中的一页。同个表项,每

23、个页目录表项指向页表中的一页。同样,每个页表大小也为样,每个页表大小也为4 KB4 KB,包含,包含1 0241 024个表项,每个页表项指向该个表项,每个页表项指向该进程的一个进程的一个页面。页面。虚拟地址结构虚拟地址结构页目录3122页号2112页内位移量1102022年8月3日星期三 3.3.地址转换地址转换 当当调用调用forkfork()创建一个进程时,系统为之建立一个()创建一个进程时,系统为之建立一个PCBPCB,称为,称为task_structtask_struct结构,其中包含了一个用于描述该进程存储管理相关信结构,其中包含了一个用于描述该进程存储管理相关信息的息的mm_st

24、ructmm_struct数据结构,页目录表的起始地址存放在数据结构,页目录表的起始地址存放在mm_structmm_struct中。中。每次每次将虚拟地址转换成物理地址时,都要首先通过将虚拟地址转换成物理地址时,都要首先通过mm_structmm_struct中中的指针的指针pgdpgd找到该进程的页目录表;然后根据页目录在页目录表中找找到该进程的页目录表;然后根据页目录在页目录表中找到相应的表项,从中得到页表的入口地址;其次根据页号在页表中找到相应的表项,从中得到页表的入口地址;其次根据页号在页表中找到相应的表项,从中得到该页在内存中的物理块号;最后根据页内位到相应的表项,从中得到该页在内

25、存中的物理块号;最后根据页内位移量就可以访问所需移量就可以访问所需内容。内容。2022年8月3日星期三地址转换过程示意图地址转换过程示意图2022年8月3日星期三8.2.2 8.2.2 管理虚拟存储空间的数据结构管理虚拟存储空间的数据结构 Linux Linux在管理进程虚拟空间时定义了虚存段(在管理进程虚拟空间时定义了虚存段(vmavma)。)。虚虚存段是进程一段连续的虚存空间,在这段虚存空间里,所存段是进程一段连续的虚存空间,在这段虚存空间里,所有单元拥有相同特征。这样分割是因为每个虚拟内存区域的来源有单元拥有相同特征。这样分割是因为每个虚拟内存区域的来源可能不同,有的可能来自可执行映像,

26、有的可能来自共享库等,可能不同,有的可能来自可执行映像,有的可能来自共享库等,每一个虚存段的处理操作有所不同。每一个虚存段的处理操作有所不同。Linux Linux用数据结构用数据结构vm_area_structvm_area_struct描述了虚存段的属性,它描述了虚存段的属性,它主要包括:主要包括:(1 1)vmavma在虚存中的起始地址和终止地址。在虚存中的起始地址和终止地址。(2 2)vmavma的内容来源。的内容来源。(3 3)一系列对)一系列对vmavma的操作例程。的操作例程。2022年8月3日星期三 在在进程运行过程中,经常需要为进程动态分配、撤销、扩展或进程运行过程中,经常需

27、要为进程动态分配、撤销、扩展或缩减缩减vmavma,因此,因此vm_area_structvm_area_struct结构访问频繁。为了提高对结构访问频繁。为了提高对vmavma查询、查询、插入和删除的速度,插入和删除的速度,LinuxLinux同时使用了同时使用了AVLAVL平衡树来维护组织平衡树来维护组织vm_area_structvm_area_struct结构。结构。Linux Linux用结构用结构mm_structmm_struct描述一个进程的整个虚拟地址空间。描述一个进程的整个虚拟地址空间。mm_structmm_struct结构包含了当前可执行文件信息和进程页目录指针结构包含

28、了当前可执行文件信息和进程页目录指针pgdpgd,以,以及指向及指向vm_area_structvm_area_struct结构链表的指针。进程的结构链表的指针。进程的task_structtask_struct内嵌了内嵌了mm_structmm_struct的指针的指针mmmm。2022年8月3日星期三虚拟存储数据结构的关系虚拟存储数据结构的关系2022年8月3日星期三8.2.3 8.2.3 管理内存空间的数据结构管理内存空间的数据结构 Linux Linux使用位示图的方式记录所有物理内存的空间情况。位使用位示图的方式记录所有物理内存的空间情况。位示图实际为表,该表在系统初始化时,由示图实

29、际为表,该表在系统初始化时,由free_area_init()free_area_init()函数函数创建。创建。在在LinuxLinux系统内核定义了系统内核定义了bitmapbitmap表,该表的每一项描述某一表,该表的每一项描述某一种页块的信息。种页块的信息。free_areafree_area数组的每一项包含两个元素:数组的每一项包含两个元素:listlist和和mapmap,listlist是是一个双向链表的头指针,指向空闲页块的起始物理页编号,而一个双向链表的头指针,指向空闲页块的起始物理页编号,而mapmap指针指向一个记录页块组合分配情况的位示图。如果第指针指向一个记录页块组合

30、分配情况的位示图。如果第N N个页个页面是空闲的,则该位示图的第面是空闲的,则该位示图的第N N个位置为个位置为0 0;在该页面块中只要有;在该页面块中只要有一个页被占用,该位置即为一个页被占用,该位置即为1 1。2022年8月3日星期三free_areafree_area数据结构数据结构2022年8月3日星期三8.2.4 8.2.4 内存的分配和页面淘汰策略内存的分配和页面淘汰策略 1 1内存的分配内存的分配 在在给进程分配空闲块时,给进程分配空闲块时,LinuxLinux系统首先在系统首先在free_areafree_area数组中数组中寻找一个与请求大小相同的空闲页块。如果没有所请求大小

31、的空寻找一个与请求大小相同的空闲页块。如果没有所请求大小的空闲页块,则继续搜索是请求大小空闲页块两倍的空间。这个过程闲页块,则继续搜索是请求大小空闲页块两倍的空间。这个过程将一直持续到将一直持续到free_areafree_area数组被搜索完或找到满足条件的最小页数组被搜索完或找到满足条件的最小页块为止。如果找到的空闲页块正好等于请求的块长时,将它从中块为止。如果找到的空闲页块正好等于请求的块长时,将它从中删除。如果找到的空闲块大于请求的页块时,将空闲块一分为二,删除。如果找到的空闲块大于请求的页块时,将空闲块一分为二,前半部分插入前半部分插入free_areafree_area中前一条中前

32、一条listlist链表中,取后半部分。若链表中,取后半部分。若还大,则继续对其半分,留一半取一半,直至相等。在分配的过还大,则继续对其半分,留一半取一半,直至相等。在分配的过程中要相应调整程中要相应调整bitmapbitmap表,将相应位置设为表,将相应位置设为0 0或或1 1。2022年8月3日星期三 系统系统回收内存空间时,会检查回收块与插入点前后相邻的情回收内存空间时,会检查回收块与插入点前后相邻的情况,若空闲,则要合并成一个大的空闲块组,并从况,若空闲,则要合并成一个大的空闲块组,并从free_areafree_area的的空闲链表中删除该相邻块,然后再继续查找合并空闲块的相邻空空闲

33、链表中删除该相邻块,然后再继续查找合并空闲块的相邻空闲块。重复上述过程,直到找不到相邻空闲块为止,把最后得到闲块。重复上述过程,直到找不到相邻空闲块为止,把最后得到的空闲块插入的空闲块插入free_areafree_area中的相应空闲链表中。中的相应空闲链表中。2022年8月3日星期三 2.2.页面淘汰策略页面淘汰策略 Linux Linux淘汰页的依据是年龄。每页在淘汰页的依据是年龄。每页在mem_map_tmem_map_t结构中结构中有一个表示年龄的计数器,供内核保护交换进程决策该页面有一个表示年龄的计数器,供内核保护交换进程决策该页面是否被换出。当页面未被使用时,则会变老,内核保护交

34、换是否被换出。当页面未被使用时,则会变老,内核保护交换进程仅淘汰出那些最近一直没有使用的页面。其缺省操作是:进程仅淘汰出那些最近一直没有使用的页面。其缺省操作是:页面年龄初始值为页面年龄初始值为3 3,每引用一次其年龄将增加,每引用一次其年龄将增加3 3,最大值为,最大值为2020。每当内核保护交换进程要淘汰出一个页面时,便将它的。每当内核保护交换进程要淘汰出一个页面时,便将它的值减值减1 1,直到减为,直到减为0 0为止。系统会首先选择那些年龄值为为止。系统会首先选择那些年龄值为0 0的的页面换出或是淘汰。页面换出或是淘汰。2022年8月3日星期三 Linux Linux最早的文件系统是最早

35、的文件系统是MinixMinix,它受限很大且性能低下。其文,它受限很大且性能低下。其文件名最长不能超过件名最长不能超过1414个字符且最大文件为个字符且最大文件为64 MB64 MB。第一第一个专门为个专门为LinuxLinux设计的文件系统被称为扩展文件系统设计的文件系统被称为扩展文件系统(extended file systemextended file system)或)或EXTEXT,扩展文件系统第,扩展文件系统第2 2版或称版或称EXT2EXT2,被设计出来并添加到被设计出来并添加到 LinuxLinux中。中。每个每个实际文件系统从操作系统和系统服务中分离出来,它们之实际文件系统

36、从操作系统和系统服务中分离出来,它们之间通过一个接口层间通过一个接口层虚拟文件系统或虚拟文件系统或VFSVFS来通信。来通信。VFSVFS使得使得LinuxLinux可可以支持多个不同的文件系统,每个表示一个以支持多个不同的文件系统,每个表示一个VFSVFS的通用接口。由于软的通用接口。由于软件将件将LinuxLinux文件系统的所有细节进行了转换,所以文件系统的所有细节进行了转换,所以LinuxLinux核心的其他核心的其他部分及系统中运行的程序将看到统一的部分及系统中运行的程序将看到统一的文件系统。文件系统。Linux Linux文件系统采用了多级目录的树形层次结构。树形结构的文件系统采用

37、了多级目录的树形层次结构。树形结构的最上层是根目录,用最上层是根目录,用/表示(这与表示(这与WindowsWindows和和DOSDOS操作系统中用操作系统中用 表示表示根目录不同)。其中,矩形表示目录,圆形表示文件。系统在运行根目录不同)。其中,矩形表示目录,圆形表示文件。系统在运行中可以通过使用命令或系统调用进入任何一层目录,这时系统所处中可以通过使用命令或系统调用进入任何一层目录,这时系统所处的目录成为当前目录。的目录成为当前目录。8.3.1 Linux8.3.1 Linux文件系统的构成文件系统的构成8.38.3 LinuxLinux的的文件管理文件管理2022年8月3日星期三Lin

38、uxLinux文件系统的树形结构文件系统的树形结构2022年8月3日星期三 Linux Linux采用了目录分解的方法来管理文件目录。在树形目录中采用了目录分解的方法来管理文件目录。在树形目录中的目录项是文件的符号目录。它的基本目录是一个称为的目录项是文件的符号目录。它的基本目录是一个称为i i结点结点(i-(i-node)node)的结构体,其中记录着文件的管理信息。每个文件对应一个的结构体,其中记录着文件的管理信息。每个文件对应一个i i结点,它们在系统中有唯一的编号,称为结点,它们在系统中有唯一的编号,称为i i结点号。结点号。Linux Linux符号目录的目录项只有两部分组成:文件名

39、和符号目录的目录项只有两部分组成:文件名和i i结点号。结点号。Linux Linux的文件名是由字母、数字、下划线和圆点组成的字符串的文件名是由字母、数字、下划线和圆点组成的字符串构成,文件名的长度限制在构成,文件名的长度限制在255255个字符以内。一个文件的两个目录结个字符以内。一个文件的两个目录结构由符号目录项中的构由符号目录项中的i i结点号构成。结点号构成。2022年8月3日星期三LinuxLinux文件系统的目录项文件系统的目录项2022年8月3日星期三8.3.2 EXT28.3.2 EXT2对对磁盘的组织磁盘的组织 1 1EXT2EXT2文件系统文件系统 EXT2 EXT2文件

40、系统把它所使用的磁盘逻辑分区划分成若干组文件系统把它所使用的磁盘逻辑分区划分成若干组(block groupblock group),并从),并从0 0开始依次编号。每个块组中包含若干数据开始依次编号。每个块组中包含若干数据块,数据块中就是目录或文件内容。对于不同的块,数据块中就是目录或文件内容。对于不同的EXT2EXT2文件系统,数文件系统,数据块长度可以不同。据块长度可以不同。EXT2 EXT2文件系统的逻辑分区包含的块组数量是由分区大小和数据文件系统的逻辑分区包含的块组数量是由分区大小和数据块大小决定的。每个块组中除数据块之外还包含着用于管理和控制块大小决定的。每个块组中除数据块之外还包

41、含着用于管理和控制的的5 5种管理信息块:超级块、组块描述符、块位图、种管理信息块:超级块、组块描述符、块位图、i i结点位图和结点位图和i i结结点表。如图点表。如图8-98-9所示,所示,5 5种信息块分布在每一个块组的前部,其后是种信息块分布在每一个块组的前部,其后是文件的数据块。文件的数据块。2022年8月3日星期三EXT2EXT2文件系统结构文件系统结构2022年8月3日星期三 2.5 2.5种管理信息块种管理信息块 1 1)超级块()超级块(superblocksuperblock)超级超级块是用来描述块是用来描述EXT2EXT2文件系统整体信息的数据结构,以及主要文件系统整体信息

42、的数据结构,以及主要描述文件在逻辑分区中的静态分布情况的,描述文件系统的各种组成描述文件在逻辑分区中的静态分布情况的,描述文件系统的各种组成结构的尺寸、数量等。超级块对于文件系统的维护是至关重要的。超结构的尺寸、数量等。超级块对于文件系统的维护是至关重要的。超级块位于每个块组的最前面,所有块组中包含的超级块内容是相同的。级块位于每个块组的最前面,所有块组中包含的超级块内容是相同的。在系统运行期间,需要把超级块的内容复制到内存的系统缓冲区中。在系统运行期间,需要把超级块的内容复制到内存的系统缓冲区中。一般情况下,只需把块组一般情况下,只需把块组0 0的超级块读入内存,其他块组的超级块仅的超级块读

43、入内存,其他块组的超级块仅作为备份。作为备份。2022年8月3日星期三 2 2)组块描述符)组块描述符 一一个组块描述符用以描述一个组块的属性。组块描述符组由个组块描述符用以描述一个组块的属性。组块描述符组由若干组块描述符组成,描述了文件系统中所有组块的属性,存放若干组块描述符组成,描述了文件系统中所有组块的属性,存放于终极块所在块的下一个块中。于终极块所在块的下一个块中。组块组块描述符里给出的,都是涉及该组块的一些重要信息。当描述符里给出的,都是涉及该组块的一些重要信息。当新建一个文件时,先应从新建一个文件时,先应从bg_free_blocks_count bg_free_blocks_co

44、unt 和和 bg_free_i-bg_free_i-nodes_countnodes_count 里,得知有没有空闲的磁盘块,以及有没有空闲的里,得知有没有空闲的磁盘块,以及有没有空闲的i i结点。如果本组里面没有了,那么就谈不上在这里分配的问题结点。如果本组里面没有了,那么就谈不上在这里分配的问题了。如果有,才可以从了。如果有,才可以从bg_block_bitmapbg_block_bitmap、bg_ibg_inode_bitmapnode_bitmap和和bg_i-node_tablebg_i-node_table里,得到空闲的里,得到空闲的i i结点以及空闲的磁盘块。结点以及空闲的磁

45、盘块。2022年8月3日星期三 3 3)块位图)块位图 盘盘块位图是用来管理组块中数据区里的盘块的。在块组中,块位图是用来管理组块中数据区里的盘块的。在块组中,盘块位图自己占据一个盘块。盘块位图中的某位为盘块位图自己占据一个盘块。盘块位图中的某位为0 0,表示数据,表示数据区中的相应盘块为空闲;为区中的相应盘块为空闲;为1 1,表示数据区中的相应盘块已分配,表示数据区中的相应盘块已分配给某个文件使用。因此,盘块位图中位的数目,决定了块组中盘给某个文件使用。因此,盘块位图中位的数目,决定了块组中盘块的个数,也就是该块组中能够有多少盘块用来存放文件内容。块的个数,也就是该块组中能够有多少盘块用来存

46、放文件内容。由于由于盘块位图被局限在一个盘块里,如果假定盘块位图被局限在一个盘块里,如果假定b b是一个盘块所是一个盘块所含字节的个数,那么每个块组中最多可以有含字节的个数,那么每个块组中最多可以有 8 8b b 个盘块。又假个盘块。又假定定 s s 为文件卷里盘块的数目,那么该文件卷的块组数约为为文件卷里盘块的数目,那么该文件卷的块组数约为s/(8s/(8b)b)。显然,在文件卷大小不变的情况下,。显然,在文件卷大小不变的情况下,b b越小,越小,s s就越大。就越大。也就是说,文件卷中盘块越小,块组的数目就越多。也就是说,文件卷中盘块越小,块组的数目就越多。2022年8月3日星期三 4 4

47、)i i结点位图结点位图 i i结点位图用来管理块组中的结点位图用来管理块组中的i i结点,它占用一个盘块。位图结点,它占用一个盘块。位图中的某位为中的某位为0 0,表示,表示i i结点表中的相应结点为空闲;为结点表中的相应结点为空闲;为1 1,表示,表示i i结结点表中的相应结点已经分配给某个文件使用。因此,点表中的相应结点已经分配给某个文件使用。因此,i i结点位图结点位图中位的数目,决定了中位的数目,决定了i i结点表中索引结点的个数,也就是该块组结点表中索引结点的个数,也就是该块组中能够容纳的文件个数。而中能够容纳的文件个数。而i i结点位图中位的编号,就是那个文结点位图中位的编号,就

48、是那个文件相应的件相应的i i结点的编号。结点的编号。2022年8月3日星期三 5 5)i i结点表结点表 在在EXT2EXT2中,任何文件都有自己的中,任何文件都有自己的i i结点,即一般所说的文件结点,即一般所说的文件控制块。这些控制块。这些i i结点的集合,就称为结点的集合,就称为i i结点表。因此,块组中的结点表。因此,块组中的i i结点表,也就是存放在该块组里的所有文件的文件控制块的集合。结点表,也就是存放在该块组里的所有文件的文件控制块的集合。EXT2EXT2中,每个中,每个i i结点给出相应文件的如下一些信息:结点给出相应文件的如下一些信息:文件类型和访问权限(文件类型和访问权限

49、(i_modei_mode)。)。文件主标志(文件主标志(i_uidi_uid)。)。以字节为单位的文件长度(以字节为单位的文件长度(i_sizei_size)。)。文件占用的盘块数(文件占用的盘块数(i_blocksi_blocks)。)。文件索引表(文件索引表(i_blocki_block )。)。2022年8月3日星期三8.3.3 EXT28.3.3 EXT2文件的物理结构文件的物理结构 1 1小型文件的索引结构小型文件的索引结构 当当一个文件的长度为一个文件的长度为1 11212个磁盘块时,在个磁盘块时,在 EXT2EXT2里就称为小型里就称为小型文件。这时,用文件文件。这时,用文件i

50、 i结点里数组结点里数组i_blocki_block 的前的前1212个元素个元素i_blocki_block0 0i_blocki_block1111,直接给出文件数据存放的磁盘块号。于是,直接给出文件数据存放的磁盘块号。于是,文件逻辑块号文件逻辑块号0 01111与物理块号间的对应关系,就由它们直接与物理块号间的对应关系,就由它们直接索引得索引得到。到。2022年8月3日星期三EXT2EXT2的小型、中型文件结构的小型、中型文件结构2022年8月3日星期三 2.2.中型文件的索引结构中型文件的索引结构 当当一个文件的长度超过一个文件的长度超过1212个磁盘块时,在个磁盘块时,在 EXT2E

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(操作系统第8章课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|