【回炉重造】操作系统知识总结

操作系统知识总结

参考来源:
知乎@Joe.Zhao
CSDN@易阳
CSDN@JXH_123

1. 什么是进程?

(比较典型的定义)
(1)进程是程序的一次执行
(2)进程是一个程序及其数据在处理机上顺序执行时发生的活动
(3)进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

2. 进程之间的状态和状态转换有哪些?
  • 就绪:进程已处于准备好运行的状态,即进程已分配到除CPU外的所有必要资源后,只要再获得CPU,便可立即执行
  • 执行:进程已经获得CPU,程序正在执行状态
  • 阻塞:正在执行的进程由于发生某事件(如I/O请求、申请缓冲区失败等)暂时无法继续执行的状态
3. 进程同步与互斥之间的区别?

互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。

同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。

简单地说:同步体现的是一种协作性,互斥体现的是一种排他性。

4. 进程之间的通信方式有哪些?

(1) 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。

(2)有名管道 (named pipe) :有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。

(3)信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。

(4) 消息队列( message queue ) :消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

(5)信号 ( sinal ) :信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

(6)共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。

(7)套接字( socket ) :套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。

5. 进程的调度?

1.调度种类

  • 高级调度(High-Level Scheduling)
    又称为作业调度,它决定把后备作业调入内存运行

  • 低级调度(Low-Level Scheduling)
    又称为进程调度,它决定把就绪队列的某进程获得CPU

  • 中级调度(Intermediate-Level Scheduling)
    又称为在虚拟存储器中引入,在内、外存对换区进行进程对换

2.非抢占式调度与抢占式调度

  • 非抢占式
    分派程序一旦把处理机分配给某进程后便让它一直运行下去,直到进程完成或发生进程调度进程调度某事件而阻塞时,才把处理机分配给另一个进程

  • 抢占式
    操作系统将正在运行的进程强行暂停,由调度程序将CPU分配给其他就绪进程的调度方式

3.调度算法

  • FIFO或First Come, First Served (FCFS)先来先服务

    调度的顺序就是任务到达就绪队列的顺序
    公平、简单(FIFO队列)、非抢占、不适合交互式
    未考虑任务特性,平均等待时间可以缩短

  • Shortest Job First (SJF)最短的作业(CPU区间长度最小)最先调度

    • SJF可以保证最小的平均等待时间

    • Shortest Remaining Job First (SRJF)SJF的可抢占版本,比SJF更有优势

    • SJF(SRJF): 如何知道下一CPU区间大小?根据历史进行预测: 指数平均法 优先权调度

      每个任务关联一个优先权,调度优先权最高的任务
      注意:优先权太低的任务一直就绪,得不到运行,出现“饥饿”现象

  • Round-Robin(RR)轮转调度算法

    设置一个时间片,按时间片来轮转调度(“轮叫”算法)
    优点: 定时有响应,等待时间较短;缺点: 上下文切换次数较多
    时间片太大,响应时间太长;吞吐量变小,周转时间变长;当时间片过长时,退化为FCFS

  • 多级队列调度

    按照一定的规则建立多个进程队列
    不同的队列有固定的优先级(高优先级有抢占权)
    不同的队列可以给不同的时间片和采用不同的调度方法
    存在问题1:没法区分I/O bound和CPU bound
    存在问题2:也存在一定程度的“饥饿”现象

  • 多级反馈队列

    在多级队列的基础上,任务可以在队列之间移动,更细致的区分任务
    可以根据“享用”CPU时间多少来移动队列,阻止“饥饿”
    最通用的调度算法,多数OS都使用该方法或其变形,如UNIX、Windows等

6. 什么是线程?

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。

7. 进程与线程之间的区别?

(1) 粒度性分析:线程的粒度小于进程。

(2) 调度性分析:进程是资源拥有的基本单位,线程是独立调度与独立运行的基本单位,出了寄存器,程序计数器等必要的资源外基本不拥有其他资源。

(3) 系统开销分析:由于线程基本不拥有系统资源,所以在进行切换时,线程切换的开销远远小于进程。

套接字

一个套接字就是一个通信标识类型的数据结构,包含了通信目的的地址、通信使用的端口号、通信网络的传输层协议、进程所在的网络地址,以及针对客户或服务器程序提供的不同系统调用(或API函数)等,是进程通信和网络通信的基本构件。套接字是为客户/服务器模型而设计的,通常,套接字包括两类
(1)基于文件型:通信进程都运行在同一台机器的环境中,套接字是基于本地文件系统支持的,一个套接字关联到一个特殊的文件,通信双方通过对这个特殊文件的读写实现通信,其原理类似于前面所讲的管道。
(2)基于网络型:该类型通常采用的是非对称方式通信,即发送者需要提供接收者命
名。

作业

作业(Job)。作业是一个比程序更为广泛的概念,它不仅包含了通常的程序和数据而且还应配有一份作业说明书,系统根据该说明书来对程序的运行进行控制。在批处理统中,是以作业为基本单位从外存调入内存的。

先来先服务(FCFS)和短作业优先调度算法(SJF)

  • 先来先服务(FCFS)调度算法是一种最简单的调度算法 该算法既可用于作业调度 也可用于进程调度 法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作 备作业队列中选择 个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。

  • 短作业(进程)优先调度算法SJ§F,是指对短作业或短进程优先调度的算法 它们可以分别用于作业调度和进程优先调度的算法。它们可以分别用于作业调度和进程调度。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业 将它们调入一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程优先(SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它, 选出 个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度

优先级调度算法和高响应比优先调度算法

  • 优先级调度算法(priority-scheduling algorithm,PSA)
    我们可以这样来看作业的优先级,对于先来先服务调度算法,作业的等待时间就是业的优先级,等待时间越长,其优先级越高。对于短作业优先调度算法,作业的长短就是作业的优先级,作业所需运行的时间越短,其优先级越高。但上述两种优先级都不能反映作业的紧迫程度。而在优先级调度算法中,则是基于作业的紧迫程度,由外部赋予作业相应的优先级,调度算法是根据该优先级进行调度的。这样就可以保证紧迫性作业优先运行优先级调度算法可作为作业调度算法,也可作为进程调度算法。当把该算法用于作业调度时,系统是从后备队列中选择若千个优先级最高的作业装入内存。

  • 高响应比优先调度算法(Highest Response Ratio Next,HRRN)
    在批处理系统中,FCFS 算法所考虑的只是作业的等待时间,而忽视了作业的运行时间而 SJF 算法正好与之相反,只考虑作业的运行时间,而忽视了作业的等待时间。高响应比优先调度算法则是既考虑了作业的等待时间,又考虑作业运行时间的调度算法,因此既照顾了短作业,又不致使长作业的等待时间过长,从而改善了处理机调度的性能。高响应比优先算法是如何实现的呢?如果我们能为每个作业引入一个动态优先级,即优先级是可以改变的,令它随等待时间延长而增加,这将使长作业的优先级在等待期间不断地增加,等到足够的时间后,必然有机会获得处理机。该优先级的变化规律可描述为

优先权 = (等待时间+要求服务时间)/要求服务时间

由于等待时间与服务时间之和就是系统对该作业的响应时间,故该优先级又相当于响应比 Rp。据此,优先又可表示为

Rp = (等待时间+要求服务时间)/要求服务时间 = 响应时间/要求服务时间

轮转调度算法

在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU分配 来先服务的原则排成 个队列 每次调度时 把 分配给队首进程,并令其执行一个时间片。时间片的大小从几ms到几百ms。当执行的时间片用完时,由一个计时器发出时钟中断请求 调度程序便据此信号来停止该进程的执 出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程 同时也让它执行一个时间片 给就绪队列中新的队首进程,同时也让它执行 个时间片。这样就可以保证就绪队列中的所有进程在一给定的时间内均能获得一时间片的处理机执行时间。换言之,系统能在给定的时间内响应所有用户的请求。

优先级调度算法

多队列调度算法

多级反馈队列调度算法

最低松弛度优先LLF(Least Laxity First)算法

死锁产生的条件

  1. 请求与保持
  2. 不可抢占
  3. 循环等待

银行家算法

存储器的多层结构

其中,寄存器、高速缓存、主存储器和磁盘缓存均属于操作系统存储管理的管辖范畴,断电后存储的信息消失。
在这里插入图片描述

高速缓存和磁盘缓存

  • 高速缓存是现代计算机结构中的一个重要部件,它是介于寄存器和存储器之间的存储器、主要用于备份主存中较常用的数据,以减少处理机对主存储器的访问次数,这样可大幅度地提高程序执行速度。
  • 由于目前磁盘的 I/O 速度远低于对主存的访问速度,为了缓和两者之间在速度上的不匹配,而设置了磁盘缓存,主要用于暂时存放频繁使用的一部分磁盘数据和信息,以减少访问磁盘的次数。但磁盘缓存与高速缓存不同,它本身并不是一种实际存在的存储器,是利用主存中的部分存储空间暂时存放从磁盘中读出(或写入)的信息。主存也可以看作是辅存的高速缓存,因为,辅存中的数据必须复制到主存方能使用,反之,数据也必须先存在主存中,才能输出到辅存。

对换

在多道程序环境下,一方面,在内存中的某些进程由于某事件尚未发生而被阻塞运行,但它却占用了大量的内存空间,甚至有时可能出现在内存中所有进程都被阻塞而迫使CPU停止下
来等待的情况;另一方面,却又有着许多作业在外存上等待,因无内存而不能进入内存运行的情况。显然这对系统资源是一种严重的浪费,且使系统吞吐量下降。为了解决这一问题,在
系统中又增设了对换(也称交换)设施。所谓“对换”,是指把内存中暂时不能运行的进程或者暂时不用的程序和数据调出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或进程所需要的程序和数据调入内存。对换是提高内存利用率的有效措施。自从在60年代初期出现“对换”技术后,它便引起了人们的重视,现在该技术已被广泛地应用于操作系统中。

分页存储管理方法

  • 页面。分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,从0开始,如第0页、第1页等。相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框(frame),也同样为它们加以编号,如0#块、1#块等等。在为进程分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中。由于进程的最后一页经常装不满一块而形成了不可利用的碎片,称之为“页内碎片”。

页表

在分页系统中,允许将进程的各个页离散地存储在内存不同的物理块中,但系统应能保证进程的正确运行,即能在内存中找到每个页面所对应的物理块。为此,系统又为每个进程建立了一张页面映像表,简称页表。

分页地址中的地址结构如下

在这里插入图片描述

快表

由于页表是存放在内存中的,这使CPU在每存取一个数据时,都要两次访问内存。第一次是访问内存中的页表,从中找到指定页的物理块号,再将块号与页内偏移量W拼接,以形成物理地址。第二次访问内存时,才是从第一次所得地址中获得所需数据(或向此地址中写入数据)。因此,采用这种方式将使计算机的处理速度降低近1/2。为了提高地址变换速度,可在地址变换机构中增设一个具有并行查寻能力的特殊高速缓冲寄存器,又称为“联想寄存器”(Associative Memory),或称为“快表”,在IBM系统中又取名为TLB(Translation Lookaside Buffer),用以存放当前访问的那些页表项

什么是大小端
分页分段和段页的区别
  1. 页是信息的物理单位,则是信息的逻辑单位。
  2. 页的大小固定且由系统决定,而段的长度却不固定,决定于用户所编写的程序。
  3. 分页的作业地址空间是一维的,而分段的作业地址空间
    则是二维的。

虚拟存储器

虚拟存储器是指具有请求调入和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。

缺页中断

在请求分页系统中,每当所要访问的页面不在内存时,便产生一缺页中断,请求OS将所缺之页调入内存。

在这里插入图片描述

页面置换算法

  • 最佳置换算法
  • 先进先出置换算法(FIFO)
  • 最近最久未使用置换算法(LRU)
  • Clock置换算法

磁盘调度

  • 先来先服务
  • 最短寻道时间优先
  • 扫描(SCAN)算法

簇的基本概念

为了适应磁盘容量不断增大的需要,在进行盘块分配时,不再以盘块而是以簇(cluster)为基本单位。簇是一组连续的扇区,在FAT中它是作为一个虚拟扇区,簇的大小一般是2n (n为整数)个盘块,在MS-DOS的实际运用中,簇的容量可以仅有一个扇区(512 B)、两个扇区(1 KB)、四个扇区(2 KB)、八个扇区(4 KB)等。一个簇应包含扇区的数量与磁盘容量的大小直接有关。例如,当一个簇仅有一个扇区时,磁盘的最大容量为8 MB;当一个簇包含两个扇区时,磁盘的最大容量可以达到16 MB;当一个簇包含了八个扇区时,磁盘的最大容量便可达到64 MB。

磁盘高速缓存

这里所说的磁盘高速缓存,并非通常意义下的内存和CPU之间所增设的一个小容量高速存储器,而是指利用内存中的存储空间来暂存从磁盘中读出的一系列盘块中的信息。因此,这里
的高速缓存是一组在逻辑上属于磁盘,而物理上是驻留在内存中的盘块。高速缓存在内存中可分成两种形式。第一种是在内存中开辟一个单独的存储空间来作为磁盘高速缓存,其大小是
固定的,不会受应用程序多少的影响;第二种是把所有未利用的内存空间变为一个缓冲池,供请求分页系统和磁盘I/O时(作为磁盘高速缓存)共享。此时,高速缓存的大小显然不再是固定的。当磁盘I/O的频繁程度较高时,该缓冲池可能包含更多的内存空间;而在应用程序运行得较多时,该缓冲池可能只剩下较少的内存空间。

数据交付方式

数据交付(Data Delivery)是指将磁盘高速缓存中的数据传送给请求者进程。当有一进程请求访问某个盘块中的数据时,由核心先去查看磁盘高速缓冲器,看其中是否存在进程所需访问的盘块数据的拷贝。若有其拷贝,便直接从高速缓存中提取数据交付给请求者进程,这样,就避免了访盘操作,从而使本次访问速度提高4~6个数量级;否则,应先从磁盘中将所要访问的数据读入并交付给请求者进程,同时也将数据送高速缓存。当以后又需要访问该盘块的数据时,便可直接从高速缓存中提取。

10.进程切换的开销

https://blog.csdn.net/L13763338360/article/details/104961469

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值