unix案例
鱼裸忧伤
这个作者很懒,什么都没留下…
展开
-
13.4.16 加挂/卸载的实现
13.4.16 加挂/卸载的实现本书已经介绍过mount/unmount(加挂/卸载)命令的工作原理。mount命令允许在同一个或不同的设备上使用不同的文件系统,将它们当作一个文件系统使用。因此,可以在属于不同文件系统的目录中传送文件,就像是当前只有一个复合文件系统。该命令的唯一限制就是文件系统在加挂过程中,属于两个不同文件系统的两个文件不能被链接在一起。这是由UNIX通过加挂表转载 2014-12-08 15:05:02 · 436 阅读 · 0 评论 -
13.5 用于进程/内存管理的数据结构
13.5 用于进程/内存管理的数据结构13.5.1 编译过程前面已经讨论过UNIX用于管理文件系统的数据结构。这一节介绍UNIX用于操作进程的不同数据结构(假定内存管理是进程管理的一部分)。为了理解UNIX维护的不同数据结构,有必要了解编译过程的基本知识。不管进程最终加载到什么位置,编译器生成由地址0开始的代码。例如,在COBOL中,数据部分从地址0开始。在定义所有的"fd转载 2014-12-08 22:02:07 · 754 阅读 · 0 评论 -
13.5.2 进程表
13.5.2 进程表操作系统从全局层次维护进程表。任何时候,不管进程状态如何,从系统角度而言,操作系统都有一个每与个进程对应的条目。对每个进程而言,它包含以下信息:(1) Pid:它指明进程与其他进程的关系(例如,父子关系)。(2) 进程状态:也就是准备就绪、睡眠、正在运行等。(3) 调度参数:如优先级。(4) 进程统计数据:如执行时间和内核资源利用率(这些用于设置进转载 2014-12-08 22:02:53 · 410 阅读 · 0 评论 -
13.5.3 u区
13.5.3 u区u区包括与进程相关的内容。它可以是进程表自身的一部分,但要单独维护,因为这部分可以在上下文切换的时候和进程镜像进行交换。内存仍保留该进程在进程表中的条目,因为对于进程调度和控制以及决定交换进程的时间而言,该信息必不可少。u区包括以下字段:(1) 指针:指向该进程对应进程表中的条目。为避免混乱,图中并没有给出该指针。(2) 真实有效的用户ID:指明进程的权限,转载 2014-12-08 22:03:37 · 436 阅读 · 0 评论 -
13.5.4 每个进程区域表(PRegion)
13.5.4 每个进程区域表(PRegion)通常,对每个进程而言,P区有三个条目,它们分别对应该进程的文本区、数据区和堆栈区。一旦内核知道进程ID(Pid),它就可以从进程表中定位出这些条目。在进程表中,有多个指向P区表中条目的指针。因此,对任何进程而言,P区表中对应文本区、数据区和堆栈区的条目不必是连续的,虽然图13-27给出的是连续的情况,为了简化起见。该图还给出了唯一的一个指转载 2014-12-08 22:04:20 · 1014 阅读 · 0 评论 -
13.4.15 管道的实现
13.4.15 管道的实现管道是UNIX提供的一种在两个进程间通信的机制。管道允许一个进程按照先进先出(First-In-First-Out,FIFO)的方式向另一个进程传送数据。它还可以用于不同进程间的同步。有两种类型的管道:命名管道和无名管道。就目前的讨论而言,可以忽略两者之间的差别。从本质上讲,管道就是一个进程向其中写一些数据,而另一个进程从中按照写数据的顺序读这些数据的文转载 2014-12-08 15:04:23 · 380 阅读 · 0 评论 -
13.5.5 区域表(RT)
13.5.5 区域表(RT)区域表可用于共享区域。读者已经知道一个编辑器程序包括文本区、数据区和堆栈区。编辑器(例如,VI)的文本部分可以由多个运行该软件的用户使用。然而,对每个用户而言,数据区根据正在编辑的文件或数据有所不同。因此,某些区域可以共享,某些不可以。操作系统通过区域表就能做到这一点。在区域表中,对每个共享的区域如编辑器或编译器的文本区只有一个条目。图13-27描述了进程转载 2014-12-08 22:04:57 · 416 阅读 · 0 评论 -
13.4.17 链接/解链的实现(文件共享)
13.4.17 链接/解链的实现参见图13-24(和图13-7一样)有助于理解内核为了实现链接这个系统调用要做的工作。假定要链接和共享的文件是目录C1中的F1,在目录A1中该文件被称作A12。 (点击查看大图)图13-24 链接然后,内核按照如下步骤实现该系统调用:(1) 如果用户不是超级用户,输出错误消息并退出(只有超级用户可以执行转载 2014-12-08 15:05:55 · 535 阅读 · 0 评论 -
Open、Read、Write、Lseek、Close、Create、Delete、chdir系统调用
13.4.7 "Open(打开)"系统调用当进程想要对文件执行任一操作时,它先要打开文件。该系统调用格式如下:fd = Open (pathname, mode, flags, permissions),其中:fd(文件描述符),表示文件描述符。pathname(路径名)表示要打开的文件的路径名。mode(模式)指的是打开文件的模式(例如,读、写)。flag(标识)表示指明创转载 2014-12-03 13:56:16 · 1455 阅读 · 0 评论 -
13.5.6 页面映射表(PMT)
13.5.6 页面映射表(PMT)相对于每个区域的物理页面帧,页面映射表保存逻辑页面的相关信息。因此,可以有三个PMT:每一个用于进程的每个区域。因为区域被分成虚拟页面或逻辑页面0、1、2、…等等,只有对应物理页面帧才会提及到PMT。虚拟或逻辑页面号并不是显式的。例如,图13-30给出一个区域对应的PMT。为了便于读者更好地理解,图中才给出了虚拟页面号。转载 2014-12-08 22:05:33 · 2357 阅读 · 0 评论 -
文件系统内部结构
13.4.5 文件系统内部结构(1)1. 综述如前所示,一个磁盘可以分区从而包含多个文件系统。另外,使用mount(加挂)命令可以将一个文件系统扩展到多个物理磁盘上。从逻辑上讲,UNIX中的文件系统的布局结构如图13-14所示。读者可以认为文件系统分为4个不同的逻辑部分,如图所示。文件系统中第一部分第0块预留给引导块。对文件系统而言,这涉及到引导过程,第一个块包括引导程序。机转载 2014-12-02 15:52:41 · 1644 阅读 · 1 评论 -
13.4.18 UNIX中设备I/O的实现
13.4.18 UNIX中设备I/O的实现前面已经学习过,在UNIX中,设备被当作文件,也就是说,当人们想要向设备写信息的时候,所要做的全部工作就是提交一个写文件的系统调用,除了这里的文件是一个对应/dev目录中设备的特殊设备文件之外,其他没有什么不同。读者也许会问:内核是如何将写这个特殊设备文件的系统调用在内部转换成写到这个特殊的设备,例如磁盘、打印机或终端等呢?人们已经知转载 2014-12-08 15:06:54 · 476 阅读 · 0 评论