《计算机操作系统》重点知识笔记整理(一)(上)

简介: 《计算机操作系统》重点知识笔记整理(一)

《计算机操作系统》重点知识总结1(1-4章)

📢注意:

   这篇总结文档参考的配套书籍为《计算机操作系统》(第四版) 相关知识点关联的页码可能只与本书配套。

📓说明:

    由于时间关系,该总结的部分知识点可能有所疏落或存在错误,请认真研读不要盲目学习,读者如有补充或问题更正请联系作者[1712229564@qq.com],作者将会表示感谢!

   最后,希望尊重作者劳动成果,该文档仅供学习交流使用,请大家转载时注明出处,Thanks!😄

第一章 操作系统引论

1 操作系统的定义(P9):

操作系统是一组能有效的组织和管理计算机硬件和软件资源,合理的对各类作业进行调度,以及方便用户使用的程序的集合

2 操作系统的基本特征(P14):

并发共享、虚拟、异步

3 并发和并行(P14):

并发:两个或多个事件在同一时间间隔内发生。

并行:两个或多个事件在同一时刻发生。

4 操作系统的五大功能(P18):

(1)处理机管理功能

(2)存储器管理功能

(3)设备管理功能

(4)文件管理功能

(5)提供与用户之间的接口


第二章 进程的描述与控制

1 程序并发执行时的特征(P38):

(1)间断性

(2)失去封闭性

(3)不可再现性

扩展:

程序顺序执行时的特性:①顺序性 ②封闭性 ③可再现性

2 进程的定义(P39):

进程实体 = 程序段 + 相关数据段 + 进程控制块(PCB)

(1)进程是程序的一次执行

(2)进程是一个程序及其数据在处理机上顺序执行时所发生的活动

(3)进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

总结:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。

扩展:

进程的特性:①动态性 ②并发性 ③独立性 ④异步性 ⑤结构性 (可不写)

3 进程的基本状态和转换(P40):

进程的三种基本状态:就绪(Ready)状态、执行(Running)状态、阻塞(Block)状态

网络异常,图片无法展示
|


常见问题:

当n个进程并发执行时,在单处理机中:

处于就绪状态的最多n-1个,最少0

处于阻塞状态的最多n个,最少0

处于执行状态的最多1个,最少0

4 进程间的制约关系(P52):

(1)直接制约(同步关系):

某些应用程序,为了完成某个任务而建立了两个或多个进程(源于进程间的合作)。

关于直接制约关系的举例:

网络异常,图片无法展示
|


(2)间接制约(互斥关系):

多个程序并发执行时,由于共享系统资源(如CUP、I/O设备等)而导致这些并发执行的程序之间形成相互的制约的关系。

关于间接制约关系的两个举例:

网络异常,图片无法展示
|


5 *同步机制遵循的原则(P55):

(1)空闲让进

(2)忙则等待

(3)有限等待

(4)让权等待

6 信号量—记录型信号量(P58):

记录型信号量是一种不存在“忙等”现象的进程同步机制。

typedef struct{
    int value; //资源个数
    struct process_control_block *list;  //阻塞队列
}semaphore;
wait(semaphore *S){  
    S->value--; //S->value初值表示系统中某类资源的数目,称为资源信号量
    if(S->value<0){
        //自我阻塞
        block(S->list);
    }
}
signal(semaphore *S){
    S->value++;
    if (S->value <= 0){
        //唤醒,将S->list链表的第一个等待线程唤醒
        wakeup(S->list);
    }
}
复制代码


有兴趣看代码实现的同学可以读下这篇文章:blog.csdn.net/Mr_YanMingX…

7 信号量—互斥信号量(P61):

A用完B用,A和B就是互斥

semaphore mutex = 1;
Pa(){
    while(1){
        wait(mutex);
        临界区;
        signal(mutex);
        剩余区;
    }
}
Pb(){
    while(1){
        wait(mutex);
        临界区;
        signal(mutex);
        剩余区;
    }
}
复制代码


8 信号量的(应用)—实现前驱关系(P61):

设有两个并发执行的进程P1和P2。P1中有语句S1;P2中有语句S2,我们希望在S1执行之后再执行S2,为实现这种前驱关系,只需进程P1和P2共享一个公用信号量S,并赋予其初值为0,将signal(S)操作放在语句S1的后面,而在S2语句的前面插入wait(S)操作,即

在进程P1中,用S1;signal(S)

在进程P2中,用wait(S);S2

由于S被 初始化为0,这样若先执行S2必为阻塞,只有在进程P1执行完S1;signal(S)操作后使S变为1是,P2进程才能成功执行语句S2。

9 线程(P81):

引入线程后:资源分配还是进程,但是资源调度变为了线程

前言:

引入进程–>为了多个程序并发执行,提高资源利用率和吞吐量。

引入线程–>为了减少程序在并发执行时所付出的时空开销,使系统具有更好的并发性。

定义:

线程是进程的一个实体,是独立调度的一个基本单位。


第三章 处理机调度与死锁

1 三级调度(P92):

(1)低级调度:

[最基本的调度,在多道批处理、分时和实时的三种类型的OS中必须配置] 又称为进程调度或短程调度,调度对象为进程,主要功能是根据某种算法,决定就绪队列中的哪个进程应获得处理机,并由分派程序将处理机分配给被选中的进程。

(2)中级调度:

又称为内存调度,主要目的是提高系统内存的利用率和系统的吞吐量,实际上就是存储管理器中的对换功能。

(3)高级调度:

[主要用于多道批处理系统] 又称为长程调度或作业调度,调度对象为作业,主要功能是根据某种算法,决定将外存中处于后备队列中的哪几个作业调入内容,为他们创建进程、分配必要的资源,并将其放入队列。

小扩展:

运行频率 : 低级调度 > 中级调度 > 高级调度

2 调度算法(P96):

(1)先来先服务(FCFS):

最简单的调度算法,可用于作业调度和进程调度,主要思想就是按照作业到达的先后顺序来进行调度

(2)短作业优先(SJF):

根据作业的时间长短来决定作业的优先级,时间越短优先级越高,作业的长短是指作业要求的运行时间决定,从后背队列中选择时间短的优先执行。

  • 优点
    提高系统吞吐量,有效降低平均等待时间。
  • 缺点
    必须预知作业的时间;对长作业不利;无法实现人机交互;未考虑作业的紧急程度;

(3)优先级调度算法(PSA):

核心在于确定作业的优先级,可用于进程调度和作业调度,使用该算法进行作业调度时需要事先在外部定义好该作业的优先级。

(4)高响应比调度算法(HRRN):

既考虑作业的运行时间,又考虑作业的等待时间,设置优先级为动态,规律为:

网络异常,图片无法展示
|


3 死锁(P112):

产生死锁的必要条件:

(1)互斥条件

(2)请求和保持条件

(3)不可抢占条件

(4)循环等待条件

预防死锁:

(1)破坏“请求和保持条件”

(2)破坏“不可抢占”条件

(3)破坏“循环等待”条件

4 *银行家算法(P120)

银行家算法—避免死锁(P122):

什么是银行家算法?

[百度百科] :在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。在这样的描述中,银行家就好比操作系统,资金就是资源,客户就相当于要申请资源的进程。它以银行借贷系统的分配策略为基础,判断并保证系统的安全运行.

银行家算法的数据结构:

(1)可利用资源向量Available

是个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目。如果Available[j]=K,则表示系统中现有R类资源K个。

(2)最大需求矩阵Max

这是一个n×m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j]=K,则表示进程i需要R类资源的最大数目为K。

(3)分配矩阵Allocation

这也是一个n×m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocation[i,j]=K,则表示进程i当前已分得R类资源的 数目为K。

(4)需求矩阵Need

这也是一个n×m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need[i,j]=K,则表示进程i还需要R类资源K个,方能完成其任务。

如图所示:

网络异常,图片无法展示
|


避免死锁的核心方法和流程图:

Need [ i, j ] = Max [ i , j ] - Allocation [ i , j ]

解释一下:就是让需求等于已经分配的加上再向操作系统请求的,比如对于P0进程,该公式换算后的结果就是

0 0 1 2 = 0 0 4 4 - 0 0 3 2 就可以根据任意两个变量计算出第三个变量


相关文章
|
2月前
|
存储 Unix Linux
手写操作系统(4)——计算机是如何启动的?BIOS、GRUB、文件系统......
手写操作系统(4)——计算机是如何启动的?BIOS、GRUB、文件系统......
42 1
|
26天前
|
调度
操作系统的目标和功能笔记分享
【6月更文挑战第1天】操作系统的目标和功能笔记分享
49 1
|
2月前
|
调度
操作系统的目标和功能笔记分享
【5月更文挑战第3天】操作系统的目标和功能笔记分享
26 2
|
18天前
|
运维 安全 Linux
计算机架构“寒武纪爆发”,操作系统进化迸发中国浪潮
计算机架构“寒武纪爆发”,操作系统进化迸发中国浪潮
|
2月前
|
存储 算法 Linux
【计算机操作系统】深入探究CPU,PCB和进程工作原理
【计算机操作系统】深入探究CPU,PCB和进程工作原理
|
2月前
|
存储 算法 调度
【软件设计师—基础精讲笔记2】第二章 操作系统2
【软件设计师—基础精讲笔记2】第二章 操作系统1
39 1
|
2月前
|
存储 算法 Unix
【软件设计师—基础精讲笔记2】第二章 操作系统1
【软件设计师—基础精讲笔记2】第二章 操作系统
80 1
|
2月前
|
存储 安全 数据处理
【计算机系统组成原理】操作系统处理器深入介绍
【计算机系统组成原理】操作系统处理器深入介绍
|
2月前
|
存储 缓存 安全
【linux基础(八)】计算机体系结构--冯诺依曼系统&操作系统的再理解
【linux基础(八)】计算机体系结构--冯诺依曼系统&操作系统的再理解
|
2月前
|
存储 安全 Unix
计算机的操作系统
计算机的操作系统
16 2