ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

系统学习笔记

2022-03-18 18:33:42  阅读:123  来源: 互联网

标签:管理 系统 笔记 分配 学习 内存 进程 OS CPU


文章目录


一、硬件角度

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)
  • 有名管道
  • 共享内存
  • 网络通信:可以实现跨计算机之间通信
  • 信号量
  • 信号

总结

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

标签:管理,系统,笔记,分配,学习,内存,进程,OS,CPU
来源: https://blog.csdn.net/ccyzq/article/details/123577600

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有