系统学习笔记

本文详细介绍了操作系统如何管理硬件资源,包括冯诺依曼体系结构、进程管理和调度、内存管理以及用户态与内核态的概念。重点讨论了进程的状态转换、现场保护与恢复,并探讨了并发与并行的区别,以及进程间通信和多进程模型与多线程模型的对比。
摘要由CSDN通过智能技术生成


一、硬件角度

1、冯诺依曼体系:

  • CPU(运算器 + 控制器) + 内存 + 输入/输出设备
  • CPU 的工作模式 :
    • 正常模式:取码 ----》译码 ----》执行 核心寄存器(PC寄存器) 从开机到关机一直在不停的工作
    • 中断模式:中断源、中断类型、中断向量表 核心:执行流的切换(允许CPU去执行一段其他的事情再回头继续执行,切换核心:上下文保护(现场保护))。
  • 内存是 RAM,支持 O(1)时间复杂度根据地址去访问。

二、软件角度

操作系统(OS)

  • 是一个负责管理、协调的软件。主要管理硬件(CPU、内存、硬盘、网络、其他硬件),对应操作系统负责上面的模块:进程管理、内存管理、文件管理、网络管理、驱动管理。
  • 为了管理协调分配资源有了两个核心概念
    • 程序(program):指令 + 数据 组成,一般是以文件的形式存在。 菜谱
    • 进程(process):对程序一次执行过程的抽象的结果。 做菜的过程
    • 每个程序,支持同时有多个进程存在。进程是资源(硬件资源)分配的基本单位。
    • 线程(thread):每一个进程都是由一个或者多个线程组成;线程是调度(CPU 分配)的基本单位。

三、关于核心硬件的协调管理

  • CPU:以时间为单位进行分配;----进程调度(进程管理)
  • 内存:以空间为单位进行分配。 ----内存管理

1、进程管理

  • 进程:计算机硬件的视角 ---- 一组有关联的数据(一个对象)
classPCB ProcessControlBlock {
	//1、唯一标识  pid
	//2、和程序相关的一些信息(程序文件是哪个)
	//3、运行阶段的一些数据(哪个用户、在哪个路径启动..)
	//4、分配的资源的统计信息
	//5、关于调度相关的
}
  • OS 内部通过管理 List< PCB> 或者 Map< pid, PCB> 来达到管理进程的目的。

2、进程调度

1)进程的状态

  • 就绪态:进程一切准备就绪,只差分配 CPU 了。
  • 运行态:进程已经被分配到 CPU 了,已经开始运行。
  • 由于一些原因,暂时未就绪,暂不能分配 CPU。
    • 初始态:进程刚刚创建完成,还没有准备。
    • 结束态:进程任务已经结束了,但是操作系统还没有来得及回收。
    • 阻塞态:运行过程中出现一些问题(等待IO)。

2)状态转移图

  • 运行态只能通过就绪态达到。
  • 并不是一旦就绪就一定有 CPU 分配。只有处于就绪状态,才有可能被分配 CPU。
  • 哪些情况可能导致从运行态到其他状态?
    • 执行结束
    • 时间片耗尽
    • 被高优先级的进程抢占
    • 等待外部事件(IO)

3、现场保护、现场恢复

  • 现场:CPU 中寄存器中的重要数据(核心:PC)
  • 保护:把对应的数据保存到内存中(PCB 对象中有对应的位置去保存)
  • 恢复:把内存中之前保护的数据恢复到 CPU 寄存器中

4、根据哪些算法选择一个进程来分配 CPU

  • 先来先服务
  • 短任务优先
  • 优先级
    。。。

四、在 OS 语境下的 并发(concurrent)和并行(parallel)

1、并发:假同时

  • CPU 按照顺序运行,但是人类视角中,任务在同时进行。一般由调度引起的同时 称为并发。

2、并行:真同时

  • 真的有多个 CPU ,同时运行进程1、2、3。各个 CPU 上运行各自的。

五、用户态(user space) 内核态(kernel space)

  • CPU 在指令过程中,有一些指令使用户写的指令(用户态),有一些是操作系统写的指令(内核态)。
  • 区别:内核态的权限是比较大的,用户态的权限是有限的。

六、内存管理

  • 操作系统不同进程之间分配内存的一个管理机制。

1、物理地址

  • OS 自己用、进程、空闲
  • 如果使用物理地址,有以下问题:
    • 程序需要关心具体分配到的物理地址,而物理地址很可能每次是不同的,导致处理的复杂性上升。
    • 由于物理地址暴露,导致失去自主权。

2、逻辑地址(线性地址)

  • CPU所生成的地址。逻辑地址是内部和编程使用的、并不唯一。逻辑地址分配更加灵活,可以允许不唯一,看起来也较为直观。

一般提到进程的内存地址管理,都是指的是线性地址。

七、进程间通信

  • 背景1:由于进程是资源分配的基本单位,所以分配给一个进程的内存空间,相对于其它进程来说,是隔离的。(独立性)
  • 背景2:随着程序要完成的工作越来越复杂,大多时候会同通过多个进程,一起配合,来完成一项任务。要求不同进程之间有进行数据交换的过程。但是背景1又在机制上阻止了这种数据的共享。所以,进程间通信的必要性就出现了。

1、进程间通信的常见形式

  • 无名管道(pipe)
  • 有名管道
  • 共享内存
  • 网络通信:可以实现跨计算机之间通信
  • 信号量
  • 信号

八、多进程模型 vs 多线程模型(同一个进程下的多线程)

  • 多进程之间通信较麻烦,多线程之间通信简单;进程之间是隔离的,线程之间是不隔离的;进程是由多个线程组成的;进程崩溃一个,其他进程之间不受干扰;线程崩溃一个,往往会导致同进程停止。(OS 处理错误一般是以进程为单位进行处理的)
  • 多进程模型的稳定性更好,但通信麻烦;占用资源可能会略多一些;多线程模型的稳定性更差,更轻便,通信简单。

总结

  • 管理进程对 CPU 的访问
  • 进程是什么?
    • 进程 /程序
    • 进程是资源分配的基本单位。目前分配 CPU 都是以现场为单位,不再是以进程为单位了。
    • 进程是一个 PCB 对象,保存在内存(OS 直接管理的)中。
  • 进程的状态
  • 进程的调度(选择算法 + 现场保护和恢复)
  • 并发/并行
  • 内核态/用户态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值