录。当所有联结到该文件的用户都不再需要该文件时,其联结值为0,系统才执行删除该文件 的操作。 (5)检索目录 在UNⅠX系统中,当用户第一次访问某文件时,需要使用文件的路径名,系统按路径名去检 索文件目录,得到该文件的磁盘索引节点,且返回给用户一个文件描述符。以后,用户便可利用 该文件描述符来访问文件,这时系统不必再去检索文件目录 对文件的检索是由 name 1过程完成的。该过程能被许多不同的系统调用所调用,如 creat open、link、 chdir、 chmod、 chown等,但它们对 name1的要求并不完全相同。可将这些系统 调用分成三类:分别用f1ag=0、flag=1和flag=2来表示。Flag=0是指 namel由 chdir、 chmod 等所调用,这时若 name1查找到指名文件则返回相应的内存索引节点指针。Flag=1是指由 creat调用 name1,此时若 name 1未找到指名文件便正常返回Flag=2是指由 unlink调用 name1, 在正常情况下应返回由路径名所指出的父目录文件的内存索引节点指针。这使得 name1过程 变得非常复杂 检索目录过程 name1是根据用户给出的文件路径名,从高层到低层顺序地查找各级文件 目录,寻找指定文件的索引节点号。在检索路径名时,对以"/"开头的路径名须从根目录开始检 索,否则从当前目录开始检索,并把与它对应的索引节点作为工作索引节点。然后用文件路径 名中的第一个分量名与根或当前目录文件中的各目录项中的文件名逐一进行比较。由于一个 目录文件可能占用多个盘块,因此,在检索完一个盘块中的所有目录项而未找到匹配的文件分 量名时,须调用bmap和 bread过程,将下一盘块中的所有目录项读入内存,再逐一检索。若检 索完该目录文件的所有盘块而仍未找到匹配的目录项时,才认为无此文件分量名。 在未找到指定分量名的匹配目录项时,又分成几种情况处理: 1)如果不是最后一个路径分量名,则出错返回。 (2)〉如果是最后一个路径分量名且flag=1时,属正常情况。此时,使 namel过程继续执行,去 检查父目录文件是否允许写,父目录文件中是否有空目录项。若有,便分配一空目录项,然后返 回NULL。 (3)如果是最后一个路径分量名,但f1ag≠1,则出错返回。 唔如果找到相匹配的目录项,而路径名尚未检索完,则把该目录项中所指示的索引节点作 为工作索引节点,并取出文件路径名中的下一个分量名,继续重复上述过程,直至路径名中的 所有分量名全部查找完毕。 5.文件系统的系统调用 系统调用是用户程序取得操作系统服务的惟一方式,是用户程序与操作系统之间的接口 UNIX系统中提供了丰富的系统功能调用,与文件操作相关的常用系统功能调用有:open、 close、 creat、link、 unlink、read和 write 8.2重点难点学习提示 这一部分请周星给添上 8.3经典问题分析和解答 1.试述UNIX的主要特点 答:UNIX的主要特点是 (1)UNIX系统是一个可供多用户同时操作的交互式分时操作系统 (2)为了向用户提供交互式功能和使得用户可以利用UNIX系统的功能,UNIX系统向用户提供 了两种友好的界面或接口:系统调用和命令;
录。当所有联结到该文件的用户都不再需要该文件时,其联结值为 0,系统才执行删除该文件 的操作。 (5)检索目录 在 UNIX 系统中,当用户第一次访问某文件时,需要使用文件的路径名,系统按路径名去检 索文件目录,得到该文件的磁盘索引节点,且返回给用户一个文件描述符。以后,用户便可利用 该文件描述符来访问文件,这时系统不必再去检索文件目录。 对文件的检索是由namei过程完成的。该过程能被许多不同的系统调用所调用,如creat、 open、link、chdir、chmod、chown 等,但它们对 namei 的要求并不完全相同。可将这些系统 调用分成三类:分别用 f1ag=0、flag=1 和 flag=2 来表示。Flag=O 是指 namei 由 chdir、chmod 等所调用,这时若 namei 查找到指名文件则返回相应的内存索引节点指针。Flag=1 是指由 creat调用namei,此时若namei未找到指名文件便正常返回。Flag=2是指由unlink调用namei, 在正常情况下应返回由路径名所指出的父目录文件的内存索引节点指针。这使得 namei 过程 变得非常复杂。 检索目录过程 namei 是根据用户给出的文件路径名,从高层到低层顺序地查找各级文件 目录,寻找指定文件的索引节点号。在检索路径名时,对以"/"开头的路径名须从根目录开始检 索,否则从当前目录开始检索,并把与它对应的索引节点作为工作索引节点。然后用文件路径 名中的第一个分量名与根或当前目录文件中的各目录项中的文件名逐一进行比较。由于一个 目录文件可能占用多个盘块,因此,在检索完一个盘块中的所有目录项而未找到匹配的文件分 量名时,须调用 bmap 和 bread 过程,将下一盘块中的所有目录项读入内存,再逐一检索。若检 索完该目录文件的所有盘块而仍未找到匹配的目录项时,才认为无此文件分量名。 在未找到指定分量名的匹配目录项时,又分成几种情况处理: (1)如果不是最后一个路径分量名,则出错返回。 (2〉如果是最后一个路径分量名且 flag=1 时,属正常情况。此时,使 namei 过程继续执行,去 检查父目录文件是否允许写,父目录文件中是否有空目录项。若有,便分配一空目录项,然后返 回 NULL。 (3)如果是最后一个路径分量名,但 f1ag≠1,则出错返回。 唔 如果找到相匹配的目录项,而路径名尚未检索完,则把该目录项中所指示的索引节点作 为工作索引节点,并取出文件路径名中的下一个分量名,继续重复上述过程,直至路径名中的 所有分量名全部查找完毕。 5.文件系统的系统调用 系统调用是用户程序取得操作系统服务的惟一方式,是用户程序与操作系统之间的接口。 UNIX 系统中提供了丰富的系统功能调用,与文件操作相关的常用系统功能调用有:open、 close、creat、link、unlink、read 和 write。 8.2 重点难点学习提示 这一部分请周星给添上 8.3 经典问题分析和解答 1.试述 UNIX 的主要特点。 答: UNIX 的主要特点是: (1)UNIX 系统是一个可供多用户同时操作的交互式分时操作系统; (2)为了向用户提供交互式功能和使得用户可以利用UNIX系统的功能,UNIX系统向用户提供 了两种友好的界面或接口:系统调用和命令;
(3)UNIX系统具有一个可装卸的分层树型结构文件系统,该文件系统使用方便、搜索简单 (4)UNIX系统把所有外部设备都当成文件,并分别赋予它们对应的文件名。从而,用户可以像 使用文件那样使用任一设备而不必了解该设备的内部特性,这既简化了系统设计,又方便了用 户 (5)UNIX系统核心程序的绝大部分源代码和系统上的支持软件都用C语言编写。且UNIX系 统是一个开放式系统,即具有统一的用户接口,使得WNIX用户的应用程序可在不同的执行环 境下运行 正是由于UNIX具有上述这些特点,使得UNIX系统得到了广泛的应用和发展。 2.简述UNIX系统进程的概念 答:在UNIX系统中,进程被赋予一些特定的含义和特性: (1)一个进程是对一个程序的执行 (2)一个进程的存在意味着在所谓的"Proc"数组(PCB的常驻内存部分)中有一个非零的结构 存在,它包含着相应的进程控制信息 (3)对于每个进程,有一个被称为U区? luserblock)或User的数据结构。这个数据结构放置 该进程的私用控制信息,且在进程被创建时,才会由系统分配相应的域( field) (4)一个进程可以生成或删除其子进程 (5)一个进程是获得和释放各种资源的基本单位 3.答:在 UNIX System V中引起进程调度的情况有5种 (1)当前执行进程申请内存等系统资源未得到满足,从而自己调用 sleep过程,放弃处理机而 进入睡眠状态。 (2)为了与其他并发进程保持同步,调用了wait或stop过程等,从而主动放弃了处理机而进入 睡眼状态 (3)当系统在从核心态转入用户态时,发现 runrun调度标志被设置(即系统中某进程的优先级 已高于当前执行进程的优先级),系统调用优先级高的进程执行。 (4)时间片用完,且当前进程的优先级低于其他就绪进程 (5)当前进程调用exit,自我终止时。 4.描述 UNIX SyStem V中消息机制的通信原理。 答: UNIX System V中消息机制使用消息队列和消息头两种基本数据结构,消息队列中每一表 项由关键字、访问控制结构及操作状态信息组成,消息头描述消息的有关特征。在消息机制中, 消息被格式化为类型与数据对,且允许不同的进程根据不同的消息类型接收 消息机制提供4个系统调用 meget, nsgct, msgsnd和 msgrcv。系统调用 meget返回一 个消息描述字 msgqido msgqid指定一个消息队列供其它三个系统调用使用。系统调用 nsgct 用来设置和返回与 magid相关联的参数选项,以及用来删除消息描述符的相关选择项。系统 调用 msgsnd和 nserc分别表示发送和接收一消息 使用消息机制的通信双方先要建立相同的消息队列。通信时先得到自身的 maggio,若要 发送消息则把待发消息写入消息正文部分,并指定消息类型。最后调用 msgsnd把消息发送到 消息队列上。若要接收消息则调用 msgrcv从消息队列中取出消息。 5.在 UNIX System V中,当一个进程所访问的一页既不在内存又不在文件系统中时,该页面可 能在什么地方?存储管理模块是如何把它调入内存的? 答:在 UNIX System V中,一个进程所访问的页面或者在内存中,或者在文件系统中,或者 在对换设备上。因此,当一个进程所访问的一页既不在内存又不在文件系统中时,该页面可能 在对换设备上。此时由核心调用有效性错处理程序加以处理 当所缺页面在对换设备上但不在内存时,则说明该页曾一度在内存中,但已被偷页进程换 出。为从对换设备上调入该页面,核心从磁盘块描述项中找到存放该页面的对换设备和块号
(3)UNIX 系统具有一个可装卸的分层树型结构文件系统,该文件系统使用方便、搜索简单; (4)UNIX 系统把所有外部设备都当成文件,并分别赋予它们对应的文件名。从而,用户可以像 使用文件那样使用任一设备而不必了解该设备的内部特性,这既简化了系统设计,又方便了用 户; (5)UNIX 系统核心程序的绝大部分源代码和系统上的支持软件都用 C 语言编写。且 UNIX 系 统是一个开放式系统,即具有统一的用户接口,使得 UNIX 用户的应用程序可在不同的执行环 境下运行。 正是由于 UNIX 具有上述这些特点,使得 UNIX 系统得到了广泛的应用和发展。 2. 简述 UNIX 系统进程的概念。 答:在 UNIX 系统中,进程被赋予一些特定的含义和特性: (1)一个进程是对一个程序的执行; (2)一个进程的存在意味着在所谓的"Proc"数组(PCB 的常驻内存部分)中有一个非零的结构 存在,它包含着相应的进程控制信息; (3)对于每个进程,有一个被称为 U 区?(userblock)或 User 的数据结构。这个数据结构放置 该进程的私用控制信息,且在进程被创建时,才会由系统分配相应的域(field)。 (4)一个进程可以生成或删除其子进程; (5)一个进程是获得和释放各种资源的基本单位。 3.答:在 UNIX System V 中引起进程调度的情况有 5 种: (l)当前执行进程申请内存等系统资源未得到满足,从而自己调用 sleep 过程,放弃处理机而 进入睡眠状态。 (2)为了与其他并发进程保持同步,调用了wait或stop过程等,从而主动放弃了处理机而进入 睡眼状态。 (3)当系统在从核心态转入用户态时,发现 runrun 调度标志被设置(即系统中某进程的优先级 已高于当前执行进程的优先级),系统调用优先级高的进程执行。 (4)时间片用完,且当前进程的优先级低于其他就绪进程。 (5)当前进程调用 exit,自我终止时。 4.描述 UNIX System V 中消息机制的通信原理。 答:UNIX System V 中消息机制使用消息队列和消息头两种基本数据结构,消息队列中每一表 项由关键字、访问控制结构及操作状态信息组成,消息头描述消息的有关特征。在消息机制中, 消息被格式化为类型与数据对,且允许不同的进程根据不同的消息类型接收。 消息机制提供 4 个系统调用 msgget,msgctl,msgsnd 和 msgrcv。系统调用 msgget 返回一 个消息描述字 msgqid。msgqid 指定一个消息队列供其它三个系统调用使用。系统调用 msgctl 用来设置和返回与 msgqid 相关联的参数选项,以及用来删除消息描述符的相关选择项。系统 调用 msgsnd 和 msgrcv 分别表示发送和接收一消息。 使用消息机制的通信双方先要建立相同的消息队列。通信时先得到自身的 msgqid,若要 发送消息则把待发消息写入消息正文部分,并指定消息类型。最后调用 msgsnd 把消息发送到 消息队列上。若要接收消息则调用 msgrcv 从消息队列中取出消息。 5.在 UNIX System V 中,当一个进程所访问的一页既不在内存又不在文件系统中时,该页面可 能在什么地方?存储管理模块是如何把它调入内存的? 答:在 UNIX System V 中,一个进程所访问的页面或者在内存中,或者在文件系统中,或者 在对换设备上。因此,当一个进程所访问的一页既不在内存又不在文件系统中时,该页面可能 在对换设备上。此时由核心调用有效性错处理程序加以处理。 当所缺页面在对换设备上但不在内存时,则说明该页曾一度在内存中,但已被偷页进程换 出。为从对换设备上调入该页面,核心从磁盘块描述项中找到存放该页面的对换设备和块号