【期末复习】操作系统

版权声明:请多多关注博主哟~ https://blog.csdn.net/qq_37865996/article/details/85238336

目录

第一遍整理

第二遍整理

第三遍整理

知识点一:进程切换相关内容(简答)

知识点二:进程的七态模型(即双挂起进程模型)(论述)

知识点三:特权指令(名词解释)

知识点五:作业调度算法(计算)

知识点六:临界区相关(名词解释)

知识点七:PV操作(应用题)

知识点八:死锁的产生和解除(简答)

知识点九:银行家算法(计算)

知识点十:页式存储管理的地址转换和保护(计算)

知识点十一:分段管理与分业管理的区别(简答)

知识点十二:两级页表模型(论述)

知识点十三:磁盘调度(计算)

知识点十四:文件系统相关(名词解释)

习题

 


第一遍整理

 

第二遍整理

中:

左:

右:

上:

下:

启动工作原理见博客:https://blog.csdn.net/qq_37865996/article/details/85934389

第三遍整理

知识点一:进程切换相关内容(简答)

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配、保护和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体

进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。

进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程

进程的特征:

  • 动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
  • 并发性:任何进程都可以同其他进程一起并发执行
  • 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
  • 异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进
  • 结构特征:进程由程序、数据和进程控制块三部分组成。
  • 多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。

进程上下文实际上是进程执行活动全过程的静态描述。我们把已执行过的进程指令和数据在相关寄存器堆栈中的内容称为上文,把正在执行的指令和数据在寄存器和堆栈中的内容称为正文,把待执行的指令和数据在寄存器与堆栈中的内容称为下文。具体的说,进程上下文包括计算机系统中与执行该进程有关的各种寄存器(例如通用寄存器程序计数器PC程序状态字寄存器PS等)的值,程序段在经过编译过后形成的机器指令代码集,数据集及各种堆栈值PCB结构。这里,有关寄存器和栈区的内容是重要的,例如没有程序计数器PC和程序 状态寄存器PS,CPU将无法知道下一条待执行指令的地址和控制有关操作。

上下文切换,有时也称做进程切换或任务切换,是指CPU 从一个进程或线程切换到另一个进程或线程。在操作系统中,CPU切换到另一个进程需要保存当前进程的状态并恢复另一个进程的状态:当前运行任务转为就绪(或者挂起、删除)状态,另一个被选定的就绪任务成为当前任务。上下文切换包括保存当前任务的运行环境,恢复将要运行任务的运行环境。进程上下文用进程的PCB(进程控制块,也称为PCB,即任务控制块)表示,它包括进程状态,CPU寄存器的值等。通常通过执行一个状态保存来保存CPU当前状态,然后执行一个状态恢复重新开始运行。

进程控制块(Processing Control Block),是操作系统核心中一种数据结构,主要表示进程状态。其作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位或与其它进程并发执行的进程。或者说,OS是根据PCB来对并发执行的进程进行控制和管理的。 PCB通常是系统内存占用区中的一个连续存区,它存放着操作系统用于描述进程情况及控制进程运行所需的全部信息,它使一个在多道程序环境下不能独立运行的程序成为一个能独立运行的基本单位或一个能与其他进程并发执行的进程。PCB通常记载进程之相关信息,包括:程序计数器:接着要运行的指令地址。进程状态:可以是new、ready、running、waiting或 blocked等。CPU暂存器:如累加器、索引暂存器(Index register)、堆栈指针以及一般用途暂存器、状况代码等,主要用途在于中断时暂时存储数据,以便稍后继续利用;其数量及类因电脑架构有所差异。CPU排班法:优先级、排班队列等指针以及其他参数。存储器管理:如标签页表等。会计信息:如CPU与实际时间之使用数量、时限、账号、工作或进程号码。输入输出状态:配置进程使用I/O设备,如磁带机。 

  1. 进程控制块PCB(Process Control Block)

    1. 进程描述信息(如PID);
    2. 进程控制&管理信息(状态、优先级等);
    3. 源分配清单(地址空间状况、fd等);
    4. 处理其相关信息(各寄存器的值等)

知识点二:进程的七态模型(即双挂起进程模型)(论述)

New->Ready:现存的任务调用fork()函数创建一个新进程,提交。

New->Ready Suspend:提交。

Ready->Ready Suspend:挂起,当有高优先级阻塞进程和低优先级就绪进程时,系统会选择挂起低优先级就绪进程。将其有内存转到外存(磁盘镜像区)。

Ready Suspend->Ready:解除挂起。没有就绪进程或挂起就绪进程优先级高于就绪进程时,就会进行这种转换。

Ready->Rnuning:CPU空闲时,从就绪进程中选中一个给其分配CPU。调度程序将任务犹如运行,schedule()函数调用context_switch函数

Running->Ready:无CPU,进程落选。

Running->Blocked:等待某事件发生,而暂停进程的运行。

Blocked->Ready:资源满足或者等待的事件已发生。

Running->Exit:进程结束或发生错误,进程不再执行,但管理信息保留。任务通过do_exit()退出。

Blocked->Blocked Suspend:没有进程处于就绪状态或就绪进程要求更多内存资源时,进行此转换以提交新进程或运行就绪程序。

Blocked Suspend->Blocked:解除挂起。当一个进程释放足够内存时,系统会把一个高优先级阻塞挂起进程。

Blocked Suspend->Ready Suspend:等待事件结束。

知识点三:特权指令(名词解释)

特权指令指具有特殊权限的指令。这类指令只用于操作系统或其他系统软件,一般不直接提供给用户使用。它主要用于系统资源的分配和管理,包括改变系统工作方式,检测用户的访问权限,修改虚拟存储器管理的段表、页表,完成任务的创建和切换等。

知识点四:中断相关(名词解释)

中断源:引起中断的原因,或者能够发出中断请求信号的来源。

中断装置:发现中断、响应中断的硬件。

中断处理程序:中断发生时,内核应该有相应的处理方法,这个方法就是中断处理程序,一个中断处理程序对应一个中断号。

 中断系统:中断装置+中断处理程序。中断系统是计算机的重要组成部分。实时控制、故障自动处理、计算机与外围设备间的数据传送往往采用中断系统。中断系统的应用大大提高了计算机效率。

强迫性中断:正在运行的程序所不期望的、由于某种硬件故障或外部请求引起的中断。

自愿性中断:用户在程序中有意识安排的中断。是运行程序所期待的事件。

按功能所分的五大类中断中,输入输出中断、外中断、机器故障中断、程序性中断属于强迫性中断。访管中断属于自愿中断。

外中断:CPU和内存之外的中断。

内中断:CPU和内存之内的中断,

中断寄存器:由若干个中断位组成,每个中断源各占一位,当出现某中断时对应位为1,否则置0.

中断字:中断寄存器中的内容。

多重中断:CPU在响应处理中断过程中,允许响应处理更高级别的中断请求,这种方式称为多重中断。其实现方法为在中断服务程序的起始部分用一段程序来保存现场、送新屏蔽字以屏蔽同级别和低级别的中断请求、然后开中断,这样CPU就可响应更高级别的中断请求,实现多重中断。

知识点五:作业调度算法(计算)

当作业流进入输入井的时候,首先会用作业调度来选择合适的作业进入主存区,这个合适的作业数量是根据允许并行作业的道数和作业调度的算法来决定的,此时,进入主存区的作业被操作系统创建了相应的进程,然后经过进程调度来进行占去cpu资源的操作,使得作业的执行。

这里写图片描述

如何去把输入井的作业放到主存区,则是作业调度的算法了。

(1)先来先服务(FCFS)

按作业进入输入井的先后次序安排。优点是实现简单,用先进先出(first input first output,FIFO)队列顺序工作,对相同的或均衡的作业较为合理,缺点是不利于运行时间短的作业。 

下面通过一个实例来说明FCFS调度算法的性能。假设系统中有4个作业,它们的提交时间分别是8、8.4、8.8、9,运行时间依次是2、1、0.5、0.2,系统釆用FCFS调度算法。

作业号 提交时间 运行时间 开始时间 等待时间 完成时间 周转时间 带权周转时间
1 8 2 8 0 10 2 1
2 8.4 1 10 1.6 11 2.6 2.6
3 8.8 0.5 11 2.2 11.5 2.7 5.4
4 9 0.2 11.5 2.5 11.7 2.7 13.5

平均等待时间 t = (0+1.6+2.2+2.5)/4=1.575
平均周转时间 T = (2+2.6+2.7+2.7)/4=2.5
平均带权周转时间 W = (1+2.6+5.4+13.5)/4=5.625
FCFS调度算法属于不可剥夺算法。从表面上看,它对所有作业都是公平的,但若一个长作业先到达系统,就会使后面许多短作业等待很长时间,因此它不能作为分时系统和实时系统的主要调度策略。但它常被结合在其他调度策略中使用。例如,在使用优先级作为调度策略的系统中,往往对多个具有相同优先级的进程按FCFS原则处理。
FCFS调度算法的特点是算法简单,但效率低;对长作业比较有利,但对短作业不利(相对SJF和高响应比);有利于CPU繁忙型作业,而不利于I/O繁忙型作业。

(2)短作业优先(SJF)

计算时间较短的作业优先服务。 

缺点:

  • 必须知道预知作业的运行时间
  • 对长作业非常不利
  • 人机无法实现交互
  • 没有完全考虑作业的紧迫程度,不能保证紧迫的作业能得到及时处理

系统釆用短作业优先调度算法,其平均等待时间、平均周转时间和平均带权周转时间为:

作业号 提交时间 运行时间 开始时间 等待时间 完成时间 周转时间 带权周转时间
1 8 2 8 0 10 2 1
2 8.4 1 10.7 2.3 11.7 3.3 3.3
3 8.8 0.5 10.2 1.4 10.7 1.9 3.8
4 9 0.2 10 1 10.2 1.2 6

平均等待时间 t = (0+2.3+1.4+1)/4=1.175
平均周转时间 T = (2+3.3+1.9+1.2)/4=2.1
平均带权周转时间 W = (1+3.3+3.8+6)/4=3.525
缺点:

  • SJF调度算法中长作业的周转时间会增加。更严重的是,如果有一长作业进入系统的后备队列,由于调度程序总是优先调度那些 (即使是后进来的)短作业,将导致长作业长期不被调度(“饥饿”现象,注意区分“死锁”。后者是系统环形等待,前者是调度策略问题)。
  • 该算法完全未考虑作业的紧迫程度,因而不能保证紧迫性作业会被及时处理。
  • 由于作业的长短只是根据用户所提供的估计执行时间而定的,而用户又可能会有意或无意地缩短其作业的估计运行时间,致使该算法不一定能真正做到短作业优先调度。

(3)优先级调度算法
在作业调度中,优先级调度算法每次从后备作业队列中选择优先级最髙的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。在进程调度中,优先级调度算法每次从就绪队列中选择优先级最高的进程,将处理机分配给它,使之投入运行。
根据新的更高优先级进程能否抢占正在执行的进程,可将该调度算法分为:

  • 非剥夺式优先级调度算法。当某一个进程正在处理机上运行时,即使有某个更为重要或紧迫的进程进入就绪队列,仍然让正在运行的进程继续运行,直到由于其自身的原因而主动让出处理机时(任务完成或等待事件),才把处理机分配给更为重要或紧迫的进程。
  • 剥夺式优先级调度算法。当一个进程正在处理机上运行时,若有某个更为重要或紧迫的进程进入就绪队列,则立即暂停正在运行的进程,将处理机分配给更重要或紧迫的进程。

而根据进程创建后其优先级是否可以改变,可以将进程优先级分为以下两种:

  • 静态优先级。优先级是在创建进程时确定的,且在进程的整个运行期间保持不变。确定静态优先级的主要依据有进程类型、进程对资源的要求、用户要求。
  • 动态优先级。在进程运行过程中,根据进程情况的变化动态调整优先级。动态调整优先级的主要依据为进程占有CPU时间的长短、就绪进程等待CPU时间的长短。

(4)高响应比优先调度算法

(5)时间片轮转调度算法(RR)

时间片轮转调度算法主要适用于分时系统。在这种算法中,系统将所有就绪进程按到达时间的先后次序排成一个队列,进程调度程序总是选择就绪队列中第一个进程执行,即先来先服务的原则,但仅能运行一个时间片,如100ms。在使用完一个时间片后,即使进程并未完成其运行,它也必须释放出(被剥夺)处理机给下一个就绪的进程,而被剥夺的进程返回到就绪队列的末尾重新排队,等候再次运行。
在时间片轮转调度算法中,时间片的大小对系统性能的影响很大。如果时间片足够大,以至于所有进程都能在一个时间片内执行完毕,则时间片轮转调度算法就退化为先来先服务调度算法。如果时间片很小,那么处理机将在进程间过于频繁切换,使处理机的开销增大,而真正用于运行用户进程的时间将减少。因此时间片的大小应选择适当。
时间片的长短通常由以下因素确定:系统的响应时间、就绪队列中的进程数目和系统的处理能力。

(6)最短剩余时间优先(SRTF)

抢夺版的SJF,只要加入了新作业,就会进行比较,剩余使用时间最短的进程将会抢夺CPU。、

在计算中,周转时间就是结束时间-提交时间,带权作业周转时间就是使用周转时间除所需时间(权),这里就是对作业的长短进行了思考,加入了提高吞吐量的想法。

 

知识点六:临界区相关(名词解释)

临界区:指的是一个访问共用资源(例如:共用设备或是共用存储器)的程序片段,而这些共用资源又无法同时被多个线程访问的特性。当有线程进入临界区段时,其他线程或是进程必须等待(例如:bounded waiting 等待法),有一些同步的机制必须在临界区段的进入点与离开点实现,以确保这些共用资源是被互斥获得使用,例如:semaphore。只能被单一线程访问的设备,例如:打印机。临界区就是并发进程中涉及临界资源的程序段。

临界区的调度规则: ①如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入。(有空让进,择一而入)②任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待。(无空等待)③进入临界区的进程要在有限时间内退出,以便其它进程能及时进入自己的临界区。(有空等待)④如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。(让权等待)

互斥:是指共享资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。

同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。

互斥锁(Mutex):加锁原语,排他性访问共享数据,用于保护临界区。可细分为递归锁/非递归锁。如果存在某个线程依然使用原先的程序(即不尝试获得mutex,而直接修改共享变量),互斥锁不能阻止其修改。所以,互斥锁机制需要程序员自己来写出完善的程序来实现互斥锁的功能(以下锁 一样)。

 

并发进程的无关性是进程与时间无关的一个充分条件,这一条件在1966年首先由Bernstein提出,称为Bernstein条件对进程S1、S2,Bernstein条件要求R(S1)∩W(S2)∪W(S1)∩R(S2)∪W(S1)∩W(S2)={}。即若两个程序p1、p2满足如下条件:R(p1)∩W(p2)∪R(p2)∩W(p1)∪W(p1)∩W(p2)=Ø (R(read):读的集合、W(write)写的集合) 那么他们便能并发执行。事实上,如果画一个进程之间的前趋图,事情就会更加清楚很多。特找一例:

(1)对于下面的语句: 
S1:a = 5 - x 
S2:b = a * x 
S3:c = 4 * x 
S4:d = b + c 
S5:e = d + 3 
画出前趋图 
(2)说明S2和S3是可以并发执行的,而S3和S4是不能并发执行的。

答:(1)前趋图的定义,如下几点: 
- Precedence graph (前趋图) is a Directed Acyclic Graph(有向无环图, DAG). 
- Node(结点):代表一个执行单元(如一条语句、一个程序段或进程) 
- Edge(边, directed edge(有向边)):The precedence relation (前趋关系)“→” 
→={(Pi,Pj)| Pi必须在Pj开始执行前执行完} 
接下来是根据此题画出的前驱图:
这里写图片描述

(2) 
- S2 与 S3: 
因为R(S2)={a,x};W(S2)={b};R(S3)={x} ;W(S3)={c} 
根据Berstein条件: 
R(S2)∩W(S3)∪R(S3)∩W(S2)∪W(S2)∩W(S3)=Ø 
所以S2与S3可以并发执行 
- S3与S4: 
因为R(S3)={x} ;W(S3)={c};R(S4)={b,c} ;W(S4)={e} 
根据Berstein条件: 
R(S3)∩W(S4)∪R(S4)∩W(S3)∪W(S3)∩W(S4)={c}≠Ø 
所以S3与S4不可以并发执行
原语:操作系统中指的是是由若干条指令组成的,用于完成一定功能的一个过程。primitive or atomic action 是由若干个机器指令构成的完成某种特定功能的一段程序,具有不可分割性·即原语的执行必须是连续的,在执行过程中不允许被中断。

信号量是广义上的锁,有两个原语P()、V()。也可称为wait和signal操作。PV操作与信号量的处理相关,P表示通过的意思,V表示释放的意思。

有关操作可见:https://www.cnblogs.com/fangshenghui/p/4039946.html

知识点七:PV操作(应用题)

处理的问题包括同步问题和互斥问题。同步问题中需要设置私有信号量,对同一个信号量的PV操作位于不同的进程中以实现协作、同步。互斥问题使用公共信号量,信号量PV操作在同一个进程中,实现互斥。同时要注意信号量是计数类型的还是状态类型的,分别使用一般信号量和二元信号量,且一般信号量一般初值为0.二元信号量一般为

两道例题:

根据分析,这是三方一起操作两个缓冲区的同步问题,三个进程分别Pa、Pb、Pc,四个信号量分别是缓冲区S和缓冲区T为空或满。由题可知对于缓冲区S,Pa放入Pb才能拿出,Pb拿出后Pa才能继续放入,缓冲区T同理。
由此有以下:
Semaphore SEmpty=1,SFull=0,TEmpty=1,TFull=0;
process Pa(){
    while(true){
        P(SEmpty);
        把数据写入缓冲区;
        V(SFull);
    }
}
Process Pb(){
    while(true){
        P(SFull);
        P(TEmpty);
        把数据从缓冲区S中提到缓冲区T中;
        V(SEmpty);
        V(TFull);    
    }
}
Process Pc(){
    while(true){
        P(TFull);
        从T中取走数据打印;
        V(TEmpty);
    }
}

苹果桔子问题可以归结到生产者消费者问题上,本题的模型是两个生产者-两个缓冲区-四个消费者。本题中,父亲和母亲地位相同,只是单纯的往盘子里放水果,只要空了就可以。对于孩子们来说,则对父亲或母亲的同步关系有更加强烈的需求,因为儿子们只能吃水果,女儿们只能吃橘子。儿子之间是互斥关系,女儿之间也是互斥关系。
semaphore empty=2; //即盘子里可以放多少水果
semaphore orange=0;
semaphore apple=0;
semaphore mutex=1; //用来保证对盘子操作的进程只有一个
process father(){
    while(true){
    P(empty);
    P(mutex);
    Put An Apple;
    V(mutex);
    V(apple);
    }
}
process mother(){
    while(true){
    P(empty);
    P(mutex);
    Put An Orange;
    V(mutex);
    V(orange);
    }
}
process son1(){
    while(true){
    P(apple);
    P(mutex);
    Get An Apple;
    V(mutex);
    V(empty);
    }
}
process son2(){
    while(true){
    P(apple);
    P(mutex);
    Get An Apple;
    V(mutex);
    V(empty);
    }
}
process daughter1(){
    while(true){
    P(orange);
    P(mutex);
    Get An Orange;
    V(mutex);
    V(empty);
    }
}
process daughter2(){
    while(true){
    P(orange);
    P(mutex);
    Get An Orange;
    V(mutex);
    V(empty);
    }
}

知识点八:死锁的产生和解除(简答)

死锁产生的四个条件:互斥、不可剥夺、占有和保持、循环等待。

死锁的解决方法分为防止(预防)、避免、检测与恢复。

死锁的预防:破坏死锁产生的四个条件。死锁的防止对资源的的分配加以诸多限制,降低了进程的运行和资源使用的效率。

死锁的避免允许同时存在四个必要条件,试图在系统运行过程中避免死锁的发生。 方法:系统对进程每次发出的资源申请进行动态检查,并根据检查结果决定是否分配资源,若分配后系统可能发生死锁,则不予分配,否则予以分配。

死锁的检测和恢复 (Detection & Recovery) 允许死锁的发生,系统及时地检测死锁并解除它。

知识点九:银行家算法(计算)

银行家算法是一种著名的死锁避免算法。多资源银行家算法是多进程同时使用多资源的题目。

例:多资源银行家算法中,各矩阵的情况如下所示,判断系统是否安全:

  Current Need Allocation Current+Allocation Possible
P4 1,0,2,0 0,0,1,0 1,1,0,1 2,1,2,1 Yse
P1 2,1,2,1 1,1,0,0 3,0,1,1 5,1,3,2 Yes
P2 5,1,3,2 0,1,1,2 0,1,0,0 5,2,3,2 Yes
P3 5,2,3,2 3,1,0,0 1,1,1,0 6,3,4,2 Yse
P5 6,3,4,2 2,1,1,0 0,0,0,0 6,3,4,2 Yes

安全序列为(P4,P1,P2,P3,P5)

知识点十:页式存储管理的地址转换和保护(计算)

页式管理是一种内存空间存储管理的技术,页式管理分为静态页式管理和动态页式管理。将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页的大小划分成片或者页面(page frame),然后把页式虚拟地址内存地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题。页式管理采用请求调页或预调页技术实现了内外存存储器的统一管理。

页的划分

假设逻辑地址为A,页面大小为L,则页号和页内地址为:页号=A/L,页内地址=A%L

地址转换:地址转换时,先从页表控制寄存器中找到相应的页表,再以页号为索引去检索页表。查找操作由硬件执行。在执行检索之前,先将页号与页表长度进行比较,如果页号大于或等于页表长度,则表示本次所访问的地址已超越进程的地址空间。于是,这一错误将被系统发现并产生一地址越界中断。若未出现越界错误,则将页表始址与页号和页表项长度的乘积相加,便得到该表项在页表中的位置,于是可从中得到该页的物理块号,将之装入物理地址寄存器中。与此同时,再将有效地址寄存器中的页内地址送入物理地址寄存器的块内地址字段中。这样便完成了从逻辑地址物理地址的变换。右图示出了分页系统的地址变换机构。

来一道网易的笔试题:

有用户态进程A,其虚拟内存页为1KB,A占用了64页,内存大写为128KB,A进程到内存的页面和物理内存块的编号对应关系如下:

页面编号   物理内存块编号

0                          4

1                          9

2                          5

3                          8

请根据以上信息回答如下问题,并给出计算过程:

1)虚拟地址为015D对应的物理地址是多少?

2)物理地址为113C对应的虚拟地址为多少?

3)进程A有一作业长度为8页,试图访问虚拟地址2A3D并保存整型1到该地址对应的物理地址空间,之后又尝试从该地址读取保存的数据,请问A进程这两次内存访问过程能否正常执行?并解释原因。

(1)虚拟内存页为1KB,则为10位。015D对应的二进制为0000 0001 0101 1101,则前6位为页号,后10位为业内偏移,则页号为0,物理内存块编号为4,则最后的物理地址为0001 0001 0101 1101,即115D。

(2)同理,物理地址113C的二进制为0001 0001 0011 1100,则物理内存块编号为4,则页面编号为0,则逻辑地址为013C。

(3)不能。2A3D即为0010 1010 0011 1101,页号为A,页内地址为3D,A>8,超出了进程A的页表长度。

知识点十一:分段管理与分业管理的区别(简答)

1.段是信息的逻辑单位,页是信息的物理单位;

2.段长是任意的,页长是系统确定的;

3.段的起始地址可以从主存任一地址开始,页框的起始地址只能从页框整数倍开始;

4.(段号,段内位移)构成二维地址空间,(页号,页内位移)构成一位地址空间;

5.分段管理会产生外部碎片,分页管理会产生内部碎片。

知识点十二:两级页表模型(论述)

对于要求连续的内存空间来存放页表的问题,可利用将页表进行分页,并离散地将各个页面分别存放在不同的物理块中的办法来加以解决,同样也要为离散分配的页表再建立一张页表,称为外层页表(Outer Page Table),在每个页表项中记录了页表页面的物理块号。下面我们仍以前面的32位逻辑地址空间为例来说明。当页面大小为 4 KB时(12位),若采用一级页表结构,应具有20位的页号,即页表项应有1兆个;在采用两级页表结构时,再对页表进行分页,使每页中包含210 (即1024)个页表项,最多允许有210个页表分页;或者说,外层页表中的外层页内地址P2为10位,外层页号P1也为10位。

在此概念下,逻辑地址的结构为页目录号+页表页位移+页内位移。

则两级页表即为内表(页目录表)和外表(页表)。

index1(内层页表) index2(外层页表) offset(页内偏移)
10 bit 10 bit 12 bit

为了地址变换实现上的方便起见,在地址变换机构中同样需要增设一个外层页表寄存器,用于存放外层页表的始址,并利用逻辑地址中的外层页号,作为外层页表的索引,从中找到指定页表分页的始址,再利用P2作为指定页表分页的索引,找到指定的页表项,其中即含有该页在内存的物理块号,用该块号和页内地址d即可构成访问的内存物理地址。右图示出了两级页表时的地址变换机构。

知识点十三:磁盘调度(计算)

磁盘(直接存取存储设备)参数

条件假设: 平均寻道时间为 5 ms,平均旋转延迟为 4 ms ,传输速率为 4 MByte/s,扇区大小是 1 KByte

如果随机访问一个扇区 Ta = 5ms + 4ms + 0.25ms ≈ 10 ms 总的存取速率为100 KByte/sec

如果要访问的扇区在同一个柱面 Ta = 4ms + 0.25ms ≈ 5 ms → 200 KByte/sec

如果下一个要访问的扇区在同一个磁道 Ta = 0.25ms → 4 MByte/sec

很有必要对磁盘的访问和数据的排列进行控制 旋转优化:减少旋转延迟 ,移臂调度:降低寻道时间

实例分析:磁盘性能

用户进程需要访问磁盘时,会向OS发出磁盘IO请求,如果磁盘控制器正忙则会将请求插入一个等待队列,这时OS可以决定谁下一个访问磁盘。我把这种调度技术叫驱动调度技术,也叫磁盘调度技术。

磁盘调度在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读/写操作的请求。由于有时候这些进程的发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列,常用的磁盘调度算法有以下五种:

先来先服务算法(FCFS),最短寻道时间优先算法(SSTF),扫描算法(SCAN),循环扫描算法(CSCAN),LOOK。

一次磁盘读写操作的时间由寻找(寻道)时间、延迟时间和传输时间决定: [1] 

1) 寻找时间Ts:活动头磁盘在读写信息前,将磁头移动到指定磁道所需要的时间。这个时间除跨越n条磁道的时间外,还包括启动磁臂的时间s,即:Ts = m * n + s。式中,m是与磁盘驱动器速度有关的常数,约为0.2ms,磁臂的启动时间约为2ms。

2)延迟时间Tr:磁头定位到某一磁道的扇区(块号)所需要的时间,设磁盘的旋转速度为r,则:Tr = 1 / (2 * r)。对于硬盘,典型的旋转速度为5400r/m,相当于一周11.1ms,则Tr为5.55ms;对于软盘,其旋转速度在300~600r/m之间,则Tr为50~100ms。

3) 传输时间Tt:从磁盘读出或向磁盘写入数据所经历的时间,这个时间取决于每次所读/写的字节数b和磁盘的旋转速度:Tt = b / (r * N)。式中,r为磁盘每秒钟的转数;N为一个磁道上的字节数。

在磁盘存取时间的计算中,寻道时间与磁盘调度算法相关,下面将会介绍分析几种算法,而延迟时间和传输时间都与磁盘旋转速度相关,且为线性相关,所以在硬件上,转速是磁盘性能的一个非常重要的参数。

总平均存取时间Ta可以表示为:Ta = Ts + Tr + Tt。

(1)先来先服务算法:按访问请求到达的先后次序服务。

假设磁盘访问序列:98,183,37,122,14,124,65,67。读写头起始位置:53。求:磁头服务序列和磁头移动总距离(道数)。

由题意和先来先服务算法的思想,得到下图所示的磁头移动轨迹。由此:

磁头服务序列为:98,183,37,122,14,124,65,67

磁头移动总距离=(98-53)+(183-98)+|37-183|+(122-37)+|14-122|+(124-14)+|65-124|+(67-65)=640(磁道)

FCFS

(2)最短寻找时间优先算法:优先选择距当前磁头最近的访问请求进行服务,主要考虑寻道优先。

(3)扫描算法(又称电梯算法):当设备无访问请求时,磁头不动;当有访问请求时,磁头按一个方向移动,在移 [2]  动过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求,如果有则继续扫描;否则改变移动方向,并为经过的访问请求服务,如此反复。

(4)循环扫描算法:

在扫描算法的基础上规定磁头单向移动来提供服务,回返时直接快速移动至起始端而不服务任何请求。由于SCAN算法偏向于处理那些接近最里或最外的磁道的访问请求,所以使用改进型的C-SCAN算法来避免这个问题。

(5)LOOK釆用SCAN算法和C-SCAN算法时磁头总是严格地遵循从盘面的一端到另一端,显然,在实际使用时还可以改进,即磁头移动只需要到达最远端的一个请求即可返回,不需要到达磁盘端点。这种形式的SCAN算法和C-SCAN算法称为LOOK和C-LOOK调度。这是因为它们在朝一个给定方向移动前会查看是否有请求。注意,若无特别说明,也可以默认SCAN算法和C-SCAN算法为LOOK和C-LOOK调度。

知识点十四:文件系统相关(名词解释)

文件系统:文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
文件:一组信息的序列集合,文件名为集合的标识。文件不但反映用户概念中的逻辑结构,而且和存放文件的符存的存储结构紧密相关。
按照文件的逻辑结构的不同,可以把文件分成流式文件和记录式文件。构成流式文件的基本单位是字符或字节,如ASCII码文件或者二进制文件;构成记录式文件的基本单位是记录,一条记录又由若干个数据项构成。这实质是从用户角度看到的文件的逻辑结构.也可以按照物理结构对文件进行分类。

成组:磁盘空间分配是按块为单位的,逻辑记录的大小不可能和物理块相等,通常将若干逻辑记录打包成组,再装入物理快。

分解:把一个物理块里的逻辑记录分离出来的过程。

 文件的存取方式:

(1)顺序存取:按记录的逻辑顺序进行读、写操作的文件存取方法。

(2)直接存取:

(3)索引存取

文件目录结构:一级目录结构、二级目录结构和树形结构。

知识点十五:Window系统引导过程

习题


 

PV操作是重中之重:https://blog.csdn.net/qq_37865996/article/details/84980094

 

 

没有更多推荐了,返回首页