操作系统之概念和进程管理

388 阅读8分钟

第 1 章 计算机系统概述

1.1 操作系统的基本概念

1.1.1 操作系统的概念

操作系统的定义: 是管理计算机系统的全部硬件资源包括软件资源及数据资源;控制程序运行;改善人机界面;为其它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,为用户提供方便的、有效的、友善的服务界面。

1.1.2 操作系统的功能

image.png

1.1.3 操作系统的特征

并发、共享、虚拟、异步

image.png

1.2 操作系统的发展和分类

image.png

1.3 操作系统的运行机制和体系结构

1.3.1 操作系统的运行机制和体系结构(大内核、小内核)

image.png

image.png

大内核:速度快,维护难(linux)

小内核:速度慢,模块清晰(较少使用)

image.png

1.3.2 中断和异常(内中断和外中断、中断处理过程)

image.png

中断处理过程

  • 关中断: CPU响应中断
  • 保存断点: 保存断点是要保存PC中的内容,这部分功能是由终端隐指令来完成的,用来中断返回的时候知道执行到哪里;
  • 找到中断服务程序的地址: 取出中段服务程序的入口,送到pc
  • 保存现场: 主要保存程序状态寄存器和一些通用寄存器里面的内容
  • 开中断: 允许响应更加高级的中断
  • 执行中断服务程序: 执行中断服务程序
  • 关中断: 保证在恢复现场和屏蔽字时不被中断,完成中断后可以恢复现场
  • 恢复现场和屏蔽字
  • 开中断: 返回到最开始中断的用户程序

1.3.3 系统调用(执行过程、访管指令、库函数与系统调用)

1.系统调用知识框架图

image.png

2.系统调用和库函数的区别

image.png

3.系统调用的执行过程

image.png

第 2 章 进程管理

2.1 进程与线程

2.1.1、进程的定义、特征、组成、组织

一、线程的定义

(1)程序的概念

image.png

(2)进程的概念

image.png

(3)进程的定义

image.png

二.进程的特征

image.png

三.进程的组成

image.png

而其中最重要的就是进程控制块PCB(Process Control Block)

PCB简介:

  • PCB中记录了操作系统所需的,用于描述进程的当前情况以及控制进程运行的全部信息。

  • PCB的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。

  • 或者说,OS是根据PCB来对并发执行的进程进行控制和管理的。

  • 例如,当OS要调度某进程执行时,要从该进程的PCB中查处其现行状态及优先级;在调度到某进程后,要根据其PCB中所保存的处理机状态信息,设置该进程恢复运行的现场,并根据其PCB中的程序和数据的内存始址,找到其程序和数据;

  • 进程在执行过程中,当需要和与之合作的进程实现同步,通信或者访问文件时,也都需要访问PCB;

  • 当进程由于某种原因而暂停执行时,又须将器断点的处理机环境保存在PCB中。

  • 可见,在进程的整个生命期中,系统总是通过PCB对进程进行控制的,即系统是根据进程的PCB而不是任何别的什么而感知到该进程的存在的。

  • 所以说,PCB是进程存在的唯一标志。

image.png

四.进程的组织

image.png

(1)链接方式

image.png

(2)索引方式

image.png

2.1.2 进程状态转换

image.png

2.1.3 进程通信

image.png

2.2.4 线程、多线程模型

1.线程的定义

image.png

2. 线程和进程的区别

线程是CPU调度的基本单元,进程是资源分配的基本单元

image.png

3.线程的实现方案

(1) 用户级线程

image.png

(2)内核级线程

image.png

(3)特殊组合

image.png

4.多线程模型

根据前文对于用户线程和内核线程的实现方案,可以分成以下几种模型

(1)多对一模型

image.png

(2)一对一模型

image.png

(3)多对多模型

image.png

jvm 的线程模型是 一对一模型

2.2 处理机的调度

2.2.1 概念和层次

1.概念

image.png

处理机调度: 按照一定的算法,从就绪队列中选择一个进程将CPU分配给他

2.三种调度

(1)高级调度(磁盘 to 内存)

image.png

(2)中级调度(磁盘 to 内存)

image.png

高级调度和中级调度的区别: 高级调度还没有产生进程(没有分配PCB),中级调度是已经分配了PCB,再进行的调度

(3)低级调度(内存 to cpu)

image.png

七种状态模型

由于添加了挂起状态(通过虚拟内存技术,将某些暂时不需要的数据放到外存上面),所以五种CPU状态转变位7中CPU状态

image.png

2.2.2 处理机调度时机

image.png

2.2.3 CPU调度算法

image.png

image.png

image.png

image.png

  • 短作业
  • 向来先服务
  • 高相应比
  • 时间片
  • 优先级
  • 多级反馈

2.3 进程的同步与互斥

2.3.1 进程的同步与互斥的概念

image.png

1、进程同步

  • 同步也称为直接制约关系。
  • 在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。为了协调进程之间的相互制约关系,如等待、传递信息等,引入了进程同步的概念。进程同步是为了解决进程的异步问题。
  • 就是 A 干完了 B 才能干

同步和异步在网络编程上面的区别: 同步指的是亲历亲为,异步可以理解为让别人去干(回调)

2、进程互斥

  • 互斥,亦称间接制约关系。进程互斥指当一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待。当前访问临界资源的进程访问结束,释放该资源之后,另一个进程才能去访问临界资源。

image.png

image.png

2.3.2 实现临界区进程互斥的软件实现方法

image.png

1. 单标志

image.png

image.png 只能是 P0先进去然后才能P1进去

2. 双标志先检查法

image.png

在进去之前,先检查下有没有其他线程想要进临界区,如果没有,自己的标志才编程true

3. 双标志后检查法

image.png

4.Peterson算法

image.png

image.png

2.2.3 操作系统之实现临界区进程互斥的硬件实现方法

image.png

1、 中断隐藏方法

image.png

2、 TestAndSet指令

  • 执行TSL指令时,它的内部运转逻辑:
  • 假设lock现在为false,代表临界资源A空闲,那么我就可以访问这个资源,同时将lock=true,提醒别的进程,这个临界资源A我正在使用,让他们等等
  • 假设lock为true,代表临界资源正在有人使用,所以我必须等待,并且将lock=true,并不影响什么,所以没关系,只是为了让lock为false时可以上锁,将上锁与检查在一个TSL指令完成。

image.png

3、 Swap指令

image.png

2.3.3 信号量机制(整型信号量、记录型信号量P、V)

image.png

就记住 整形信号量 需要一直循环去探测(理解为CAS操作),记录型信号量理解为 syn ,存在就等待队列可以被唤醒

1 整型

image.png

2 记录形

image.png

2.3.4 管程

就是 java 里面的锁 ,解决了直接使用信号量编码麻烦容易出错的缺点

image.png

image.png

2.4 死锁

1.死锁、饥饿、死循环的区别

image.png

2. 死锁的条件(4个,经常问)

  • 互斥访问
  • 不剥夺
  • 请求和保持
  • 循环等待

3. 解决死锁的方法

(一)预防死锁(破坏四个条件)

  • 破坏互斥访问:可以利用SPOOLing 技术,将独占资源改成共享
  • 破坏不剥夺 : 操作系统去帮忙,当资源不够时候,强行从其他线程抽取资源或者 当某个线程所请求的资源不满足时候,自动放弃所有资源
  • 请求和保持: 一次性请求所有的资源,失败直接阻塞
  • 循环等待: 线程只能按照资源的顺序编号去请求响应的资源

(二)避免死锁

1、安全序列

image.png 如果给了B, 那么三个线程最坏情况下都无法结束,是不安全

==============================================

image.png 如果给了 A ,那么手里还有20 ,可以保证在最坏情况下,A或者T完成,最后B完成,是安全的

image.png

2、 银行家算法

image.png

方法和安全序列是一样的,就是去判断能不能借的问题,不过一个是一维的一个是多维的

死锁监测和解除

1、 死锁监测

画资源分配图,处理时候,先把需要分配的边处理的,然后判断请求边,如果所有的边都可以消除,说明没有死锁

image.png

image.png

2、死锁解除

image.png

参考