【软件设计师】第四章 操作系统知识


1、操作系统概述

能有效的组织和管理系统中的各种软\硬件资源,合理的组织计算机系统工作流程,控制程序的执行,并且向用户提供一个良好的工作环境和友好接口

1.1 操作系统的作用

  • 管理系统的硬件、软件(API接口)、数据资源
  • 控制程序运行
  • 人机之间的接口
  • 应用软件与硬件直接的接口

1.2 操作系统特征与功能

  • 进程管理
    • 进程的状态、前趋图、PV操作、死锁问题
  • 存储管理
    • 段页式存储、页面置换算法
  • 文件管理
  • 索引文件、位示图
  • 作业管理
  • 设备管理
  • 微内核操作系统
    • 虚设备与SPOOLING技术

2、进程管理

在这里插入图片描述

在这里插入图片描述

2.1 前趋图

前趋图是一种常用于流程建模和分析的工具,它通过图形化的方式展示了一个事件或任务的前置条件、流程和后续影响等信息,帮助人们更好地理解和掌握复杂的流程关系。使用前趋图可以帮助我们更好地了解任务之间的关系,优化流程效率,降低风险,提高工作质量。同时,前趋图还可以用于项目管理、生产计划、资源分配、风险评估等方面,是一种非常实用的工具。

前趋图通常由节点和箭头组成,其中节点表示一个任务或事件,箭头则表示它们之间的关系。在前趋图中,箭头一般分为三种类型:

  • 实线箭头表示任务的依赖关系
  • 虚线箭头表示任务的可选路径
  • 双向箭头则表示任务之间的相互依赖关系。

在绘制前趋图时,我们需要先确定任务的顺序和依赖关系,并标注每个任务的名称和持续时间。然后,根据任务之间的依赖关系和可选路径,绘制出节点和箭头,并加上相应的文本描述,以便读者更好地理解和使用。

2.2 进程的同步与互斥

  • 进程的同步
    进程同步指的是多个进程之间按照一定的顺序执行,以避免出现不可预测的结果。进程同步的实现方法包括互斥、信号量、管程等。其中,互斥是最常见和简单的实现方式。
  • 进程的互斥
    互斥是指多个进程同时访问共享资源时,需要对资源进行加锁和解锁操作,以保证同一时间只有一个进程可以访问共享资源,从而避免竞争和冲突。常用的互斥方法包括临界区、互斥量、读写锁等。
  • 进程互斥的实现需要满足以下条件:
    • 互斥锁是二元的,即只有“锁定”和“未锁定”两种状态。
    • 一旦一个进程获得了互斥锁,其他进程就必须等待它释放锁之后才能获得锁并进入临界区。
    • 每次只有一个进程能够进入临界区,并执行对共享资源的访问。

2.3 PV操作(信号量操作)

三个概念

  • 临界资源:诸进程间需要互斥方式对其进行共享的资源,如打印机、磁带机等
  • 临界区:每个进程中访问临界资源的那段代码称为临界区
  • 信号量:是一种特殊的变量

在这里插入图片描述
【例题1】假设有两个进程P1和P2,它们需要共享一个资源,但是该资源只能同时被一个进程访问。为了避免竞争条件和死锁,可以使用PV操作。在下面的代码片段中,实现了两个进程P1和P2,并使用了共享资源。其中,semaphore是一个全局变量,初始值为1。请补充代码片段中的PV操作函数,以保证资源被正确地共享。

#include <stdio.h>
#include <pthread.h>
#include <semaphore.h>
#include <unistd.h>

sem_t semaphore;

void *process_one(void *arg)
{
    
    
    printf("P1 is waiting to access the resource.\n");
    // PV操作
    printf("P1 is accessing the resource.\n");
    sleep(2);
    printf("P1 is releasing the resource.\n");
    // PV操作
    pthread_exit(NULL);
}

void *process_two(void *arg)
{
    
    
    printf("P2 is waiting to access the resource.\n");
    // PV操作
    printf("P2 is accessing the resource.\n");
    sleep(1);
    printf("P2 is releasing the resource.\n");
    // PV操作
    pthread_exit(NULL);
}

int main()
{
    
    
    pthread_t t1, t2;
    sem_init(&semaphore, 0, 1);

    pthread_create(&t1, NULL, process_one, NULL);
    pthread_create(&t2, NULL, process_two, NULL);

    pthread_join(t1, NULL);
    pthread_join(t2, NULL);

    sem_destroy(&semaphore);

    return 0;
}

【答案】

void P(sem_t *sem)
{
    
    
    sem_wait(sem);
}

void V(sem_t *sem)
{
    
    
    sem_post(sem);
}

【解析】
PV操作函数中的P函数用于获取(sem_wait)信号量,V函数用于释放(sem_post)信号量,从而实现了对共享资源的互斥访问。在主函数中,使用sem_init对信号量进行初始化,并在每个进程中使用P和V函数来获取和释放信号量。最终,通过使用pthread_join函数等待两个线程的结束,保证了共享资源被正确地共享。

【例题2】
在这里插入图片描述

【解】(1)A (2)C

在这里插入图片描述

【例题3】
在这里插入图片描述
【解答】(1)C (2) A (3) A

在这里插入图片描述

2.3 死锁问题(p138)

死锁的定义:如果一组进程中的每个进程都在等待仅由该组进程中的其他进程才能引发的事件发生,那么该组进程是死锁的

进程管理是操作系统的核心,但如果设计不当,就会出现死锁的问题。如果一个进程在等待一件不可能发生的事,则进程就死锁了。而如果一个或者多个进程产生死锁,就会造成系统死锁

【例题】
系统有3个进程:A、B、C。这3个进程都需要5个系统资源。如果系统至少有多少个资源,则不可能发生死锁。
【解答】

K*(n-1)+1

得出至少需要3*(5-1)+1=13个资源

死锁的四大条件

  • 互斥条件
  • 请求和保持条件
  • 不可抢占条件
  • 循环等待条件

死锁的处理方法

  • 预防死锁
  • 避免死锁
  • 检测死锁
  • 解除死锁

2.4 银行家算法

银行家算法:分配资源的原则

  • 当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程
  • 进程可以分期请求资源,但请求的总数不能超过最大需求量
  • 当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源
    【例题】

    假设系统中有三类互斥资源R1、R2、R3,可用资源数分别是9、8、5.在T0时刻系统中有P1、P3、P4和P5五个进程。这些进程对资源的最大需求量和已分配资源数如下所示,如果进程按_____序列执行,那恶魔系统状态是安全的。

在这里插入图片描述
供选择的答案:
A. P1->P2->P4->P5- >P3
B. P2->P4->P5->P1->P3
C. P2->P1->P4->P5->P3
D. P4->P2->P4->P1->P3

3、存储管理

3.1 分区存储管理(P204)

在这里插入图片描述

3.2 页式存储组织

把用户程序分成等分大小的页
在这里插入图片描述

页式存储组织的优缺点

  • 内存利用率高,碎片小,分配及管理简单
  • 增加了系统的开销;可能产生抖动现象
    在这里插入图片描述
    【解】:D、B
    在这里插入图片描述

3.3 段式存储组织

  • 优点:多道程序共享内存,各段程序修改互不影响
  • 缺点:内存利用率低,内存碎片浪费大
    在这里插入图片描述

3.4 段页式存储组织

  • 优点:空间浪费小,存储共享容易、存储保护容易、能动态链接
  • 缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内容也随之增加,使得执行速度大大下降

3.5 快表

快表是一块小容量的相联存储器(Associative Memory),由高速缓存器组成,速度快,并且可以从硬件上保证按内容并行查找,一般用来存放当前访问最频繁的少数活动页面的页号。

3.6 页面置换算法

  • 先进先出算法(FIFO)
  • 会产生抖动
    在这里插入图片描述
    在这里插入图片描述
    【例题】
    在这里插入图片描述
    【解】
    在这里插入图片描述

4 文件管理

4.1 索引文件结构

索引文件结构例题
【例题】
在这里插入图片描述
【解】5-6都是一级间接地址引用,用盘块大小除地址所占字节就是1kb/4
索引文件结构例题解答

4.2 文件和树形目录结构

在这里插入图片描述

绝对路径:是从盘符开始的路径
相对路径:是从当前路径开始的路径
若当前目前为:D1,要求F2路径,则:绝对路径:/D1/W2/F2,相对路径:W2/F2

  • 文件属性
    • R只读文件属性
    • A存档属性
    • S系统文件
    • H隐藏文件
  • 文件名的组成
    • 驱动器号
    • 路径
    • 主文件名
    • 扩展名

4.3 空闲存储空间的管理

  • 空闲区表法
  • 空闲链表法
  • 位示图法
  • 成组链接法

【位示图法例题】
在这里插入图片描述
【解】
在这里插入图片描述

5、设备管理

5.1 数据传输控制方式

数据传输控制方式的详细总结
在这里插入图片描述

5.2 虚设备与SPOOLING技术

在这里插入图片描述
SPOOLING(Simultaneous Peripheral Operations On-line)技术是一种在计算机系统中实现输入输出缓冲的技术,它可以将输入输出任务放到一个队列中进行管理,从而提高系统的并发性和效率。

SPOOLING技术的主要原理是将输入输出任务放到一个队列中进行缓冲,由专门的进程负责管理和调度。当输入输出设备准备好时,进程会从队列中获取任务并进行处理,从而实现输入输出操作。

SPOOLING技术的优点是可以将输入输出任务与主机处理任务分离,从而实现并发处理和任务调度。它可以充分利用计算机系统的资源,提高系统的效率和可靠性。此外,SPOOLING技术还可以实现打印输出的排序和分页等功能,从而提高输出的质量和可读性。

SPOOLING技术的应用范围非常广泛,例如打印输出、磁盘存储、网络通信等方面。在实际应用中,SPOOLING技术通常与虚设备结合使用,例如使用虚拟打印机实现打印输出的缓冲和调度,从而提高打印输出的效率和质量。

6、微内核操作系统

在这里插入图片描述

实质 优点 缺点
单体内核 将图形、设备驱动及文件系统等功能全部在内核中实现,运行在内核状态和同一地址空间 减少进程间通信和状态切换的系统开销,获得较高的运行效率 内核庞大,占用资源较多且不易剪裁。系统的稳定性和安全性不高
微内核 只实现基本功能,将图形系统,文件系统,设备驱动及通信功能放在内核之外 内核精炼,便于剪裁和移植。系统服务器程序运行在用户地址空间,系统的可靠性、稳定性和安全性较高。可用于分布式系统 用户状态和内核状态需要频繁切换,从而导致系统效率不如单体内核

猜你喜欢

转载自blog.csdn.net/qq_54351538/article/details/129214348