操作系统原理及应用(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

智能推荐

874计算机科学基础综合,2018年四川大学874计算机科学专业基础综合之计算机操作系统考研仿真模拟五套题...-程序员宅基地

文章浏览阅读1.1k次。一、选择题1. 串行接口是指( )。A. 接口与系统总线之间串行传送,接口与I/0设备之间串行传送B. 接口与系统总线之间串行传送,接口与1/0设备之间并行传送C. 接口与系统总线之间并行传送,接口与I/0设备之间串行传送D. 接口与系统总线之间并行传送,接口与I/0设备之间并行传送【答案】C2. 最容易造成很多小碎片的可变分区分配算法是( )。A. 首次适应算法B. 最佳适应算法..._874 计算机科学专业基础综合题型

XShell连接失败:Could not connect to '192.168.191.128' (port 22): Connection failed._could not connect to '192.168.17.128' (port 22): c-程序员宅基地

文章浏览阅读9.7k次,点赞5次,收藏15次。连接xshell失败,报错如下图,怎么解决呢。1、通过ps -e|grep ssh命令判断是否安装ssh服务2、如果只有客户端安装了,服务器没有安装,则需要安装ssh服务器,命令:apt-get install openssh-server3、安装成功之后,启动ssh服务,命令:/etc/init.d/ssh start4、通过ps -e|grep ssh命令再次判断是否正确启动..._could not connect to '192.168.17.128' (port 22): connection failed.

杰理之KeyPage【篇】_杰理 空白芯片 烧入key文件-程序员宅基地

文章浏览阅读209次。00000000_杰理 空白芯片 烧入key文件

一文读懂ChatGPT,满足你对chatGPT的好奇心_引发对chatgpt兴趣的表述-程序员宅基地

文章浏览阅读475次。2023年初,“ChatGPT”一词在社交媒体上引起了热议,人们纷纷探讨它的本质和对社会的影响。就连央视新闻也对此进行了报道。作为新传专业的前沿人士,我们当然不能忽视这一热点。本文将全面解析ChatGPT,打开“技术黑箱”,探讨它对新闻与传播领域的影响。_引发对chatgpt兴趣的表述

中文字符频率统计python_用Python数据分析方法进行汉字声调频率统计分析-程序员宅基地

文章浏览阅读259次。用Python数据分析方法进行汉字声调频率统计分析木合塔尔·沙地克;布合力齐姑丽·瓦斯力【期刊名称】《电脑知识与技术》【年(卷),期】2017(013)035【摘要】该文首先用Python程序,自动获取基本汉字字符集中的所有汉字,然后用汉字拼音转换工具pypinyin把所有汉字转换成拼音,最后根据所有汉字的拼音声调,统计并可视化拼音声调的占比.【总页数】2页(13-14)【关键词】数据分析;数据可..._汉字声调频率统计

linux输出信息调试信息重定向-程序员宅基地

文章浏览阅读64次。最近在做一个android系统移植的项目,所使用的开发板com1是调试串口,就是说会有uboot和kernel的调试信息打印在com1上(ttySAC0)。因为后期要使用ttySAC0作为上层应用通信串口,所以要把所有的调试信息都给去掉。参考网上的几篇文章,自己做了如下修改,终于把调试信息重定向到ttySAC1上了,在这做下记录。参考文章有:http://blog.csdn.net/longt..._嵌入式rootfs 输出重定向到/dev/console

随便推点

uniapp 引入iconfont图标库彩色symbol教程_uniapp symbol图标-程序员宅基地

文章浏览阅读1.2k次,点赞4次,收藏12次。1,先去iconfont登录,然后选择图标加入购物车 2,点击又上角车车添加进入项目我的项目中就会出现选择的图标 3,点击下载至本地,然后解压文件夹,然后切换到uniapp打开终端运行注:要保证自己电脑有安装node(没有安装node可以去官网下载Node.js 中文网)npm i -g iconfont-tools(mac用户失败的话在前面加个sudo,password就是自己的开机密码吧)4,终端切换到上面解压的文件夹里面,运行iconfont-tools 这些可以默认也可以自己命名(我是自己命名的_uniapp symbol图标

C、C++ 对于char*和char[]的理解_c++ char*-程序员宅基地

文章浏览阅读1.2w次,点赞25次,收藏192次。char*和char[]都是指针,指向第一个字符所在的地址,但char*是常量的指针,char[]是指针的常量_c++ char*

Sublime Text2 使用教程-程序员宅基地

文章浏览阅读930次。代码编辑器或者文本编辑器,对于程序员来说,就像剑与战士一样,谁都想拥有一把可以随心驾驭且锋利无比的宝剑,而每一位程序员,同样会去追求最适合自己的强大、灵活的编辑器,相信你和我一样,都不会例外。我用过的编辑器不少,真不少~ 但却没有哪款让我特别心仪的,直到我遇到了 Sublime Text 2 !如果说“神器”是我能给予一款软件最高的评价,那么我很乐意为它封上这么一个称号。它小巧绿色且速度非

对10个整数进行按照从小到大的顺序排序用选择法和冒泡排序_对十个数进行大小排序java-程序员宅基地

文章浏览阅读4.1k次。一、选择法这是每一个数出来跟后面所有的进行比较。2.冒泡排序法,是两个相邻的进行对比。_对十个数进行大小排序java

物联网开发笔记——使用网络调试助手连接阿里云物联网平台(基于MQTT协议)_网络调试助手连接阿里云连不上-程序员宅基地

文章浏览阅读2.9k次。物联网开发笔记——使用网络调试助手连接阿里云物联网平台(基于MQTT协议)其实作者本意是使用4G模块来实现与阿里云物联网平台的连接过程,但是由于自己用的4G模块自身的限制,使得阿里云连接总是无法建立,已经联系客服返厂检修了,于是我在此使用网络调试助手来演示如何与阿里云物联网平台建立连接。一.准备工作1.MQTT协议说明文档(3.1.1版本)2.网络调试助手(可使用域名与服务器建立连接)PS:与阿里云建立连解释,最好使用域名来完成连接过程,而不是使用IP号。这里我跟阿里云的售后工程师咨询过,表示对应_网络调试助手连接阿里云连不上

<<<零基础C++速成>>>_无c语言基础c++期末速成-程序员宅基地

文章浏览阅读544次,点赞5次,收藏6次。运算符与表达式任何高级程序设计语言中,表达式都是最基本的组成部分,可以说C++中的大部分语句都是由表达式构成的。_无c语言基础c++期末速成