操作系统原理及应用(Linux)课后习题解析 王红 主编_操作系统原理及应用(linux)(第二版)王红课后题答案-程序员宅基地

技术标签: Linux  

书籍封面 

第一章 :操作系统概论

习题一

1.1 什么是操作系统,有那些基本功能和特点

  1. 操作系统是覆盖在裸机上的第一层软件,他直接控制,管理各种资源
  2. 基本功能:
    1. 提供人机接口
      1. 命令级接口 
      2. 程序级接口
      3. 图形界面
    2. 管理计算机资源
      1. 处理机管理
      2. 存储管理
      3. 设备管理
      4. 文件管理
  3. 基本特点:
    1. 并发
    2. 异步
    3. 共享
    4. 虚拟

1.2 操作系统发展的动力是什么

  1. 不断地提高计算机资源的利用率
  2. 方便用户
  3. 器件的不断地更新迭代
  4. 计算机体系结构的不断发展

1.3 操作系统的结构有哪几种类型,各有什么特点,Linux系统是什么结构

  1. 单道批处理系统
    1. 在当时被称为监督程序,是操作系统的雏形
    2. 联机批处理
    3. 脱机批处理
  2. 多道批处理系统
    1. 多道性
    2. 调度性
    3. 宏观上并行,微观上串行
    4. 异步性
  3. 分时系统
    1. 多个用户同时联机操作
    2. 各用户独立
    3. 交互性
  4. 实时系统
    1. 实时控制
    2. 实时信息处理
      1. 及时性
      2. 可靠性
  5. 微机操作系统
    1. 单用户单任务操作系统 
      1. cp/m
      2. ms-dos
    2. 单用户多任务操作系统
      1. os/2
      2. Windows
    3. 多用户多任务操作系统
      1. Unix
      2. linux(是一个类unix操作系统,最初由芬兰赫尔辛基大学的linus开发)
  6. 网络操作系统
  7. 分布式操作系统

linux系统属于微机操作系统

1.4 批处理系统的目标是什么

解决人机矛盾,中央处理机高速度和I/O设备的低速度这一矛盾,目标是提高计算机的工作效率

1.5 为什么要引入多道程序并发执行技术

  1. 单道批处理系统中任何时刻只有一道作业在内存中,输入输出和计操作是串行的,因此导致cpu空闲i/o繁忙或者i/o空闲cpu繁忙,计算工作都是串行的
  2. 为了进一步提高资源的利用率,最终提高系统的吞吐量

1.6 试分析单道与多道批处理系统的优缺点

  1. 单道批处理系统缺点
    1. 从单道批处理系统对CPU的利用情况可看出,作业运行过程中若发生IO请求,高速的CPU要等待低速的I/O操作完成,导致CPU资源利用率和系统吞吐量降低。
  2. 多道批处理系统缺点
    1. 作业处理时间长
    2. 交互能力差
    3. 运行过程不确定

1.7 为什么要引入分时操作系统

多道批处理系统充分的提高了计算机资源的利用率和系统的吞吐量,但是缺少人机交互能力,用户把作业交给计算机系统后,就脱离了自己的作业,不能干预作业的运行,因此不能及时修正业务运行过程中出现的错误,只有当作业结束后才能脱机修正错误,使用很不方便,每当写好的程序都需要在真机上面调试,难免不存在问题,用户希望可以随意的干预,控制自己的作业的运行流程,由此开发了交互式分时操作系统.

1.8 分时系统是怎样实现的

主机以很短的时间片为单位,把CPU轮流分配给每个终端使用;直到所有作业被运行完。若某个作业在分配给它的时间片内未完成计算,则该作业暂停运行,把处理器让给其他作业使用,等待下一轮再继续使用。若终端数量不多,每个终端很快就能重新获得CPU,使得每个终端得到及时响应。

1.9 试从独立性,多路性,交互性和及时性四个方面比较批处理系统,分时系统和实时系统.

  1. 多路性:分时系统是为多个终端用户提供服务,实时系统的多路性主要表现在经.常对多路的现场信息进行采集以及多多个对象或多个执行机构进行控制。.
  2. 独立性:每个终端向实时系统提出服务请求时,是彼此独立的工作、互不干扰。
  3. 及时性:实时信息处理系统与分时系统对及时性的要求类似,都以人们能够接受的等待时间来确定。实时控制系统对一时性的要求更高,是以控制对象所要求的开始截止时间或完成截止时间来确定的

...

1.10 比较实时控制系统和实时信息系统两者的主要特点

二者区别:

  1. 实时控制系统:通常把要求进行实时控制的系统统称为实时控制系统,比如自动巡航导弹,飞机的自动驾驶
  2. 实时信息系统:要对信息进行实时处理的系统称为实时信息处理系统,比如飞机订票系统

特点:

  1. 及时性
  2. 可靠性

1.11 操作系统的结构有哪些类型

  1. 层次结构
    1. 任何一层都建立在它下面一层的基础上
  2. 微内核结构
    1. 简化内核代码维护工作
    2. 构建灵活
    3. 安全性高
    4. 方便移植

1.12 操作系统提供了那些人机接口

  1. 命令接口
  2. 程序级接口
  3. 图形界面

1.13 操作系统主要由那些管理模块构成

  1. 处理器管理
  2. 存储管理
  3. 文件管理
  4. 输入、出管理
  5. 任务管理

第二章  进程管理

习题二

2.1 操作系统为什么要引入进程的概念

为了描述操作系统的并发性,引入了进程的概念

2.2 试着比较进程和程序之间的区别

  1. 程序是静态的概念,本身可以作为一种软件资源长期储存,而进程是程序的一次执行过程,是动态的概念,他有从创建到消亡的过程
  2. 进程是一个能独立运行的单位,能与其他进程并发执行,进程是作为资源申请和调度单位存在,通常的程序不能作为一个独立运行单位而并发执行
  3. 程序和进程不存在一一对应的关系,一个程序可以由多个进程共用,一个进程在其活动中也可以顺序的执行若干个程序,一个程序运行一次就创建了一个进程,那么同一个程序运行10次,就产生了十个进程
  4. 各个进程并发执行中会产生相互制约的关系,造成各自前进速度不可预测,而程序是静态的不存在这种异步特征

2.3 程序并发执行为什么会失去封闭性和再现性

  1. 失去封闭性
    1. 程序并发运行时是多个程序共享系统中的各种资源,因此这些资源的状态由多个运行的程序来决定当被一个程序占用时,另外的一个程序就必须等待
  2. 不可再现性
    1. 由于并发执行,程序失去了封闭性也就间接的失去了再现性

2.4 什么叫进程的并发性,试着举一个例子

进程在内存中都有独立的地址结构,多个程序(进程和线程)可以同时处于就绪状态,等待运行,CPU会分配时间给程序,由于CPU分配时间很快很短,所以多个程序可以同时运行,但就单个CPU来说,这种并行属于伪并行,因为CPU运行程序,读取指令仍然按给定的顺序运行,就是说程序的组织结构仍然是顺序结构,这个问题可以按宏观和微观来说,从宏观说,程序是并发的,也就是并行的,因为程序都是运行态或就绪态,比如我们一边上网一边听歌,但从微观来说,CPU在同一个时间片里只运行一个程序,但这个时间片很小,小到CPU切换进程时我们根本感觉不到,我们的几个程序都在很好的运行,所以我们感觉他们是并行的。

2.5 试着举一个例子说明一个程序可能属于多个进程

网游的双开或者模拟器的多开

2.6 试着说明PCB的作用,为什么说PCB是进程存在的唯一标志

(Process Cotrol Block) 为了反应进程的动态性,需要一个数据结构来描述进程的当前状态,本身的特性等

之所以说PCB是进程存在的唯一标识,是因为PCB记录了进程的全部控制信息,庞大而复杂,根据操作系统的要求不同,进程的PCB所包含的内容也有所不同,按照概念可以分为四个组成部分

  1. 进程标识符
  2. 处理机状态
  3. 进程调度信息
  4. 进程控制信息

2.7 试着说明进程由那几部分构成

  1. PCB
  2. 程序部分
  3. 数据部分

2.8 什么叫临界区,为什么进程在进入临界区之前要执行申请操作,在离开临界区要执行释放操作

临界资源即共享资源,对于临界资源,多个进程必须互斥的对它进行访问,在进程中某些代码会访问到临界资源,这段代码就叫做临界区 (critical section),即进程中访问临界资源的一段代码,实现进程对临界资源的互斥访问就是让各进程互斥的进入自己的临界区,也就是说当某个进程在临界区中执行时,其他进程都不能访问自己临界区,这样就保证了某个时间内只有一个进程在临界区内使用临界资源,这样就实现了临界资源的互斥访问。

临界区的执行在时间上是互斥的,进程必须请求允许进入临界区,也就是说当某个进程想进入临界区时,比如进行某种操作来判断当前临界区是否有进程在执行,在具体实现时也是利用代码来判断的,整个进程的访问过程分为以下三个区:

  • 进入区 (entry section):在进入临界区之前,检查可否进入临界区的一段代码。如果可以进入临界区,通常设置相应“正在访问临界区”标志;
  • 退出区 (exit section):用于将"正在访问临界区"标志清除;
  • 剩余区 (remainder section):代码中的其余部分。

临界区互斥问题的解决方案要满足如下三个要求:

  • 互斥:假定进程 Pi 在其临界区内执行,其他任何进程将被排斥在自己的临界区之外;
  • 有空让进:临界区虽没有进程执行,但有些进程需要进入临界区,不能无限期地延长下一个要进入临界区进程的等待时间;
  • 有限等待:在 一个进程提出进入临界区的请求和该请求得到答复的时间内,其他进程进入临界区的次数必须是有限的。

2.9  试说明进程的基本状态及转换的原因

进程的基本状态

  1. 就绪状态
  2. 执行状态
  3. 阻塞状态

转换的原因:进程并非出于固定的某个固定的状态,如下图

2.10 创建一个进程需要做哪些工作

1,申请空白PCB(进程控制块);
2,为新进程分派资源;
3,初始化PCB;
4,将新进程插入就绪队列;

2.11 锁机制的作用是什么,如何实现

作用

  1. 用来实现互斥的一种软件方法,
  2. 利用锁机制来实现进程的互斥

实现方法

就是提供一对上锁和开锁原语,以及一个锁变量w或者一个锁位(1bit),当程序进入临界区之前,首先测试w的状态,w=1表示上锁,该资源已被占用,w=0表示开锁,该资源空闲.利用上锁原语和开锁原语可以实现并发进程的互斥问题,所有要进入临界区的进程必须执行上锁原语,如果顺利通过才让程序进入临界区,在完成对资源的访问后,在执行开锁原语,用以解释临界资源

2.12  从概念上说明记录型信号量的构成,描述原语wait和signal所进行的操作

记录型信号变量的数据结构

struct semaphore{
    int value;
    struct PCB * queue;//为进程链表指针,指向等待该类资源的PCB队列
}semaphore;

semaphore S;//S的值表示系统中可用该类临界资源的数量

wait原语操作流

signal原语操作流

wait所执行的判断就是(就是为了申请临界资源)

if S.value=S.value-1
if S.value >= 0 进程继续执行反之

signal所执行的判断是(就是为了释放临界资源)

if S.value=S.value+1
if S.value <= 0 进程阻塞反之

 

2.13 试说明信号量S的整数值所代表的含义

表示系统中可用的该类临界资源的数量,又称资源信号量

2.14 在生产者消费者问题中,如果缺少了signal(full)或signal(empty),对执行结果将会有何影响

网络摘抄感觉有点问题

  1. 如果缺少signal(full),那么表明从第一个生产者进程开始就没有改变信号量full 值,即使缓冲池产品已满,但full 值还是0,这样消费者进程执行wait(full)时认为缓冲池是空而取不到产品,消费者进程一直处于等待状态。
  2. 如果缺少signal(empty),在生产者进程向n个缓冲区投满产品后消费者进程才开始从中取产品,这时empty=0,full=n,那么每当消费者进程取走一个产品empty 值并不改变,直到缓冲池取空了,empty 值也是0,即使目前缓冲池有n 个空缓冲区,生产者进程要想再往缓冲池中投放产品也会因为申请不到空缓冲区被阻塞。

自己总结了下 

signal(full):生产者wait(empty)申请未被占用的信号量资源,在signal(full)释放掉已被占用的信号量资源,没有signal(full),消费者将取不到产品而一直等待

signal(empty):消费者wait(full)申请已被占用的信号量资源,signal(empty)释放未被占用的信号量资源,没有signal(empty)生产者将在生产n件产品后因为wait(empty)拿不到未被占用的资源而被阻塞

2.15  在生产者消费者问题中,如果两个wait操作即wait(empty)和wait(full)位置互换会产生什么后果

两者互换的话,在生产者申请未被占用的资源时变成了申请已经被占用的资源,最开始,full=0,那么可以生产商品wait(full),接着又signal(full),full还是等于0,消费者取商品时,wait(empty)申请未被占用的资源时,却因为申请不到而等待,当生产者生产n件商品后,之前的商品信息就会被覆盖,重新写入缓冲区,生产者一直工作下去.

2.16  进程的高级通信方式有哪几种

  1. 共享存储器系统
  2. 消息传递系统
  3. 管道通信系统

2.17  什么是线程,试说明它与进程的主要区别

进程:进程是程序的一次执行,同时也是资源分配的基本单位

线程:比进程更小,能独立运行的基本单位,线程比进程能更好的提高程序的并行执行速度,充分的发挥多处理机的优越性,引入线程主要是为了提高系统的执行效率,减少处理机的空转时间,线程是进程中执行运算的最小单位,即执行处理机调度的基本单位

二者区别

  1. 进程是资源分配的基本单位
  2. 线程是处理机分配的基本单位
  3. 一个线程只能属于一个进程,而一个进程可以有多个线程
  4. 线程的执行需要协作同步(不同的线程之间要利用消息通信的方法实现同步)

Linux中基本没区分线程和进程,它们都使用相同的描述方法,使用相同的调度和管理策略

2.18 什么是多线程机制,引入它有什么好处

多线程机制指的是一个程序里面可以有多个路径同时执行,也就是有多个线程,并行的执行,可以在同一个时间点上,一起执行,每一个线程都是一个独立的,都有各自独立的执行空间。

好处

  1. 易于调度
  2. 提高了系统效率
  3. 创建一个线程比创建一个进程所消耗的资源少,创建速度快
  4. 有利于发挥多处理机的功能,提高进程的并行性

2.19  在读写者问题中,如果修改问题中的同步算法,要求对写进程优化,即一旦写进程到达,后续的读者进程就必须等待看,而不管是否有读者进程在读文件,试写出相应的程序段

由于共享文件对于读进程来说不是临界资源,要让它和写进程互斥只需要添加下面的代码段,让它也具有写进程共同的临界资源

wait(wmutex)
signal(wmutex)

2.20  试利用记录型信号写出一个不会出现死锁的哲学家进餐问题算法

五人同时拿起左边或者右边的筷子就会锁死,不锁死解决如下

A.原理:至多只允许四个哲学家同时进餐,以保证至少有一个哲学家能够进餐,最终总会释放出他所使用过的两支筷子,从而可使更多的哲学家进餐。以下将room 作为信号量,只允许4 个哲学家同时进入餐厅就餐,这样就能保证至少有一个哲学家可以就餐,而申请进入餐厅的哲学家进入room 的等待队列,根据FIFO 的原则,总会进入到餐厅就餐,因此不会出现饿死和死锁的现象。

semaphore chopstick[5]={1,1,1,1,1};

semaphore room=4;

void philosopher(int i)

{

    while(true)

    {

    think();

    wait(room); //请求进入房间进餐

    wait(chopstick[i]); //请求左手边的筷子

    wait(chopstick[(i+1)%5]); //请求右手边的筷子

    eat();
    
    signal(chopstick[(i+1)%5]); //释放右手边的筷子

    signal(chopstick[i]); //释放左手边的筷子

    signal(room); //退出房间释放信号量room

    }

}

B.原理:仅当哲学家的左右两支筷子都可用时,才允许他拿起筷子进餐。

方法1:利用AND 型信号量机制实现:根据课程讲述,在一个原语中,将一段代码同时需要的多个临界资源,要么全部分配给它,要么一个都不分配,因此不会出现死锁的情形。当某些资源不够时阻塞调用程;由于等待队列的存在,使得对资源的请求满足FIFO 的要求,因此不会出现饥饿的情形。

semaphore chopstick[5]={1,1,1,1,1};

void philosopher(int I)

{

while(true)

{

think();

Swait(chopstick[(I+1)]%5,chopstick[I]);

eat();

Ssignal(chopstick[(I+1)]%5,chopstick[I]);

}

}

方法2:利用信号量的保护机制实现。通过信号量mutex对eat()之前的取左侧和右侧筷子的操作进行保护,使之成为一个原子操作,这样可以防止死锁的出现。

semaphore mutex = 1 ;

semaphore chopstick[5]={1,1,1,1,1};

void philosopher(int I)

{

while(true)

{

think();

wait(mutex);

wait(chopstick[(I+1)]%5);

wait(chopstick[I]);

signal(mutex);

eat();

signal(chopstick[(I+1)]%5);

signal(chopstick[I]);

}

}

2.21  设公共汽车上有一位司机和一位售票员,他们的活动如下图,请分析司机与售票员之间的同步关系,并用P,V操作实现

在本题中,可bai以设置两个信号量S1,S2, S1表示是否允许司机zhi启动汽车,S2表示是否允许售zhuan票员关车门

int s1=1;
int s2=0;
main()
{
    cobegin;
    driver();
    busman();
}
//司机
driver()
{
    while(1)
    {
        p(s1);
        启动车辆;
          正常运行;
          到站停车;
          v(s2);
    }
}
//售票员
busman()
{
    while(1)
    {
    关车门;
       v(s1);
    售票;
    p(s2);
    开车门;
    上下乘客;
    }
} 
}

注意:PV操作与信号量的处理相关,P表示通过的意思,V表示释放的意思。

2.22  试说明Linux系统的进程有哪几个状态

linux上进程有5种状态:

  • 1. 运行(正在运行或在运行队列中等待)
  • 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
  • 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
  • 4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
  • 5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行) 

ps工具标识进程的5种状态码

  •    D 不可中断 uninterruptible sleep (usually IO)
  •    R 运行 runnable (on run queue)
  •    S 中断 sleeping
  •    T 停止 traced or stopped
  •   Z 僵死 a defunct (”zombie”) process

第三章  处理机调度与死锁

习题三

3.1  处理机调度的主要目的是什么

一般情bai况下,当占用处理机的进程因du为某种zhi请求得不到满足而不得不dao放弃CPU进入等待状态时,或zhuan者当时间片到,系shu统不得不将CPU分配给就绪队列中另一进程的时候,都要引起处理机调度。除此之外,进程正常结束、中断处理等也可能引起处理机的调度。因此,处理机调度是操作系统核心的重要组成部分,它的主要功能如下

  1. 记住进程的状态,如进程名称、指令计数器、程序状态寄存器以及所有通用寄存器等现场信息,将这些信息记录在相应的进程控bai块中。
  2. 根据一定的算法,决定哪个进程能获得处理机,以及占用多长时间。
  3. 收回处理机,即正在执行的进程因为时间片用完或因为某种原因不能再执行的时候,保存该进程的现场,并收回处理机。

3.2 高级调度与低级调度的功能是什么

1、高级调度
高级调度发生在作业对应的新进程创建中,它决定一个进程是否被创建,或者创建后知否能被置为就绪状态,以参与竞争处理机资源从而获得运行。作业是用户要求计算机系统完成的工作,新提交的作业被输入到外存,并保存到批处理后备作业队列中。高级调度根据一定的算法从后备的作业队列中选出若干作业,并分配给必要的资源,为它建立相应的用户作业进程和为其服务的系统进程,最后把它们的程序和数据调入内存,等待进程调度程序对其进行调度。
2、中级调度
中级调度是为了使内存中同时存放的进程数目不至于太多,有时需要把某些进程从内存中移到外存中,以减少多道程序的数目。特别是在采用虚拟存储技术的系统中或分时系统中。引入中级调度的主要目的是为了提高内存的利用率和系统吞吐量。它实际上就是存储器中的对换功能。
3、低级调度
低级调度的主要功能是根据一定的算法将CPU分派给就绪队列中的某个进程(或内核级线程)。执行低级调度功能的程序称作进程调度程序,由它实现CPU在进程间的切换。低级调度的运行频率很高。在一般的操作系统中必须要有低级调度(进程调度),而且其调度策略的优劣直接影响整个系统的功能。
 

3.3  处理机调度一般分为那三级?其中哪一级调度必不可少,为什么?

三级指的是:

  1. 作业调度(高级调度)
  2. 对换(中级调度)
  3. 进程调度(低级调度)

必不可少的是:进程调度

原因:

  1. 高级调度也就是作业调度,用于决定把外存上处于后备队列中的哪些作业调入内存,并为它们创建进程、分配必要的资源,然后,再将新创建的进程排在就绪队列上,准备执行。在批处理系统中,需要有高级调度,但在分时系统和实时系统中通常不需要作业调度。所以不是必不可少的调度。
  2. 又称中程调度、交换调度。主要任务是按照给定的原则和策略,将处于外存对换区中的重又具备运行条件的进程调入内存,或将处于内存的暂时不能运行的进程交换到外存对换区。

  3. 又称进程调度、短程调度、微观调度。主要任务是按照某种策略和方法从就绪队列中选取一个进程,将处理机分配给它。是操作系统中最基本的一种调度,在一般操作系统中都必须配置进程调度

  4. 低级调度是必不可少的。因为是操作系统中最基本的一种调度。

3.4  作业在其存在的过程中分为哪四种状态

  1. 提交状态,从输入设备进入外部存储设备的过程
  2. 后备状态,输入管理系统不断地将作业输入到外村中对应部分(输入井),若一个作业的全部信息输入到输入井,则在它还未被调度执行之前,该作业处于后备状态
  3. 执行状态,作业调度程序从后备作业中选取若干作业投入运行
  4. 完成状态,作业运行完毕

3.5  作业提交过后是否立即加载内存,为什么?

不会,到了执行阶段才会有机会被分到内存,在这之前还得经历后备状态,在输入管理系统将所有的作业信息输入到外存中对应的输入井中,才会到作业调度程序取出,进入执行状态

3.6  在确定调度算法和调度方式时,常用的评价标准有哪些

调度方式

  1. 非抢占式: 不允许进程抢占已经分配出去的处理机,优点是:实现简单,系统开销小,适用于大多数的批处理系统环境,但是难满足紧急需求
  2. 抢占式:  允许调度程序根据某种原则暂停某个正在执行的进程,将处理机回收,重新分配给另一个进程,抢占的原则有优先权原则和短作业(短进程)优先原则,和时间片原则

调度算法的评价准则

  1. 面向用户准则:  要求一就是周转时间短,(也就是从作业被系统提交到作业终止所经历的时间间隔)
  2. 面向系统准则:  
    1. 系统吞吐量
    2. 处理及利用率
    3. 各类资源平衡利用

3.7  什么是实时调度,与非实时相比有何区别

什么是实时调度

实时调度是为了完成实时处理任务而分配计算机处理器的调度方法

区别

  1. 实时调度所调度的任务有完成时限,而非实时调度没有。从而,实时调度算法的正确与否不仅与算法的逻辑有关,也与调度算法调度的时限有关。
  2. 实时调度要求较快的进程或线程切换时间,而非实时调度的进程或线程的切换时间较长。
  3. 非实时调度强调资源利用率(批处理系统)或用户共享处理机(分时系统),实时调度则主要强调在规定时限范围内完成对相应设备的控制。
  4. 实时调度为抢先式调度,而非实时调度则很少采用抢先式调度

3.8  在批处理系统,分时系统和实时系统中,各采用哪几种进程(作业)调度算法

1,批处理操作系统
  批处理(Batch Processing)操作系统的工作方式是:用户将作业交给系统操作员,系统操作员将许多用户的作业组成一批作业,之后输入到计算机中,在系统中形成一个自动转接的连续的作业流,然后自动操作系统,系统自动、依次执行每个作业。最后由操作员将作业结果交给用户。
批处理操作系统的特点是:多道和成批处理。
 2.分时操作系统
 分时(Time Sharing)操作系统的工作方式是:一台主机连接了若干个终端,每个终端有一个用户在使用。用户交互式地向系统提出命令请求,系统接受每个用户的命令,采用时间片轮转方式处理服务请求,并通过交互方式在终端上向用户显示结果。用户根据上步结果发出下道命。分时操作系统将CPU的时间划分成若干个片段,称为时间片。操作系统以时间片为单位,轮流为每个终端用户服务。每个用户轮流使用一个时间片而使每个用户并不感到有别的用户存在。分时系统具有多路性、交互性、“独占”性和及时性的特征。多路性指,伺时有多个用户使用一台计算机,宏观上看是多个人同时使用一个CPU,微观上是多个人在不同时刻轮流使用CPU。交互性是指,用户根据系统响应结果进一步提出新请求(用户直接干预每一步)。“独占”性是指,用户感觉不到计算机为其他人服务,就像整个系统为他所独占。及时性指,系统对用户提出的请求及时响应。它支持位于不同终端的多个用户同时使用一台计算机,彼此独立互不干扰,用户感到好像一台计算机全为他所用。
 常见的通用操作系统是分时系统与批处理系统的结合。其原则是:分时优先,批处理在后。“前台”响应需频繁交互的作业,如终端的要求; “后台”处理时间性要求不强的作业。
  3.实时操作系统
 实时操作系统(RealTimeOperatingSystem,RTOS)是指使计算机能及时响应外部事件的请求在规定的严格时间内完成对该事件的处理,并控制所有实时设备和实时任务协调一致地工作的操作系统。实时操作系统要追求的目标是:对外部请求在严格时间范围内做出反应,有高可靠性和完整性。其主要特点是资源的分配和调度首先要考虑实时性然后才是效率。此外,实时操作系统应有较强的容错能力。

批处理系统常用调度算法:
①、先来先服务:FCFS
②、最短作业优先
③、最短剩余时间优先
④、响应比最高者优先
分时系统调度算法:
①、轮转调度
②、优先级调度
③、多级队列调度
④、彩票调度
实时系统调度算法:
①、单比率调度
②、限期调度
③、最少裕度法

3.9  在操作系统中引起进程调度的主要因素有哪些

  1. 完成任务
  2. 等待资源
  3. 运行时间已到
  4. 进入睡眠状态
  5. 发现标志
  6. 优先级变化

3.10  假设有四道作业,他们的提交时刻及需要执行的时间如下表所示,试计算在单道程序环境下,采用先来先服务优先调度算法和短作业优先调度算法时的平均周转时间和平均带权周转时间,并指出它们的调度顺序.

带权周转时间是指作业的周转时间与系统为它提供服务的时间之比,反映作业(或进程)长短问题。带权周转时间越大,作业(或进程)越短;带权周转时间越小,作业(或进程)越长。

3.11  什么叫死锁?死锁产生的原因和必要条件有哪些?

死锁是指多个进程循环等待其他进程占有的资源,因而无期限的僵持下去的局面.

产生的原因有:  各进程之间竞争有限的资源,进程推进顺序不当

必要条件:   

  1. 互斥条件
  2. 占有且申请
  3. 不可抢占条件
  4. 环路等待条件

3.12  在解决死锁问题的几个方法中,那种方法最容易实现,那种方法资源利用率最高?

预防死锁最容易实现,但是由于这种方法施加的限制条件太严格,可能会导致系统资源利用率和系统吞吐率降低。
避免死锁只需事先加以较弱的限制条件,便可获得较高的资源利用率和系统吞吐率,但在实现上有一定的难度,目前较完善的系统中常用此方法来避免发生死锁。

3.13  设时间片为一个时间单位.现有四个进程,每一个进程比上一个进程迟到一个时间单位,各进程要求运行时间如下表,系统对进程调度采用时间片轮转法.试计算各进程的完成时间和周转时间.

3.14  假定某系统有五个进程p1,p2,p3,p4,p5共享三类资源A,B,C.资源类A共有17个资源,资源类B共有5个资源,资源类C共有20个资源.某一时刻各进程对资源的需求和占用情况如下表所示.

请求进程\资源 最大资源需求量 已分配资源数量(allocation)
A B C A B C

P1

5

5 9 2 1 2
p2 5 3 6 4 0 2
p3 4 0 11 4 0 5
p4 4 2 5 2 0 4
p5 4 2 4 3 1 4

(1),判断系统的安全性

(2),在该时刻若进程P2请求资源(0,3,4),是否能分配资源?为什么

need=max\begin{Bmatrix} 5& 5 & 9\\ 5 &3 &6 \\ 4& 0 & 11\\ 4& 2 & 5\\ 4& 2 & 4 \end{Bmatrix} -allocation\begin{Bmatrix} 2 &1 &2 \\ 4& 0 &2 \\ 4 &0 &5 \\ 2&0 &4 \\ 3& 1 & 4 \end{Bmatrix} =need \begin{Bmatrix} 3& 4 &7 \\ 1 & 3 & 4\\ 0 & 0 &6 \\ 2& 2 &1 \\ 1& 1& 0 \end{Bmatrix}

available=max-allocation=(17,5,20)-(15,2,17)=(2,3,3)

  1. work(2,3,3) finish(false,false,false,false,false)
  2. need[4]<work  可以满足P4对资源的请求  分配完成后  finish[4]=true  执行完成后就是放它所占有的资源  work=work+allocation[4]=(2,3,3)+(2,0,4)=(4,3,7)
  3. need[3]<work  可以满足P3对资源的请求  分配完成后  finish[3]=true  执行完成后就释放它所占有的资源  work=work+allocation[3]=(4,3,7)+(4,0,5)=(8,3,12)
  4. need[1]<work  可以满足P1对资源的请求  分配完成后  finish[1]=true  执行完成后就释放它所占有的资源  work=work+allocation[1]=(8,3,12)+(2,1,2)=(10,4,14)
  5. ...

所以系统是安全的,安全序列为:4,3,1,2,5   不知道是不是对的欢迎指正

(2) 不能分配,因为此时的可用资源是(2,3,3)而P2进程的need资源是(1,3,4)不够所以不会给它分配资源,继续等待

3.15  试说明Linux系统的进程调度算法所采用的策略

  1. 静态优先级
  2. 普通进程的调度策略
  3. 实时进程的调度策略

第四章  内存管理

习题

4.1  存储管理的功能是什么

目的:  是为了方便用户和提高内存的利用率

任务:  管理内存空间,进行虚拟地址到物理地址的转换,实现内存的逻辑扩充,完成内存的共享和保护

4.2  储存分配的到几种方式

静态,动态和非连续

4.3  分区分配方法有哪几种

  1. 单道程序连续分配
  2. 固定分区分配方式
  3. 动态分区分配方式
  4. 可重定位分区

4.4  简述页式存储管理的实现思想

采用"紧凑"技术把碎片连接成一个大的空闲区能够满足作业对连续内存空间的要求,这样就可以解决按区分配中存在的碎片问题.但这是以花费CPU的时间为代价换来的,这种办法只有在分配区数目不太多.而且分配不太频繁的情况下采用,为此,很容易想到让程序不连续存放,例如,有一个作业要求运行,其程序的地址段  

4.5  试说明缺页中断和一般中断的主要区别

 

4.6  试着描述分页系统和分段系统的主要区别

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

参考文章:

https://blog.csdn.net/qq_43606914/article/details/105836815

https://blog.csdn.net/syzdev/article/details/104898592/

https://www.cnblogs.com/pesuedream/p/10976756.html

https://wenwen.sogou.com/z/q121904809.htm

https://www.cnblogs.com/52Cyan/p/3663422.html

https://blog.csdn.net/weibo1230123/article/details/82187572

https://zhidao.baidu.com/question/717631877792753285.html

https://blog.csdn.net/xieminyao123/article/details/79116985  !important

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xiao_dou_ya_cool/article/details/111682932

智能推荐

el-table-column 表格列自适应宽度的组件封装说明

针对组件业务上的需求,需要给 el-table-column 加上限制,需保证表头在一行展示,部分列的内容要一行展示,自适应单项列的宽度;

Ali-Sentinel-链路控制

Ali-Sentinel-链路控制

C语言实现SM4(基于GMSSL)_使用c语言调用openssl实现sm4代码-程序员宅基地

文章浏览阅读4.2k次。环境:vs2019 gmssl 32位编译1、首先新建项目2、在VS的工程设置工程属性(参考连接https://blog.csdn.net/zhonghua_csdn/article/details/99011892)右击工程名 ——> 选择“属性” 在“VC++目录”——> “包含目录”中添加openSSL的include文件(在您安装openssl的文件下) 在“VC++目录”——> “库目录”中添加openSSL的lib文件(在您安装openssl的文件下) 在“._使用c语言调用openssl实现sm4代码

让Windows免疫Autorun病毒-程序员宅基地

文章浏览阅读73次。来源:http://www.bysjhf.com.cn目前,U盘病毒的情况非常严重,几乎所有带病毒的U盘,根目录里都有一个autorun.inf。右键菜单多了“自动播放”、“Open”、“Browser”等项目。由于我们习惯用双击来打开磁盘,但现在我们双击,通常不是打开U盘,而是让autorun.inf里所设的程序自动播放。所以对于很多人来说相当麻烦。其实Autorun...._linux怎么为windows做autorun免疫

RTCRTC

上边的PRL是计数目标,写入6就是7分频,写入9就是10分频,因为计数值包含了0,重装值写入n就是n+1分频,下边的DIV就是每来一个时钟记一个数,DIV计数器是一个自减计数器,每来一个时钟DIV的值自减一次,自减到0的时候,再来一个输入时钟,DIV输出一个脉冲产生溢出信号,同时DIV从PRL获取重装值,回到重装值继续自减。

随便推点

解决create-react-app创建项目出错_installing packages. this might take a couple of m-程序员宅基地

文章浏览阅读1.3k次。Installing packages. This might take a couple of minutes.Installing react, react-dom, and react-scripts with cra-template-typescript...npm ERR! code 1npm ERR! path C:\Users\MHX\Desktop\react-demo\node_modules\canvasnpm ERR! command failednpm ERR! comm_installing packages. this might take a couple of minutes. installing react,

关于西电计科本科学习的一些经验分享与资料汇总_西电毕设拿良容易吗-程序员宅基地

文章浏览阅读1.9w次,点赞43次,收藏214次。关于西电计科本科学习的一些经验分享与资料汇总_西电毕设拿良容易吗

【nodejs】使用express-generator快速搭建项目框架-程序员宅基地

文章浏览阅读279次,点赞9次,收藏3次。项目根目录打开终端,执行以下命令,安装依赖。执行以下命令后,在浏览器中打开。就可以打开这个项目了。

c++二维vector_c++ 二维vector-程序员宅基地

文章浏览阅读8.5k次,点赞4次,收藏24次。关于C++中二维vector使用vector本来就是可以用来代替一维数组的,vector提供了operator[]函数,可以像数组一样的操作,而且还有边界检查,动态改变大小。这里只介绍用它来代替二维的数组,二维以上的可以依此类推。1、定义二维vectorvector<vector<int>> A;//错误的定义方式vector<vector<int> > A;//正缺的定义方式vector<vector<int> > v;/_c++ 二维vector

python算法题_python算法题-程序员宅基地

文章浏览阅读187次。广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!导言:记录下学习的算法题,写练多,脑子才能转的快! 今日算法题:二分法查找说下我对于二分法查找的理解:【和猜数字游戏差不多】 要在一个有序数列中找到一个与对应给定数字。 1、找到有序数列中最中间的数字2、若中间值大于给定值,则在左边数列重新二分查找3、若中间值小于给定值,则在右边数列..._python服务端算法题

ubuntu系统无法连接蓝牙设备_ubuntu蓝牙连不上-程序员宅基地

文章浏览阅读707次,点赞11次,收藏8次。选择需要连接的设备,右键点击连接,信任即可。直接点击 blueman。_ubuntu蓝牙连不上