进程...

1.什么是程序并发执行?

程序并发执行过程中,每个程序分为若干个程序段。例如:一个程序包括:输入、计算和输出三个程序段。每个程序段所需的系统资源不同,输入->外设,计算->CPU,输出->外设。

2.进程?

进程就是能和其他程序并行执行的程序段在某数据集合上的一次运行过程。

在操作系统中引入进程的目的是为了使多个程序并发执行,以提高资源的利用率和系统的吞吐量,而在操作系统中引入线程则是为了减少程序并发执行时所付出的时空开销,使操作系统具有更好的并发性。

上述的时空开销体现在,程序并发执行时,系统必须为进程的创建、撤销和切换中付出较大的时空开销。而进程是一个系统资源调度和分配的基本独立单位。线程几乎不拥有系统资源。

3.进程状态?

三种。就绪状态,执行状态,阻塞状态。->进程队列

4.作业?

用户在一次计算或处理过程中,要求计算机所做的一系列工作的集合。

5.同步和互斥?

同步:其实说同步还不如说”协作“,就是我们的目标只有一个,我们奔着同一个目标去的,都是在大家的努力下共同完成这么一件事情。例如:取缓冲区数据问题,A往缓冲区写数据,B往缓冲区读数据。缓冲区满,则A阻塞,直到B读了缓冲区,导致缓冲区不满时,A才唤醒。缓冲区空,则B阻塞,知道A往缓冲区写了数据,导致缓冲区不空时,B才唤醒。典型的例子就是生产者和消费者问题。

互斥:借用别人的一句话“千军万马过独木桥”,很通俗的一句话,就把咱们这个概念表达的淋漓尽致,就好比有一个大部队来到独木桥这,但是必须排好队,一个一个来;例如:临界资源的争夺。典型的例子就是打印机,打印机这个工具就非常好的体现了互斥的概念,打印机一旦被别人占用了,那无论你有多着急,都只能等着。

6.PV操作?

解决同步和互斥问题的两组原语。

S简单点说就是进程运行所需的CPU资源。

P操作:使S=S-1,若S>=0,则该进程继续执行,否则该进程排入等待队列。

V操作:使S=S+1,若S>0,唤醒等待队列中的一个进程。

同步:以上述读写缓冲区为例,S就相当于缓冲区中的数据,初始时为0,没有数据。

S = 0;

执行A进程;
V(S);//A写了数据,S=S+1=1,S>0,故唤醒B

P(S);//判断是否有数据,S=S-1=0,S>=0,有数据,故可以执行B
执行B进程;

互斥:以临界资源争夺为例,临界资源就是能供多个进程使用,但一次仅允许一个进程使用的资源。S就相当于这个临界资源,初始时为1,仅有一个临界资源。A与B来争夺。

S = 1;

P(S);//判断是否有临界资源,S=S-1=0,S>=0,有临界资源,即临界资源未被占用,故可以执行A进程。
执行A进程;
V(S);//执行完A进程,释放临界资源,S=S+1=1,S>0,有临界资源,即A释放了临界资源,故可以执行B进程。

同理:
P(S);//判断是否有临界资源,S=S-1=0,S>=0,有临界资源,即临界资源未被占用,故可以执行B进程。
执行B进程;
V(S);//执行完B进程,释放临界资源,S=S+1=1,S>0,有临界资源,即B释放了临界资源,故可以执行A进程。

最关键的一句话就是:S=N,N>=0;表示可用资源个数。N<0;N的绝对值表示等待队列中的进程数。

          

7.死锁

原因:1.系统中不可争夺资源的竞争。2.进程推进顺序不当or非法。3.信号量使用不当

对于可剥夺资源的竞争是不会引起死锁的。

  

原文地址:https://www.cnblogs.com/laining/p/7637703.html