操作系统学习(二)—— 进程

2017-07-11  本文已影响0人  曲谐_

第二部分 进程概念

引入进程的概念

一个操作系统必然是CPU和I/O设备协同工作的一个过程,如下图:

CPU和I/O工作示意图.png

图上表明,当I/O闲置时,CPU高速工作,而当I/O变为高电平启动时,CPU先等待然后等I/O设备启动后,CPU继续完成其他的工作。这一定程度上造成CPU的使用效率达不到100%。

最理想的多任务模型

示意图.png

一个理想情况:

现在内存里有两个程序A和B。由电平上看,A,B程序也是一会执行CPU指令,一会执行I/O指令。但如果搭配得当,使得A程序执行CPU指令时,B程序执行I/O指令,协同搭配,就可以提高CPU的使用效率,使得其不再等待。

进程

进程概念

An operating system executes(执行) a variety of programs:

为什么不能把程序称之为进程

进程定义

Process - a program in execution;process execution must progress in sequential fashion

进程有三个维度的要素:

1.是正在执行的程序
2.进程执行的程序正在处理数据
3.进程的状态。静止的程序是不运行的程序,但它不是一个进程。

进程状态迁移实例:

进程状态迁移实例.png

PCB(进程控制块)

每一个进程都有一个PCB,是在内存里面驻留的一对一的,反映相应进程信息。

进程通常与下列信息关联:

进程管理:

总的来讲,一个进程由一个PCB块来控制。而进程主要有三个状态:就绪状态,等待状态和执行状态。三种状态分别拉成链表中队列的形式,里面分别有head指针和tail指针。
我们可以把他们看成就绪队列,等待队列和执行队列。

Paste_Image.png

思考:操作系统的管理实际就是把PCB从一个队列放入另外一个队列(迁移)。相当于是管理不同的进程队列。

进程调度队列,动态反应操作系统全貌
进程是如何在队列中迁移的
Paste_Image.png

进程上下文切换(Context Switch)

进程操作

进程创建

创建进程分三步:
1.申请PCB空间,分配一个指向PCB的指针。
2.申请一个唯一的PID号即进程号。
3.对PCB空间每一个单元赋值。

以UNIX为例进行进程创建

地址空间中的image
UNIX环境里创建子进程.png

一个具体代码:

操作系统代码.png

进程终止

进程终止语义之一:

子进程执行完最后一条指令后,要求操作系统将自己弹出(exit)。语义动作含:

进程终止语义之二:

父进程终止子进程的执行。有很多原因,一般情况下是子进程没有执行完毕就被终止了。
问题:如果父进程终止了,它的子进程怎么办?
结论:有些操作系统把这些子进程也全部终止(All children terminated - cascading)。

进程间合作

经典案例:生产者-消费者问题

Paste_Image.png

我们讨论bounded buffer情况,即缓冲区数量有限的情况。此时考虑:

故两者需要相互关联。

Interprocess Communication(IPC)

进程间通信IPC,提供一套进程通信、进程同步的机制。
消息系统 — 进程间相互通信的途径,不需要有共享变量的介入。

IPC机制有2个最基本的进程操作:

变种:

变种:Indirect Communication

★★同步通信VS异步通信

同步通信:

异步通信:

举例:TCP/IP

进程之间相互通信表明这些进程为协同进程

上一篇 下一篇

猜你喜欢

热点阅读