进程管理(进程概念与同步)

前言:在早期的操作系统中在内存中只有一个程序(作业),CPU一次执行一个程序(作业),这是程序的顺序执行。为了提高CPU的利用率现代操作系统中可以让多个程序(作业)加载到内存中,这是程序(进程)的并发执行。

顺序执行与并发执行
顺序执行:顾名思义,按照程序的顺序执行
并发执行:书上的定义是多个进程实体能在一段时间间隔内同时进行。说白了就是一个程序还没运行结束另一个程序就开始执行了

两个程序(进程)包含相同的代码。注:顺序执行为两个程序,并发为两个进程

P1: counter = counter+1
P2: counter = counter+1

注:程序是指令的集合,下面图片六行都是指令,
r1和r2为通用寄存器存储当前信息,r1存储P1信息,r2存储P2信息

顺序执行过程:

得到的counter的值为2

并发执行过程:再明确下一个程序还没运行结束另一个程序就开始执行了

从俩个图中可以看出在r1寄存器中信息没有赋予counter,便进行了P2进程,此时couter仍是0,P1与P2执行完最后输出counter等于1

程序这个概念难以描述两个在执行的进程(两个程序都是counter=counter+1),因此引入了进程这个概念
从而推出了进程组成部分

从图中就可以看出为什么PCB(进程控制块)是操作系统中最重要的数据结构,因为长啊,哈哈开个玩笑,因为存储了每个进程运行的信息,也是和程序最大的区别。

继续上述的讨论,两个程序都是对counter+1的访问,最后要得出的正确结果应该是2,而在并发执行中得出的结果是1,因为CPU是取指令执行指令的,而并发的时候指令是随意组合的,因此为了避免结果的不确定性,引入了进程同步的概念,首先看两个概念

在本例中counter便为共享资源,counter=counter+1便为临界区,那么进程同步主要干了什么事儿呢?

首先看第一个任务,互斥方式,何为互斥,说白了就是我P1访问counter的时候,你P2不能访问,也就是等P1中counter=counter+1执行完,再执行P2的,那就有一个问题这不跟顺序执行一样了嘛?对的,对于临界区代码相当于顺序执行,那么问题又来了,那要并发还有还有什么用,这就引入了线程的概念,进程中有一到多个线程,这个线程阻塞,可以执行其他的线程。
回来接着看如何实现互斥,是通过信号量机制实现的,一般的信号量机制有三种

关于这个的详细介绍,请看下一篇博客,感谢您的阅读,还请斧正!

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿成长轨迹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值