码迷,mamicode.com
首页 > 系统相关 > 详细

进程概念总结

时间:2017-12-09 16:55:25      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:覆盖   快捷   类型   错误   结果   解锁   nbsp   运行   bsp   

最近刚刚学习多进程,对于多进程的概念我自己总结一下

每一个程序启动后都会在系统中产生一个进程来处理这个程序

但是一个进程运行速度毕竟有限,在程序中有一些比较耗时的操作程序就只能是卡死的状态,为了解决这个问题,就出现了多进程。让耗时的工作创建一个子进程让子进程去工作,主进程运行自己的。
但子进程多了也会出现问题:
1、孤儿进程
2、僵尸进程

但是使用多进程的时候又出现了进程之间数据共享的问题,这时候进程间的通信就需要解决。目前知道的解决办法是用:
1、文件
2、管道
3、队列
4、共享内存
以上数据共享类型的区别在于:
管道:操作起来麻烦,读的时候不能写。写的时候不能读。如果在写的时候不关闭读操作,在读的时候可能会出现问题
队列:操作简单,一般推荐使用。
共享内存:共享内存与(管道、队列)区别在于,管道和队列在创建时需要单独在内存中开辟一块空间进行操作。而共享内存则不需要单独开辟空间读写更快捷

在多进程间,又会产生进程间数据错误的问题,原因是两个进程访问一个变量最终的结果改变会出现问题如:
A、B进程 访问  共享内存 a1  = 10
A进程的操作是将a1的值减1
B进程的操作是将a1的值加1
此时两个进程同时访问a1变量
在A进程没有改变a1值得情况下B进程已经获取到了a1的原始值 10 此时B进程改变a1的值就会覆盖A进程改变后的值9
此时a1的值为11
为了进程间访问变量互斥的问题就需要有序的操作变量(加锁):
互斥:在A进程操作a1变量的时候加一个锁,B进程此时等待解锁之后再进行操作此变量

进程概念总结

标签:覆盖   快捷   类型   错误   结果   解锁   nbsp   运行   bsp   

原文地址:http://www.cnblogs.com/laolibk/p/8011742.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!