进程同步
4.1 并行编程
-
并行编程方法
-
程序员识别并形成分,利用操作系统支持的进程(线程)机制提供的系统调用或高层的并幸苦函数,生成进程(线程)并使其执行并行子任务
-
操作系统的支持
-
相关系统调用
-
fork():创建一个新进程。子进程继承父进程的程序空间,复制父进程的数据区和用户栈区。
-
父进程返回值为子进程的pid
-
子进程返回值为0
-
exit(status):进程结束。从内核中删除调用进程,并将status传回给父进程。
-
wait(&status):等待子进程结束。
-
当有多个子进程时,任意一个子进程调用结束后,就会将控制返回调用者。
-
子进程的pid作为返回值
-
waitpid(pid,...):等待pid所指的进程结束。
-
exec类系统调用:改变进程映像,将原有的映像作废,用新的执行文件初始化进程映像。
-
多进程和多线程的区别
-
多线程共享全局变量,而进程之间需要通过消息传递系统调用交换数据。进程在内核空间是共享的。
-
进程安全性高
-
线程开销小
4.2 进程的同步和互斥
同步关系----------直接制约关系:协调等待,时间先后顺序所产生
互斥关系----------间接制约关系:竞争使用独占式资源所产生
-
同步问题
-
进程P1执行S1,S3进程P2执行S2,则P1在执行S3之前必须等待P2执行完S2。

-
临界段问题
-
实质是:进程之间互斥使用资源


消费者进程和生产者进程产生了互斥,若按照T0-3的代码顺序执行,将导致生产者加入队列头的缓冲区消失!
-
临界资源:一次仅允许一个进程使用的资源。
-
临界段:相关进程必须互斥执行的程序段。
浙公网安备 33010602011771号