linux系统精解

linux系统精解

ID:40557898

大小:1.33 MB

页数:12页

时间:2019-08-04

linux系统精解_第1页
linux系统精解_第2页
linux系统精解_第3页
linux系统精解_第4页
linux系统精解_第5页
资源描述:

《linux系统精解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、linux系统精解1:文件信息虚拟内存如图11-1所示,系统中的每个进程有两个数据结构用于描述进程与文件相关的信息。其中,fs_struct描述了上面提到的两个VFS索引节点的指针(主目录和当前路径),即root和pwd。另外,这个结构还包含一个umask字段,它是进程创建文件时使用的默认模式,可通过系统调用修改这一默认模式。另一个结构为files_struct,它描述了当前进程所使用的所有文件信息。从图中可以看出,每个进程能够同时拥有256个打开的文件,fs[0]到fs[255]就是指向这些file结构的指针。文件的描述符实际就

2、是fs指针数组的索引号。在file结构中,f_mode是文件的打开模式,只读、只写或读写;f_pos是文件的当前位置;f_inode指向VFS中该文件的索引节点;f_op包含了对该文件的操作例程集。利用f_op,可以针对不同的文件定义不同的操作函数,例如一个用来向文件中写数据的函数。Linux利用这一抽象机制,实现了管道这一进程间通讯机制(将在后面详细描述)。这种抽象方法在Linux内核中非常常见,通过这种方法,可使特定的内核对象具有类似C++对象的多态性。Linux进程启动时,有三个文件描述符被打开,它们是标准输入、标准输出和错

3、误输出,分别对应fs数组的三个索引,即0、1和2。如果启动时进行输入输出重定向,则这些文件描述符指向指定的文件而不是标准的终端输入/输出。每当进程打开一个文件时,就会利用files_struct的一个空闲file指针指向打开的文件描述结构file。对文件的访问通过file结构中定义的文件操作例程和VFS索引节点信息来完成。11.1.4虚拟内存(因为Linux采用了虚拟内存管理机制,所以对于进程而言,所有关于内存的分配都是虚拟内存的分配.)在前一章中看到,进程的虚拟内存包含了进程所有的可执行代码和数据。运行某个程序时,系统要根据可执

4、行映象中的信息,为进程代码和数据分配虚拟内存;进程在运行过程中,可能会通过系统调用动态申请虚拟内存或释放已分配的内存,新分配的虚拟内存必须和进程已有的虚拟地址链接起来才能使用;Linux进程可以使用共享的程序库代码或数据,这样,共享库的代码和数据也需要链接到进程已有的虚拟地址中。在前一章中还看到,系统利用了需求分页机制来避免对物理内存的过分使用。因为进程可能会访问当前不在物理内存中的虚拟内存,这时,操作系统通过对处理器的页故障处理装入内存页。为此,系统需要修改进程的页表,以便标志虚拟页是否在物理内存中,同时,Linux还需要知道进

5、程地址空间中任何一个虚拟地址区域的来源和当前所在位置,以便能够装入物理内存。                                   图11-1进程的文件信息由于上面这些原因,Linux采用了比较复杂的数据结构跟踪进程的虚拟地址。在进程的task_struct结构中包含一个指向mm_struct结构的指针。进程的mm_struct则包含装入的可执行映象信息以及进程的页表指针。该结构还包含有指向vm_area_struct结构的几个指针,每个vm_area_struct代表进程的一个虚拟地址区域。图11-2是某个进程的虚

6、拟内存简化布局以及相应的进程数据结构。从图中可以看出,系统以虚拟内存地址的降序排列vm_area_struct。每个虚拟内存区域可能来源不同,有的可能来自映象,有的可能来自共享库,而有的则可能是动态分配的内存区。因此,Linux利用了虚拟内存处理例程(vm_ops)来抽象对不同来源虚拟内存的处理方法。                              图11-2进程的虚拟内存示意在进程的运行过程中,Linux要经常为进程分配虚拟地址区域,或者因为从交换文件中装入内存而修改虚拟地址信息,因此,vm_area_struct结构

7、的访问时间就成了性能的关键因素。为此,除链表结构外,Linux还利用AVL(Adelson-VelskiiandLandis)树组织vm_area_struct。通过这种树结构,Linux可以快速定位某个虚拟内存地址,但在该树中插入或删除节点需要花费较多的时间。当进程利用系统调用动态分配内存时,Linux首先分配一个vm_area_struct结构,并链接到进程的虚拟内存链表中,当后续的指令访问这一内存区域时,因为Linux尚未分配相应的物理内存,因此处理器在进行虚拟地址到物理地址的映射时会产生页故障(详细内容可参阅第十章),当L

8、inux处理这一页故障时,就可以为新的虚拟内存区分配实际的物理内存。2:关于线程(每个进程有一个主执行线程,它负责其它线程的创建和撤消,并能够有效的控制其它线程的执行过程)和进程概念紧密相关的概念是线程。线程可看成是进程中指令的不同执行路线。例如,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。