操作系统刷题(三)

来源:互联网 发布:装饰器模式 java 编辑:程序博客网 时间:2024/06/05 03:12

部分解析转载自网络

1.进程间共享通信的方式

主要有:管道、信号量、消息队列、共享内存、信号、套接口

管道:速度慢,容量有限
消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题。
信号量:不能传递复杂消息,只能用来同步
共享内存区:能够很容易控制容量,速度快 ,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程间通讯,不过没这个必要,线程间本来就已经共享了一块内存的。

2.线程局部存储( Thread Local Storage , TLS )

用来将数据与一个正在执行的指定线程关联起来,线程内部的各个函数调用都能访问,但其它线程不能访问这些数据

3.网络操作系统和分布式操作系统:

网络操作系统是服务于计算机网络,按照网络体系结构的各种协议来完成网络的通信、资源共享、网络管理和安全管理的系统软件。
分布式操作系统是建立在网络操作系统之上,对用户屏蔽了系统资源的分布而形成的一个逻辑整体系统的操作系统。

网络操作系统和分布式操作系统的区别是:
(1)分布性。分布式操作系统的处理和控制功能均为分布式的;而网络操作系统虽具分布处理功能,但其控制功能却是集中在某个或某些主机或网络服务器中,即集中式控制方式。
(2)并行性。分布式操作系统具有任务分配功能,可将多个任务分配到多个处理单元上,使这些任务并行执行,从而加速了任务的执行;而网络操作系统通常无任务分配功能,网络中每个用户的一个或多个任务通常都在本地计算机上处理。
(3)透明性。分布式操作系统通常能很好地隐藏系统内部的实现细节。包括对象的物理位置、并发控制和系统故障等对用户都是透明的。例如,当用户要访问某个文件时,只需提供文件名而无须知道(所要访问的对象)它是驻留在那个站点上,即可对它进行访问,以即具有物理位置的透明性。网络操作系统的透明性则主要指操作实现上的透明性。例如,当用户要访问服务器上的文件时,只需发出相应的文件存取命令,而无需了解对该文件的存取是如何实现的。
(4)共享性。分布式操作系统支持系统中所有用户对分布在各个站点上的软硬件资源的共享和透明方式访问。而网络操作系统所提供的资源共享功能仅局限于主机或网络服务器中资源,对于其它机器上的资源通常仅有使用该机的用户独占。
(5)健壮性。分布式操作系统由于处理和控制搜索功能的分布性而具有较好的可用性和可靠性,即健壮性。而网络操作系统由于控制功能的集中式特点而使系统重构功能较弱,且具有潜在的不可靠性

4. CPU调度算法:

一 基本概念

1 队列中的记录通常是进程的进程控制块。

2 CPU调度决策可在如下四种环境下发生
a 当一个进程从运行状态切换到等待状态 例如,I/O请求或调用wait以等待一个子进程的终止
b 党一个进程从运行状态切换到就需状态 例如,当出现中断
c 当一个进程从等待状态切换到就需状态 例如,I/O完成
d 当一个进程终止

当调度只能发生在第一和第四种种情况时,称调度方案是非抢占的,否则调度方案是可抢占的。

采用非抢占调度,一旦CPU被分配给一个进程,那么该进程会一直使用CPU直到进程终止或切换到等待状态时释放CPU

3 分派程序
功能包括:
切换上下文
切换到用户模式
跳转到用户程序的合适位置以重新启动这个程序

二 调度准则
CPU使用率: 40%到90%

吞吐量:一个时间单元内所完成进程的数量。

周转时间:从进程提交到进程完成的时间间隔称为周转时间。周转时间是所有时间段之和,包括等待进入内存、在就绪队列中等待

,在cpu上执行和I/O执行

等待时间:CPU调度算法并不影响进程运行和执行I/O的时间量。它只影响进程在就需队列中等待所花费的时间。

响应时间:从提交请求到产生第一响应的时间。是开始响应所需要的时间,而不是输出该响应所需要的时间。

CPU使用率和吞吐量最大化,周转时间、等待时间和相应时间最小化

三 CPU调度算法

1 先到先服务调度
FCFS(first-come,first-served)
当一个进程进入到就需队列,其pcb就被链接到队列的尾部,当CPU空闲时,CPU被分配给位于队列头的进程。接着,该运行进程从队

列中被删除。

FCFS策略的平均等待时间相当长

FCFS调度算法是非抢占式的。

2 最短作业优先调度
SJF(shortest-job-first)
SJF算法的真正困难时如何知道下一个CPU请求的长度。SJF调度经常用于长期调度。

3 优先权调度
每个进程都有一个优先权与其关联,具有最高优先权的进程会被分配到CPU。具有相同优先权的进程按FCFS顺序调度。

优先权可以通过内部或外部方式来定义。

优先权调度可以使可抢占的或者非抢占的。

优先权调度算法的一个主要问题是无穷阻塞。解决办法是老化,老化是一种技术,以逐渐增加在系统中等待很长时间的进程的优先

权。

4 轮转法调度
轮转法(RR)调度算法是专门为分时系统设计的。定义一个小时间单元,称为时间量或时间片。时间片通常为10ms到100ms。就绪队

列作为循环队列处理。CPU调度程序循环就绪队列,为每个进程分配不超过一个时间片间隔的CPU。

如果上下文切换时间约为时间片的10%,那么约10%的CPU时间会浪费在上下文切换上。


5 多级队列调度
(multilevel queue-scheduling algorithm)
不同队列可用于前台和后台进程,前台队列可能使用RR算法调度,而后台队列可能使用FCFS算法调度。

6 多级反馈队列调度
对于多级队列调度算法,通常进程进入系统时,被永久地分配到一个队列,进程并不在队列之间移动。

7 高相应比优先(Highest Response Ratio First)
FCFS和SJF的折中。选择响应比最高的,即照顾短作业又不至于长作业等待时间过长。
响应比 =(等待时间+要求服务时间)/ 要求服务时间,即RR=(w+s)/s=1+w/s

四 实时调度
实时计算分为两种类型:硬实时,软实时
硬实时:系统需要在保证的时间内完成关键任务。通常,在提交进程时,同时有一条语句告诉系统用来完成或执行I/O所需要的时间

软实时:要求关键进程要比其他较弱进程拥有更高的优先权。
实现软实时要求自习设计调度程序和操作系统的有关方面:
第一,系统必须有优先权调度,且实时进程必须有最高的优先权。实时进程的优先权不随时间而下降,尽管非实时进程的优先权可以。
第二,分配延迟必须小

分派程序停止一个进程而启动另一个进程执行所需要花费的时间成为分派延迟

五、linux
linux提供了两种独立进程调度算法。一种是分时算法,用于在多个进程之间进行公平可抢占调度
一种是为实时任务设计的,
linux只允许在用户模式下运行的进程被抢占

第一种调度类型是用于分时进程的,对于传统的分时进程,linux使用了优先权的、基于信用度的算法。每个进程都有一定数量的调

度信用度,要选择一个新任务运行时,具有最多信用的进程会被选择。每次出现定时器中断时,当前运行进程会失去一个信用,

其信用为0时,它会被暂停且另一个进程会被选择。

linux使用两种实时调度类型:先到先处理和轮转。

时间片轮转(RR)调度对于分时系统更为适合。
FCFS算法是非抢占的,RR算法是可抢占的。SJF和优先级算法可以使可抢占的也可以使非抢占的。

多级队列算法允许多个不同算法用于各种类型的进程,最为常用的是前台交互队列(RR)和后台批处理队列(FCFS)。多级反馈队

列允许进程在队列之间迁移。

solaris 2和windows2000都采用可抢占的、基于优先级的调度算法,包括支持实时线程,来调度线程
linux进程调度程序也使用基于优先级的算法,并提供实时支持。


5.进程间的相互关系:相互独立而互相制约

6.非抢占CPU调度算法中,平均响应时间最短的:若时间片很长,则是短任务优先算法;若时间片很短,则时间片轮转算法。

7.可变分区法可以有效消除内部碎片,而不是外部碎片。针对每个进程量体裁衣。

8.一次内存访问、SSD硬盘访问、SATA硬盘访问的时间分别是:几十纳秒、几十微秒、几十毫秒

9.进程同步:逻辑上直接制约;进程互斥:间接制约

10.多级队列调度:该算法将系统中的进程就绪队列从一个拆分为若干个,将不同类型或性质的进程固定分配在不同的就绪队列,不同的就绪队列采用不同的调度算法,一个就绪队列中的进程可以设置不同的优先级,不同的就绪队列本身也可以设置不同的优先级。

多级队列调度算法由于设置多个就绪队列,因此对每个就绪队列就可以实施不同的调度算法,因此,系统针对不同用户进程的需求,很容易提供多种调度策略。

多级反馈队列调度:不同级别对应不同队列。队列优先级越高,越先执行。队列内部采用时间片轮转算法,优先级越高,时间片越短。

11.线程共有的:堆。

线程独有的:栈,寄存器,状态和程序寄存器

12.引起进程创建的时间:用户登录,作业调度,用户程序提出请求(提供服务),应用进程请求(应用请求)。

设备分配只需要分配相应的端口,不需要新创建进程,除非设备提出中断请求或者系统调用设备。

13.段页式存储管理系统中,虚拟地址空间:段号、页号、页内偏移量

14.虚拟存储器的最大容量 = min(内存+外存,2^n)

15.进程的三种基本状态

进程在运行中不断地改变其运行状态。通常,一个运行进程必须具有以下三种基本状态。

就绪(Ready)状态

当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。

执行(Running)状态

当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。

阻塞(Blocked)状态

正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等。
在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程。
16.文件的物理组织有顺序、链接和索引
17.linux系统中,以文件方式访问设备。
18.



原创粉丝点击