我对进程的理解

本文详细介绍了进程的概念,包括进程的狭义和广义定义、进程结构(代码段、数据段、堆栈段和PCB)、进程特征(动态性、独立性、结构性、竞争性和并发性)、进程状态(就绪、运行、阻塞)以及进程控制(创建、终止和阻塞唤醒)。还探讨了进程与程序的区别和联系,强调进程作为资源分配和独立运行的基本单元的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在学习与进程相关的知识, 最开始对进程的理解还是不够透彻和连贯的, 为此我查询了部分的相关资料, 对进程有了更进一步的了解

进程概念

1.什么是进程
2.进程结构
3.进程特征
4.进程状态
5.引入进程的意义

什么是进程
狭义定义: 进程就是一段程序的执行过程(或者我们可以简单的理解为进行中的程序)
广义定义: 进程是一个具有一定独立性功能的程序关于某个数据集合的一次运行活动. 它是操作系统动态执行的基本单元, 在传统的操作系统中, 进程是基本的分配单元, 也是基本的执行单元 (后续的内容会帮助理解)
进程结构
进程的结构由 3 部分组成:
代码段(程序)
数据段(数据)
堆栈段(进程控制块 PCB)
—PCB: PCB 是进程存在的唯一标识, 因为系统是通过 PCB 的存在来感知进程的存在 (后续会对 PCB 进行一个详细的总结)—
进程特征
动态性: 进程的实质是程序在多道程序系统中的一次执行过程, 动态产生, 动态消亡
独立性: 每个进程都有独立的 PCB 和 进程地址空间, 因此进程之间相互独立, 多个进程之间互不影响
结构性: 进程由 3 个部分组成(以上)
竞争性: 进程多, 但是资源有限, 因此每个进程之间相互竞争, 相互制约
并行: cpu 资源足够, 多个进程同时运行
并发: cpu 资源不足, 多个进程切换运行, 同时推进
进程状态
就绪状态(Reading): 进程已经获得了除了处理器以外的所有资源, 等待分配处理器资源, 只要分配好了处理器资源, 进程就进入了运行状态. 就绪进程可以按照不同的优先级来划分队列, 比如时间片用完排入低优先队列, 由 I/O 操作完成排入高优先级队列.
–时间片:分时操作系统为进程分配的一段运行时间–
运行状态(Running): 进程占用处理器资源进行运行, 在没有其他进程运行时(或进程都处于阻塞状态), 通常会自动执行系统的空闲进程.
阻塞状态(Blocked): 进程等待某种条件, 比如说 I/O 操作和进程同步, 在条件满足之前, 进程无法执行, 即时为其分配处理器资源
在这里插入图片描述
引入进程的意义
理论角度: 对正在运行的程序的过程进行抽象
现实角度: 作为一种数据结构, 能清晰的刻画动态系统的内在规律, 有效的调度和管理进入计算机系统主存运行的程序

进程与程序

区别
1.状态: 进程是程序在处理机上的一次执行过程, 是动态的概念; 程序是指令和数据的有序集合, 是静态的概念.
2.生命周期: 进程是动态的, 因此有一定的生命周期; 程序是静态的, 因此它没有生命周期
3.功能: 进程可以创建其他进程(子进程); 程序没有类似的功能.
进程是资源分配和独立运行的基本单元; 程序则不能独立运行.

联系
程序是进程的一部分, 并且同一个运行的程序可以属于多个进程, 即同一程序可以对应多个进程.

进程控制

1. 进程创建
2. 进程终止
3. 阻塞唤醒

进程创建

引起进程创建的事件:
1. 用户登陆
2. 作业调度
3. 提供服务
4. 应用请求

当操作系统发现了引起进程创建的事件之后, 便调用进程创建原语 Creat() 进行一系列步骤创建进程:
1 申请空白 PCB: PCB 作为进程的唯一标识符最先被创建, 从 PCB 集合(RAM内存)中索取一块空白 PCB.
2.为进程分配资源: 分配进程地址空间
3.初始化 PCB:

1.进程标识符(PID)
2.进程状态: 进程不是一直在执行
3.优先级: 获取系统资源分配的优先顺序  ps -efl
意义: 让操作系统运行的更加合理
交互式进程: 一旦有操作要优先处理
批处理进程: 一直处理数据, 但对 cpu 的要求不高
调整优先级: renice -n size -p pid   //  nice -n size 程序
IO 密集型程序: 优先级调整后效果不明显
CPU 密集型程序 优先级调整后效果明显
4.程序计数器: 记录程序即将执行的指令
5.上下文数据: 保存正在处理的数据
6.记账信息: 记录某个进程在cpu上运行了多长时间
7.内存指针: 进程在内存中的位置
8.IO 状态信息: 文件的状态信息
  1. 将进程插入就绪队列
    进程终止
引起进程终止的事件:
1.正常结束: 接收进程完成的指示
2.异常结束: 出现错误和故障被迫终止
3.外界干预: 外界请求终止运行

当操作系统发现引起进程终止的事件之后, 便调用进程终止的原语, 进行一系列步骤终止进程:
1.根据进程终止的标识符, 从 PCB 中读取进程状态
2.将进程以及进程的子孙进程终止
3.将终止进程的所有资源归还给父进程和操作系统
4.将 PCB 从进程队列中移除

阻塞唤醒

引起阻塞的事件
1.请求系统服务
2.启动某种操作
3.数据尚未到达
4.无新工作可做

当操作系统发现引起进程阻塞的事件后, 便调用进程阻塞原语block() 把自己阻塞
1.将 PCB 从进程队列移出
2.将 PCB 中进程状态改为阻塞
3.将 PCB 插入阻塞队列

引起唤醒的事件
1.阻塞进程所期待的事件出现

当操作系统发现引起进程唤醒的事件后, 便调用进程唤醒原语wakeup() 将等待该事件的唤醒
1.将 PCB 从阻塞队列移出
2.将 PCB 中进程状态改为就绪
3.将 PCB 插入就绪队列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值