进程学习之基本概念

顺序程序和并发程序特征

    顺序程序特征

        1.顺序性

        2.封闭性(运行环境封闭性)

        3.确定性

        4.可再现性

    并发程序特征

        1.共享性

        2.并发性

        3.随机性

进程互斥:

    由于进程要求共享资源,而且有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程这种关系为进程的互斥。

    系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源。

    在进程中涉及到互斥资源的程序段叫临界区。

进程同步:

    进程同步指的是多个进程需要互相配合共同完成一项任务。

进程间通信的目的:

    数据传输:一个进程需要将它的数据发送给另一个进程。

    资源共享:多个进程之间共享同样的资源。

    通知事件:一个进程需要向另一个过一组进程发送消息,通知它(它们)发生了某种事件(如进程的终止时要通知父进程)。

    进程控制: 有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截一个进程的所有陷入和异常,并且能够及时知道它的状态改变。

进程间通信分类:

    文件

    文件锁

    管道(pipe)和有名管道(FIFO)

    信号(signal)

    消息队列

    共享内存

    信号量

    互斥量

    条件变量

    读写锁

    套接字

System V IPC & POSIC IPC

    system V IPC:

        system V 消息队列

        system V 共享内存

        system V 信号量

    POSIX IPC:

        消息队列

        共享内存

        信号量

        互斥量

        条件变量

        读写锁

IPC对象的持续性:

    随进程持续:一直存在知道打开的最后一个进程结束。(如pipe和FIFO)

    随内核持续:一直持续直到内核自举或显示删除。(如system V消息队列,共享内存,信号量)

    随文件系统持续:一直存在直到显示删除,即使内核自举还存在。(POSIX消息队列、共享内存、信号量如果是使用映射文件来实现)。

死锁:

    死锁是指多个进程之间相互等待对方的资源,而在得到对方资源之前又不释放自己的资源,这样,造成循环等待的一种现象。如果所有进程都在等待一个不可能发生的事情,则进程就死锁了。 

死锁产生的必要条件:

    互斥条件:

        进程对资源进行排它性使用,即在一段时间内某资源仅为一个进程所占用。    

    请求和保持条件: 

        当进程已获得的资源在未使用完之前,不能被剥夺,只能在使用完时由自己释放。

    环路等待条件:

        各个进程组成封闭的环形链,每个进程都等待下一个进程所占用的资源。

防止死锁的办法:

    资源一次性分配(破坏请求和保持条件)

    可剥夺资源:破坏不可剥夺条件

    资源有序分配方法:(破坏循环等待条件)

死锁避免:

    预防死锁的几种策略,会严重的损害系统性能。因此在避免死锁时,要施加较弱的限制,从而获得比较满意的系统性能。

    由于在避免死锁的策略中,允许进程动态的申请资源。因而,系统在进行资源分配之前预先计算资源分配的安全性。若此次分配不会导致系统进入不安全状态,则将资源分配给进程;否则,进程等待。其中最具有代表性的避免死锁的算法是银行家算法。

信号量:

    信号量和P、V原语由迪杰斯特拉提出。

    信号量:

        互斥:P、V在同一个进程中。

        同步:P、V在不同进程中。

    信号量及其含义:

        s>0:s表示可用资源的个数

        s=0:表示无可用资源,无等待进程。

        s<0:|s|表示等待队列中进程个数。  



猜你喜欢

转载自blog.csdn.net/qq_34938530/article/details/79972656