进程并发你需要知道的概念

在之前文章说到进程相关时,说到linux中产生进程的机制
需要注意几个点:

fork()以后,父子进程哪些不同,哪些相同
1.不同:进程ID、fork()的返回值、父进程ID、进程运行时间、闹钟(定时器)、未决信号集
(3G空间一样,PCB的一些内容不完全一样)
2.相同:全局变量、data、text、堆、栈、环境变量、用户ID、工作目录、信号处理方式等
(0-3G的空间内容基本相同)

注意:父子进程中全局变量不是共享的,各自有一份,不要和多线程中混淆

父子进程间共享:文件描述符(文件的结构体)、mmap建立的映射区(进程间通信机制)

父子进程运行的先后顺序我们无法得知,由内核调度算法决定。

linux下产生新进程的通用方法:
fork()(准确的说是vfork())产生一个子进程,然后用exec()函数族替换掉子进程,这样一个我们想要的进程就产生了

一、基础概念:
1.临界资源:

每次只允许一个进程或者线程访问使用的资源,可以是一台打印机、可以是一个数字、可以是一个文件等等。

2.临界区: 用来访问临界资源的代码。比如一个列表为临界资源,增删查改代码就是临界区。
3.进程互斥: 临界资源的排他性,决定了进程使用这些资源是互斥的,这种关系就叫互斥。

4.三者的联系:

进程A,进程B,临界资源C

当A执行临界区代码访问C时,B再去执行临界区代码访问C,B将会被阻塞,直到A离开临界区

5.多道程序设计的基础:
时钟中断:强行使程序让出CPU等系统资源,再依靠进程调度进程来调度哪个进程去使用CPU。
再加上CPU的高速运转,使得实际串行执行的进程看起来像并发执行。
二、进程的互斥和同步:
进程的互斥:实际上是因为进程间要访问临界资源而产生的一种竞争(进程间是竞争关系)
进程的同步:一个任务可能要多个进程共同完成,但是存在某种时序问题,需要我们编程人员干涉(进程间是协作关系,为伙伴进程)
一般我们可以将互斥,看作是一种特殊的同步。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值