文章目录
- 冯诺依曼计算机体系
- 组成
- 寄存器和内存
- 编译型语言vs解释型语言
- 进程
- 进程管理
- 进程的状态
- 虚拟地址空间
- 虚拟内存
冯诺依曼计算机体系
组成
(1) 输入设备:键盘,鼠标
(2) 输出设备:显示器,打印机 其中硬盘(可做输入、输出)
(3) 存储器:内存
(4) CPU
- 运算器: 计算(+ - * /),逻辑运算
- 控制器: if, while控制语句的执行方向
- 寄存器: cpu执行进程时,保存进程需要的数据
进程:程序运行后,动态的
1.加载程序代码到内存,并分配进程内存2.cpu执行进程的代码(java:不是class字节码,而是机器码)
寄存器和内存
编译型语言vs解释型语言
Java进程从写代码到执行
| 编译型语言 |
| 解释型型语言 |
静态编译java文件为class文件;翻译class字节码为机器码 (java进程启动后,就会创建一个java虚拟机,边运行边翻译字节码为机器码
进程
进程是由操作系统创建及管理
进程管理
进程:是系统分配资源(内存、网络、硬盘)的最小单位。
系统管理进程,会先创建一个进程的pcb结构体(用于描述进程信息),包括
(1) pid:标识进程的身份(类似数据库主键)
(2) 状态:包括运行,阻塞等等状态
(3) 内存指针:进程内存地址
(4)资源清单: io设备,硬盘文件
(5)调度信息:进程执行了多少代码,等待了多久
(6)上下文
操作系统管理进程:
系统对进程的调度
时间片轮转调度算法: 一个cpu以时间片轮转调度的方式,依次执行多个进程,给人感觉还是同时执行。(一个进程一个时间片,执行一段时间,就切换到下一个进程执行)
**上下文:**时间片切换出去,保留上下文(主存:没有处于时间片范围的进程信息),切换回来,要恢复下文(寄存器:处于时间片范围的进程)
进程的状态
并发:一个cpu以时间片轮转调度的方式,执行多个进程,给我们感觉像是同时执行(实际是一个肉眼无法感知的小范围时间)
并行:多个cpu在一个时间点,同时执行多个进程
真实的计算机中,既存在开友,也存在开行
一个进程,到底是就绪态,还是运行态,是由系统调度决定,进程是无法感知的
抢占式的调度: 有优先级比较高的任务,就需要以抢占式的方式,优先执行
虚拟地址空间
通过进程的虚拟地址空间,映射到物理内存
隔离多个进程的内存:更安全=>假设大家都允许操作同一块物理内存就可能发生交叉感染(你修改的,我删除了)
存储;使用分页式存储管理
虚拟内存
现代操作系统,都会使用一种虚拟内存的技术,用于在某些进程进入阻塞等不活跃的状态,把进程需要的数据,放在硬盘中。
系统中所有进程使用的内存,就可以超过物理内存的限制。扩展真实使用的内存
虚拟地址空间+(物理内存+硬盘)
进程要加载某些数据:
(1)通过虚拟地址空间,查找对应的物理内存中的数据
找到,就直接用
(2)如果找不到,就会产生一个缺页式中断,就会再次从虚拟内存保存在硬盘的部分去查找