Mutualexclusion(互斥):互斥也叫间接制约关系。当一个进程进入临界区使用临界资源时,另一个进程必须等待,当占用临界资源的进程退出临界区后,另一进程才运行去访问此临界资源,阻止对共享资源同时访问。
Process(进程):进程是进程实体的运行过程,是程序的一次执行过程,是具有独立功能的程序在一个数据集合上运行的过程,是系统进行资源分配和调度的一个独立单位。
Thread(线程):线程是”轻量级进程“,是进程中的一个实体,是被系统独立调度和分派的基本单位,是一个基本的CPU执行单元,也是程序执行流的最小单元,由线程ID、程序计数器、寄存器集合和堆栈组成。线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属于一个进程的其他线程共享进程所拥有的全部资源。
OperatingSystem(操作系统):是一种运行在内核态的软件,是控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集和。操作系统是计算机系统中最基本的系统软件。
Deadlock(死锁):多个进程并发执行,出现进程对资源的竞争,每个进程都持有其他进程等待的资源,导致所有进程等待,形成僵局(互相等待),若无外力作用,这些进程都将无法向前推进。
SystemCalls(系统调用):系统调用是指用户在程序中调用操作系统所提供的一些子功能,是操作系统提供给应用程序使用的接口,系统调用可视为特殊的公共子程序。用户程序不能直接执行对系统影响非常大的操作,必须通过系统调用的方式请求操作系统代为执行,以便保证系统的稳定性和安全性,防止用户程序随意更改或访问重要的系统资源,影响其他进程的运行。
Multiprogramming(多道程序设计):多道程序设计是指在一台处理机上同时并发运行多个程序,即在一台处理机上有多个程序同时进入主存并发运行,宏观上并行,微观上串行交替运行。
PhysicalAddress(物理地址):物理地址是指出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果地址。
CriticalRegion(临界区):访问临界资源的代码称为临界区。
BusyWaiting(忙等待):在进程互斥访问时,当一个进程位于其临界区内时,其他试图进入临界区的进程都必须在进入区内连续空循环,占用CPU。在实现I/O时,用户程序发出一个系统调用,内核将其翻译成一个对应设备驱动程序的过程调用。然后设备驱动程序启动I/O并在一个连续不断的循环中检查该设备,看该设备是否完成了工作。当I/O结束后,设备驱动程序把数据送到指定的地方,并返回。然后操作系统将控制返回给调用者,这种方式称为忙等待。
Buffer(缓冲器):分为输入缓冲器和输出缓冲器,前者将外设送来的数据暂时存放,以便处理器将它取走;后者的作用是用来暂时存放处理器送往外设的数据。用来解决外设和处理器速度不匹配的问题。
I-nodes(i结点):UNIX系统采用文件名和文件描述信息分开的方法,使文件描述信息单独形成一个称为索引节点的数据结构,简称i结点。在文件目录中每个目录项仅由文件名和指向该文件所对应的i结点的指针组成。
Monitors(管程):管程可以看做一个软件模块,它定义了一个数据结构,将共享的变量和对于这些共享变量的操作封装起来,形成一个具有一定接口的功能模块,进程可以调用管程来实现进程级别的并发控制。任一时刻管程中只能有一个活跃进程。
VirtualAddress(虚拟地址):虚拟地址并不真实存在于计算机中。每个进程都分配有自己的虚拟空间,而且只能访问自己被分配使用的空间,进程隔离,更好的保护系统安全运行。操作系统为应用程序提供的一个统一的内存访问接口。所有的应用程序只需要面向虚拟地址进行编写,而不用考虑实际的物理地址的使用情况。当应用程序使用虚拟地址访问内存时,处理器(CPU)会通过MMU(内存管理单元)将其转化成物理地址,方便编程。
Interrupt(中断):指处理机处理程序运行中出现的紧急事件的整个过程。程序运行过程中,系统外部、系统内部或者现行程序本身若出现紧急事件,处理机立即中止现行程序的运行,自动转入相应的处理程序(中断服务程序),待处理完后,再返回原来的程序运行,这整个过程称为程序中断。中断分为外中断和内中断。外中断是指来自CPU执行指令外部的事件,通常用于信息输入/输出,比如I/O中断,时钟中断;内中断是指来自CPU执行指令内部的事件,入程序的非法操作码、地址越界……一旦出现,就应立即处理,不能被屏蔽。
Semaphore(信号量):信号量(semaphore)是操作系统用来解决并发中的互斥和同步问题的一种方法。是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。
DeviceDriver(驱动程序):是一种可以使计算机和设备通信的特殊程序,可以说相当于硬件的接口,操作系统只能通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。
Relocation(重定位):重定位就是把程序的逻辑地址空间变换成内存中的实际物理地址空间的过程,也就是说在装入时对目标程序中指令和数据的修改过程。
AtomicAction(原子操作):是指不可被中断的一个或一系列操作,不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束。要么全部成功,要么全部失败。
DeviceIndependence(设备独立性):设备独立性是指操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱动程序,任何用户都可以像使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。
AvoidingLocks(避免锁):避免锁,指对进程资源申请不加限制,但在分配之前会作安全检查,只有安全才进行分配。
Read-Copy-Update(RCU):是一种同步机制,它的优点就是可以在更新的过程中,运行多个reader进行读操作。支持一个写操作和多个读操作同时进行。对于被RCU保护的共享数据结构,读者不需要获得任何锁就可以访问它,但写者在访问它时首先拷贝一个副本,然后对副本进行修改,最后使用一个回调(callback)机制在适当的时机把指向原来数据的指针重新指向新的被修改的数据。
1.批处理方式已经出现几十年了,为什么现在还会有操作系统在使用?
系统吞吐量大,CPU和其他资源保持“忙碌”状态资源利用率高,多道程序共享计算机资源,从而使各种资源得到充分利用用户可脱机工作作业成批处理,批量改名,批量删除,脚本自动操作,定时计划任务,循环任务。很多地方都能用到批处理。
2.CPU利用率越高,说明系统效率越高对不对?
不对,比如程序中出现死循环使得CPU利用率解决百分之百,无法处理其他请求,系统效率极低。
3.CPU的管态和目态的区别,能不能从目态直接进入另一个应用程序的目态
如果程序处于管态,那么程序可以访问计算机的任何资源,它的资源访问权限不受限制,通常,操作系统在管态下运行。目态又称为常态或者用户态,机器处于目态时,程序只能执行非特权指令,不能直接使用系统资源,也不能改变CPU的工作状态,并且只能访问这个用户程序自己的存储空间。能。
4.操作系统为什么提出“作业、进程、线程”的概念?
作业:用户在一次解题或一个事物处理过程中要求计算机系统所做工作的集合。它包括用户程序、所需要的数据及控制指令等。作业是由一系列有序的步骤组成的。
进程:一个程序在一个数据集合上的一次运行过程。一个程序在不同数据集合上运行,乃至一个程序在同样数据集合上的多次运行都是不同的进程。
线程:线程是进程中的一个实体,是被系统独立调度和执行的基本单位。
作业是在早期的多道批处理系统中提出的,在现代操作系统中基本没有概念及应用。
引入进程的目的是更好地使多道程序并发执行,提高资源利用率和系统吞吐量
引入线程地目的使减小程序在并发执行时所付出地时空开销(上下文切换),提高操作系统地并发性能。
5.什么是系统调用,为什么要使用“系统调用”机制
系统调用是指用户在程序中调用操作系统所提供的一些子功能,是操作系统提供给应用程序使用的接口,系统调用可视为特殊的公共子程序。用户程序不能直接执行对系统影响非常大的操作,必须通过系统调用的方式请求操作系统代为执行,以便保证系统的稳定性和安全性,防止用户程序随意更改或访问重要的系统资源,影响其他进程的运行。
6.理解一下系统调用fork()的功能
fork函数的主要作用是在父进程调用的基础上创建一个其的子进程。子进程是一个相对的概念,他会复制父进程的数据代码等部分,是完全复制一份而不是共用相同的变量相当于克隆。fork函数有一个特点就是只调用一次却会返回两次,一次是父进程返回的值一个大于0的数(即他创建的子进程的PID,PID是操作系统中进程的唯一标识),而另外一次则是子进程返回的值为0。还有一种情况就是父进程调用该函数的时候如果返回的<0的数则说明创建进程失败(失败的原因有很多)。另外一个值得注意的是调用fork函数的时候子进程是接着该调用后的代码继续执行的,如果其后还存在调用fork函数子进程也可以作为父进程创建它的子进程。
7.为什么要中断?中断后需要保存什么信息
中断指处理机处理程序运行中出现的紧急事件的整个过程。程序运行过程中,系统外部、系统内部或者现行程序本身若出现紧急事件,处理机立即中止现行程序的运行,自动转入相应的处理程序(中断服务程序),待处理完后,再返回原来的程序运行。系统必须保存当前处理机程序状态字PSW和程序计数器PC等的值以及一些通用寄存器的值。
8.什么是操作系统的内核
内核是指将操作系统的主要功能模块都作为一个紧密联系的整体运行在核心态,从而为用户程序提供高性能的系统服务。
9.为什么建立管道文件?普通文件与管道文件的区别
管道文件是建立在内存之上可以同时被两个进程访问的文件。
向管道提供输入的发送进程,以字符流形式将大量的数据送入管道;而接收管道输出的接收进程从管道中接收数据。
实际上,管道是一个固定大小的缓冲区。
从管道读数据是一次性操作,数据一旦被读取,就释放空间以便写更多数据。管道只能采用半双工通信,即某一时刻只能单向传输。要实现父子进程互动通信,需定义两个管道。
10.C/S与B/S的区别
C/S架构,即Client/Server(客户端/服务器)架构,是一个典型的两层架构。开发比较容易,操作简便,但应用程序的升级和客户端程序的维护较为困难。C/S是建立在局域网的基础上的;
B/S架构,即Brower/Server(浏览器/服务器)架构。它由逻辑上相互分离的表示层、业务层和数据层构成。B/S系统统一了客户端,无需特殊安装,拥有Web浏览器即可;它将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。B/S是建立在广域网的基础上的。
11.进程创建时是什么状态
就绪态
12.进程结束时是什么状态
终止态
13.子进程与父进程的关系
子进程为由另外一个进程(对应称之为父进程)所创建的进程。子进程继承了父进程的大部分属性,例如文件描述。
子进程得到的是除了代码段是与父进程共享的以外,其他所有的都是得到父进程的一个副本,子进程的所有资源都继承父进程,得到父进程资源的副本,既然为副本,也就是说,二者并不共享地址空间。
一个进程可能下属多个子进程,但最多只能有1个父进程,而若某一进程没有父进程,则可知该进程很可能由内核直接生成。
孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。
僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。
14.进程的状态与中断
处于运行态的进程如果需要等待某一事件完成,如I/O,则会进入阻塞队列等待,变为阻塞态,释放处理机。如果事件完成,该进程从阻塞队列中移出,进入就绪队列,修改状态为就绪态,重新等待处理机资源。
15.进程之间的关系
不同的系统中,进程的关系不同,在Windows系统中,父子进程是平等的,在UNIX系统中,进程和它的子进程组成一个进程组,父进程可以杀死子进程。但进程之间都具有同步与互斥关系,不同进程相互配合可以提高效率,但不同进程也会争夺同一个资源。
16.进程的现场信息包括什么,可能存放的位置
现场信息包括,通用寄存器的内容、控制寄存器(如PSW寄存器)的内容、用户堆栈指针、系统堆栈指针,程序计数器(PC),程序状态字(PSW)
存放位置:进程栈(不是系统栈)
17.什么是自愿性中断和强迫性中断?
强迫性中断事件:包括硬件故障中断,程序性中断,外部中断和输入输出中断等。
自愿性中断事件:是由正在运行的进程执行一条访管指令用以请求系统调用而引起的中断,这种中断也称为"访管中断"。
自愿中断的断点是确定的,而强迫性中断的断点可能发生在任何位置。
18.进程创建时是什么状态?进程终止时是什么状态?为什么?
进程创建时是就绪态,进程终止时是终止态
就绪状态:当进程已分配到除处理器(CPU)以外的所有必要资源后,只要再获得处理器就可以执行的状态称为就绪状态。在一个系统里,可以有多个进程同时处于就绪状态,通常把这些就绪进程排成一个或多个队列,称为就绪队列。
终止状态:当一个进程已经正常结束或异常结束,操作系统已将其从系统队列中移出,但是,尚未撤消,这时称为终止状态。
19.系统栈用户栈PCB在内存什么位置存放?
系统栈在内存的操作系统空间的一块区域
用户栈是用户进程空间的一块区域
pcb在系统内存的一段连续内存中,存在于所有进程共享的内核空间中,
20.作业、进程、线程的状态有哪几种?
一个作业从进入系统到它运行结束,一般要经历4个状态,分别是进入状态、后备状态、运行状态和完成状态。
在三态模型中,进程状态分为三个基本状态,即运行态,就绪态,阻塞态。
线程包括新建状态,就绪状态,运行状态,阻塞状态,死亡状态。
**21.作业、进程、线程之间的关系?**
作业是从用户角度出发的,它是由用户提交,以用户任务为单位,操作系统没有作业概念
进程是从操作系统出来的,它是由系统生成,是操作系统的资源分配和独立运行的基本单位,进程是线程的载体
线程是进程的基本执行单元,是操作系统调度和分派的基本单位,是一个基本的CPU执行单元,也是程序执行流的最小单元
通常指一个进程就叫一个作业。
22.进程现场信息存放的数据结构有哪些?什么情况该数据结构会被使用?
在计算机系统中,对于每个资源和每个进程都设置了一个数据结构,用于表征其实体,称为资源信息表或进程信息表,其中包含了资源或进程的标识,描述,状态等信息以及一批指针。通过这些指针,可以将同类资源或进程的信息表,或者同一进程占有的资源信息表分类链接成不同的队列,以便于操作系统进行查找。分为四类:内存表,设备表,文件表和用于进程管理的进程表(通常又称为进程控制PCB)。
当发生中断,创建进程,实现进程间的通讯时会被使用
23.进程PCB为什么要分为P区和U区?
UNIX系统把进程控制块分成两部分。一部分为进程的基本控制块,简称proc结构,它存放着进程最常用的一些信息(进程标识符(PID),用户标识符(UID),进程状态...),所以proc结构一般常驻内存。将那些只在进程运行时才用到的控制信息存储在U区(user结构),从而使这部分信息不必常驻内存,节省内存空间的占用。
24.有了进程机制后,为什么提出线程机制
进程在执行的过程中如果阻塞,整个进程就会挂起,即使进程中有些工作不依赖于等待的资源,仍然不会执行。
进程上下文切换开销大
因此,操作系统引入了比进程力度更小的线程,作为并发执行的基本单位,从而减少程序在并发执行时所付出的时空开销,提高并发性
25.线程机制的优点
26.用户级线程与系统级的线程的区别(优缺点)
用户级线程:
内核级线程
27.说明混合机制线程的实现过程
内核级线程和多少个用户级线程彼此多路复用
彼此多路复用的方法有
多对一,多个用户级线程映射到一个内核级线程;
一对一,一个用户级线程映射到一个内核级线程;
多对多,多个用户级线程映射到多个内核级线程;
28.什么是上行调度
当一个线程被阻塞之后,该线程会发送信号通知内核,而当内核了解到该线程被阻塞后,就会通知该进程的运行时系统,并且由该系统去调用用户自己编写的线程调度程序去解决阻塞的线程
29.为什么早期把线程也叫轻量级进程?
早期没有线程的概念,进程被认为是程序执行的最小单位。而当后来提出的线程概念时,线程拥有许多进程的性质,但资源往往比进程要少,被叫做轻量型进程。
30.如何理解进程进入等待状态,而该进程的线程还在运行?
进程内部可能包含多个线程,进程与进程之间不能共享数据,而一个进程中的多个线程可以共享进程的内存区域,如堆,方法区,线程的栈是私有的。当进程宏观上进入等待状态时,进程内部的一些轻量级的线程如果不涉及到对外部数据的访问,只是进行内部数据处理,如加减乘除运算,则依旧可以运行,故实际在微观上仍然有内部的线程正在运行。
31.进程间因为独占资源的竞争产生的联系是什么关系?如何区分进程间的互斥与同步关系?
互斥关系同步关系是进程间有着某种先后的执行顺序关联;互斥关系是不同进程对独占资源的占有产生的关系,当一个进程占用了独占资源,就会进入临界区,其他进程无法占用独占资源,当它退出临界区时,其他进程才能按照队列顺序来占用独占资源
32.例题中的购票任务是互斥关系还是同步关系?
互斥
34.忙式等待与排队等待的区别?
忙式等待是指有一个进程在使用临界资源时,其他进程也想使用临界资源,需要不停的执行循环判断语句(连续空循环)来判断临界资源是否空闲,等待过程需要不断使用CPU。
排队等待是值当临界资源被占用时,其他想使用的进程被挂起到等待队列中等待唤醒,等待过程不占用CPU
35.现实中,有身份证号码重复的情况,出现这种情况的原因?用操作系统思想说明
36.同一公共变量的临界区的数量多少?
取决于访问该公共变量的代码段有多少
取决于多少个进程想要访问临界资源
38.严格轮转算法中turn=0代表着什么?
表示0号进程可以进入临界区,其他进程不能进去临界区并且在临界区外做忙等待。
39.为什么说严格轮转算法可以实现临界区的互斥使用,但无法保证公平性?
严格轮转法设置了一个turn变量,当进程进入临界区时会将turn的值改变,从而将后续进程阻塞在while循环当中,但是每个进程进入临界区的权限只能由另一个进程赋予,当前一个进程一直处于运行状态时,其余进程就要一直等待前一进程执行结束主动退出临界区后再进入临界区,无法保证公平性。该进程一直在运行,其他进程就得一直等待。
40.说明Peterson’s算法中,为什么不会出现两个进程同时进入临界区的情况?
#defineFALSE0#defineTRUE1#defineN2/*进程数量*/intturn;/*现在轮到谁?*/intinterested[N];/*所有值初始化为0(FALSE)*/voidenter_region(intprocess)/*进程是0或1*/{ intother;/*其他进程号*/ other=1-process;/*另一方进程*/ interested[process]=TRUE;/*表名所感兴趣的*/ turn=process;/*设置标志*/ while(turn==process&&interested[other]==TRUE);/*空语句*/}voidleave_region(intprocess)/*进程:谁离开?*/{ interested[process]=FALSE;/*表示离开临界区*/}一开始,没有任何进程处于临界区中,现在进程0调用enter_region。它通过设置其数组元素和将turn置为0来标识它希望进入临界区。由于进程1并不想进入临界区,所以enter_region很快便返回。如果进程1现在调用enter_region,进程1将在此处挂起直到interested[0]变成FALSE,该事件只有在进程0调用leave_region退出临界区时才发生。
现在考虑两个进程几乎同时调用enter_region的情况。它们都将自己的进程号存入turn,但只有后被保存进去的进程号才有效,前一个因被重写而丢失。假设进程1是后存入的,则turn=1.当两个进程都运行到while语句时,进程0将循环0次并进入临界区,而进程1则将不停的循环且不能进入临界区,知道进程0退出临界区为止。
41.面包店算法中,什么情况下可能为出现两个或以上的进程抓到相同的号码?
42.面包店算法中,变量i和j的含义?
43.面包店算法中定义的A[N]作用是什么?
当几个进程同时取号时,在number修改之前,都调用了Max,会使抓号相同,但是会在运行时按照字典序执行
i为要取号进程编号,j为其他进程编号
记录哪些进程正在抓号或已经抓号,记录想要进入或者已经进入临界区的进程编号。
45.信号量机制中的系统调用为什么要设为原语?
46.实现列车发车过程控制的公平效率调度算法
48.实现读者/写者问题中的写者优先算法
读操作可以并发进行,而写操作之间或写与读之间是互斥的,故读者优先效率更高
49.信号量机制的缺点
P和V的操作散布在同步进程中的各处,操作不当容易造成死锁
50.管程机制中的活动进程指的是什么进程?为什么在管程中只能有一个活动进程?
活动进程:指的是处于就绪态或者是运行态的进程。管程每次只允许一个进程进入,从而实现了进程的互斥,避免死锁
51.用管程机制实现火车站的发车调度问题
建立两个锁分别去控制火车的进和出。当火车进时获得进入锁,到达后再释放。不符合条件的火车进入等待车道上的其他火车离开。其他火车离开后发送信号,解开等待的状态,等待中的车进入车道,并释放进入锁。
52.管程机制相对于信号量机制的优缺点
优点,只能存在一个活动进程,避免死锁,可靠性高;对于共享数据的操作进行封装,利用编程。缺点:不能并发,效率降低
53.管程机制能满足临界区使用规则吗?为什么?
能,因为管程中有且只有一个活动进程,而被阻塞的进程不访问临界区
54.进程(或线程)的优先级为什么要动态变化?
在不同的调度策略下,(比如短作业优先),可能会使长作业出现“饥饿”现象,而作业优先级的动态变化可以使得作业优先级比较低的作业也能够获得处理机,保证了作业处理的公平。
55.CPU调度时机?
从就绪态->运行态:当进程被创建时,会进入到就绪队列,操作系统会从就绪队列选择一个进程运行;
从运行态->阻塞态:当进程发生I/O事件而阻塞时,操作系统必须选择另外一个进程运行;
从运行态->结束态:当进程退出结束后,操作系统得从就绪队列选择另外一个进程运行;
从阻塞态->就绪态:当进程等待的事件完成后发出中断,进程移出等待队列,进入就绪队列,状态变为就绪态,重新参与调度。
57.影响执行优先级的因素有哪些?
58.什么是抢占式调度?抢占式调度的优缺点
优点:兼顾长短作业,公平性好,提高系统吞吐量
缺点:进程上下文切换耗时大,降低了CPU效率,中断次数多,系统开销大
60.死锁的四个条件是什么?什么情况下是必要条件?什么情况下是充分必要条件?
占有和等待(请求并保持)条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程所占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。
不可抢占(剥夺)条件:进程所获得的资源在未使用完之前,不能被其他进程强行夺走,即只能由获得该资源的进程自己来释放。
环路等待条件:存在一种进程资源的循环等待链,链中每个进程已获得的资源同时被链中下一个进程所请求。
在任何情况下这四个条件都是必要条件
注意:4只是死锁的必要条件
只有当系统中每类资源只有一个,资源分配图含圈(环路等待)就变成了死锁的充分必要条件。
61.怎样能避免死锁?
避免死锁的方法中,运行进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配的安全性。若此次分配不会导致系统进入不安全状态,则允许分配,否则让进程等待。
62.举例说明如何避免死锁?(如何破坏四个死锁条件)
破坏互斥条件:使用假脱机技术。使资源不被一个进程独占,避免分配不是绝对必需的资源,尽量做到尽可能少的进程真正请求资源。
破坏不剥夺条件:当一个已经保持某些不可剥夺资源的进程请求新的资源而得不到满足时,它必须释放已经保持的所有资源,等待以后需要的时候再重新申请。
破坏占有和等待条件:采用预先静态分配方法,即进程在运行前一次申请完它所需要的全部资源,在它的资源为满足前,不把它投入运行。一旦投入运行,这些资源就一直归它所有,不在提出其他资源请求。
破坏环路等待条件:顺序资源分配法,资源编号,每个进程必须按编号递增的顺序请求资源,同类资源一次申请完。
63.操作系统的存储管理应该实现的功能是什么?
内存空间的分配与回收
地址转换
内存空间的扩充
内存共享
存储保护
64.系统空闲空间管理时,空闲块应该按照什么排序合理?为什么?
不同的管理算法有着不同的排序规则。最先适应算法要求按地址递增的顺序排列最优适应算法要求把空闲区按长度递增次序排最坏适应分配算法要求把空闲区按长度递减的次序排列
65.什么是重定位?逻辑地址与物理地址的关系?
重定位就是把程序的逻辑地址空间变换成内存中的实际物理地址空间的过程。
物理地址是指出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果地址。
物理地址可通过逻辑地址加段内偏移量得出。
66.什么是局部性原理?
67.使用TLB(快表)的目的是什么?快表项越多越好吗?
如果页表全部放在内存中,则存取一个数据或一个条指令至少要访问两次内存:第一次是访问页表,确定所存取的数据或指令的物理地址;第二次是根据该地址存取数据或指令。显然,这种方法比通常执行指令的速度慢了一半。为此,在地址变换机制中增设一个具有并行查找能力的高速缓冲存储器——快表,用来存放当前访问的若干页表项,以加速地址变换的过程。使用快表将页表项加入缓存中可以在命中情况下只访问一次内存空间。
68.倒置页表与进程页表的优缺点
进程页表消耗空间更大,但是从虚拟地址到物理地址的访问较为便捷,只需要从当前虚拟索引查找物理地址
69.动态分区与静态分区的特点
70.页式管理中CPU执行时需要访问内存多少次?为什么
如果快表命中,则只需要访问一次,否则需要访问两次,第一次查询内存中的页表,第二次访问相应内存空间。n层页表需要访问n+1次内存
71.文件控制信息FCB为什么要分为主部和次部?
(1)提高查找速度:查找文件时,需用欲查找的文件名与文件目录中的文件名字相比较。由于文件目录是存于外存的,比较时需要将其以块为单位读入内存。由于一个FCB包括许多信息,一个外存块中所能保存的FCB个数较少,这样读入内存作比较的样本也少,就不容易查找成功,就需要不断从外存更新信息到内存,导致查找速度较慢。而将FCB分为两部分之后,文件目录中仅保存FCB的次部的话相同大小的外存块就可容纳较多的FCB,从而大大地提高了文件的检索速度。(2)实现文件连接:所谓连接就是给文件起多个名字,这些名字都是路径名,可为不同的用户所使用。次部仅包括一个文件名字和一个标识文件主部的文件号主部则包括除文件名字之外的所有信息和一个标识该主部与多少个次部相对应的连接计数。相当于就不用来一个新用户建立访问就保存一遍链接内容了,实现了文件目录公共部分的最大化利用。当连接计数的值为0时,表示一个空闲未用的FCB主部。
72.文件共享的目的
文件共享使多个用户共享同一个文件,系统中只需保留该文件的一个副本。若系统不能提供共享功能,则每个需要该文件的用户都要有各自的副本,会造成对存储空间的极大浪费。
节约空间,减少额外存储空间的消耗,避免两个用户访问不同的文件信息
73.目录文件的系统调用与普通文件的系统调用不同点
目录文件的删除操作会删除该目录文件下的所有文件,目录文件系统调用额外含有opendir,closedir,readdir,link和unlink等目录特有的系统调用,而普通文件则含有open,read,close,write,append,seek等专门针对文件内部基本内容的操作
74.实现文件系统所需要的基本数据结构有哪些?
iNode,目录文件表,空闲块表,系统打开文件表,用户打开文件表,每个进程的打开文件表,超级块(superblock),主引导记录(MBR),引导块(bootblock),
75.系统打开文件表可以不使用吗?为什么?
不可以。当有多个进程共享文件时,如果其中一个进程需要关闭文件,此时需要通过系统打开文件表判断该文件是否共享来决定是否真正的关闭文件,即需要对打开文件的进程进行计数。
75.文件系统中如何提高读写效率?提高后会出现什么问题?
增大文件块大小,会使得磁盘空间利用率降低
76.陷阱与中断的区别
陷阱(Trap)是一种事先安排的“异常”事件,由处理机正在执行的现行指令引起,用于在用户态下调用操作系统内核程序,如条件陷阱指令。
中断也称为外中断,是指来自CPU执行指令外部的事件,通常用于信息输入/输出。
陷阱通常由处理器正在执行的现行指令引起,而中断则是由与现行指令无关的中断源引起的。陷阱处理程序提供的服务为当前进程所用,而中断处理程序提供的服务则不是为了当前进程的。
77.函数调用与中断的关系
中断:
1)何时发生可能是不可预料的;CPU正在处理某件事情的时候,外部发生的某一事件(如一个电平的变化,一个脉冲沿的发生或定时器计数溢出等)请求CPU迅速去处理,于是CPU暂时中止当前的工作,转去处理所发生的事件。中断服务处理完该事件以后,再回到原来被中止的地方继续原来的工作
2)对于可剥夺型内核,完成中断调度后,不是立刻返回原来的执行点执行,而是回到就绪态优先级最高的任务开始运行。
3)没有返回值;
4)不能传递参数。
函数:
1)何时发生是可预料的;
2)完成函数调度后会返回到原来的代码片段继续执行;
3)有返回值;
4)能传递参数。
相同点:
1)在执行调度之前,都保存现场;
2)都是调用一个subcode。
78.I/O软件的功能
实现设备独立性、统一命名、错误处理、同步与异步传输、缓冲、驱动程序实现进程与设备控制器之间的通信