一、进程

概念

概念

进程实体(进程映像):静态的,可理解为进程的某一时刻的状态

进程:进程实体的运行过程,是系统进行资源分配和调度的一个独立单位

PCB(进程控制块):存放管理进程时所需要的信息

组成

PCB 是给操作系统用的,程序段和数据段是给进程自己用的

PCB

PCB是进程存在的唯一标志,当进程被创建时,操作系统为其创建PCB,当进程结束时,会回收其PCB

1.进程描述信息:

进程标识符PID:当进程被创建时,操作系统为该进程分配唯一的、不重复的 PID

用户标识符UID:进程所属用户

2.进程控制和管理信息:

CPU、磁盘、网络流量使用情况统计…

进程当前状态:就绪态/阻塞态/运行态.…

3.资源分配清单:正在使用哪些文件、内存区域、I/O设备

4.处理机相关信息:各种寄存器的值(用于实现进程切换)

程序段与数据段

程序段:程序的指令序列

数据段:运行过程中产生的各种数据

进程状态、转换与组织

基本状态

创建态:进程正在被创建,OS为进程分配系统资源、初始化PCB,创建后将进程插入就绪队列

就绪态:已具有运行条件,但无空闲CPU,暂时不能运行

运行态:占有CPU,并在CPU上运行

阻塞态:因等待某一事件暂时不能运行

终止态:进程正从系统中消失,OS回收进程拥有的资源,撤销PCB

状态转换

创建态->就绪态:系统完成创建进程工作

就绪态->运行态:进程被调度

运行态->就绪态:时间片到或 CPU 被其他进程抢占

运行态->阻塞态:等待系统资源分配 or 等待某事件发生(主动行为)

阻塞态->就绪态:资源分配到位,等待的事件发生(被动行为)

运行态->终止态:进程运行结束 or 运行过程中遇到不可修复的错误

进程的组织

链式方式:将同一状态的进程的 PCB 组成一个双向链表,称为进程队列

索引方式:将所有的 PCB 存放在一张索引表中,每个表项包含一个 PCB 的地址和状态信息

进程控制

进程的控制依靠原语实现

原语:特殊程序,执行具有原子性。依靠“关中断指令”与“开中断指令”实现原子性(开中断后不再受中断信号的影响)

1.进程创建原语:创建态->就绪态

1)申请空白 PCB

2)为新进程分配所需资源

3)初始化 PCB

4)将 PCB 插入就绪队列

2.进程撤销原语:就绪态/阻塞态/运行态->终止态->无

1)找到目标的 PCB

2)若进程正在运行,立即剥夺 CPU

3)终止其所有子进程

4)将该进程拥有的所有资源归还给父进程或操作系统

5)删除 PCB

3.进程阻塞原语:运行态→阻塞态

1)找到目标 PCB

2)将运行环境存入 PCB ,状态信息设置为“阻塞态,暂时停止进程运行

3)将 PCB 插入相应事件的等待队列

4.进程唤醒原语:阻塞态→就绪态

1)在事件等待队列中找到 PCB

2)将 PCB 从等待队列移除,设置进程为就绪态

3)将 PCB 插入就绪队列,等待被调度

5.进程切换原语:运行态→就绪态 or 就绪态→运行态

1)将运行环境信息存入 PCB

2)PCB 移入相应队列

3)选择另一个进程执行,并更新其PCB

4)根据 PCB 恢复新进程所需的运行环境

注意:阻塞原语与唤醒原语必须成对使用

进程通信

各进程间内存地址相互独立

共享存储

设置一个共享空间,通过使用同步互斥工具的读/写操作实现信息交换

低级方式:基于数据结构的共享

1)比如共享空间里只能放一个长度为10的数组

2)这种共享方式速度慢、限制多,是一种低级通信方式

高级方式:基于存储区的共享

1)操作系统在内存中划出一块共享存储区,数据的形式、存放位置都由通信进程控制

2)这种共享方式速度很快,是一种高级通信方式

消息传递

进程通过“发送消息/接收消息”两个原语传递格式化的消息交换数据

1.消息格式:

1)消息头:发送 PID、接受 PID、消息长度等格式化的信息

2)消息体

2.通信方式:

1)直接通信方式:直接把消息发送给接收进程的消息缓冲队列,接收进程从消息缓冲队列中取得消息

2)间接通信方式:依靠发送原语和接收原语,将消息发送到中间信箱,接收进程从信箱读取消息(一个新乡可以被多个进程读写)

管道通信

管道(pipe文件):

1)是在内存中开辟一个大小固定的缓冲区

2)管道通信允许两个进程互斥地访问管道,按生产者-消费者方式进行通信

3)写满之后才能读,读空之后才能写,数据读出便消失

4)一个管道只能实现半双工通信;实现双向同时通信要建立两个管道

子进程会继承父进程的管道

信号

用于通知进程某个特定事件已经发生,进程收到信号后,对信号进行处理

发送信号

进程之间相互发送信号、内核向进程发送信号、进程向自身发送信号

保存信号

两个 N bit 位的向量存储

要处理的信号:没有被屏蔽且待处理的信号

处理信号

处理时机:当进程从内核态转为用户态时,例行检查是否有待处理信号,若有则进行处理

处理方法:

1)操作系统内置默认处理方法

2)允许进程自定义处理方法(优先级高)

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇