进程(一)
前言
冯诺依曼体系结构
- CPU读取数据(数据+代码)都是从内存中读取,站在数据角度认为CPU不与外设直接交互,外设只和内存打交道,CPU要读取数据需要先将外设中的数据加载到内存中
- 程序要运行必须先加载到内存中(这时候其实说这是一个进程更贴切点),这是由冯诺依曼体系结构决定
操作系统
操作系统是进行软硬件资源管理的软件
对上提供良好的运行环境,对下确保系统的稳定性
为了确保系统的稳定性,对于操作系统而言,上层所有的人都不值得信任,所以操作系统只需预留一些系统接口来供上层用户使用,不允许上层用户直接参与硬件的管理。所有的访问都必须直接贯穿系统
什么是管理?
先描述再组织
简单描述操作系统
进程
在计算机中,我们启动一个程序本质上就是启动一个进程。
在Linux下运行一个指令,执行一个程序,其实都是在系统层面创建了一个进程。
Linux是可以同时加载多个程序的,即Linux是可以同时存在多个进程在系统当中的
Linux是如何管理进程的呢?
Linux对进程的管理可以理解为Linux为每个进程都定义了PCB(可以理解为结构体)用于进行管理。也就是先描述(创建进程结构体)再组织(管理结构体)。
在PCB中包含对应进程的所有属性
那这样对进程的管理就变成了对结构体PCB的增删查改
进程 = 对应的代码和数据 + 进程对应的PCB结构体
PCB是什么?内部属性都有哪些?
process control block 进程控制块
以Linux为例,PCB中包含了:
- 标示符:描述当前对应进程的唯一标示符,用来区别其他进程
- 状态:任务状态、退出代码、退出信号等
- 优先级:用来判断和其他进程的优先级
- 程序计数器:程序中即将被执行的下一条指令的地址
- 内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
- 上下文数据:进程执行时处理器的寄存器中的数据
- I/O状态信息:包括显示的I/O请求,分配给进程的I/ O设备和被进程使用的文件列表
- 记账信息:可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等
- 其他信息
程使用的文件列表
- 记账信息:可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等
- 其他信息