第11课-进程控制理论
11.1 概念
1. 进程
进程是一个具有独立功能的程序的一次运行活动。进程具有如下的特点:
l 动态性
l 并发性
l 独立性
l 异步性
- 进程的状态
计算机程序的状态主要有就绪、执行和阻塞这三个状态。进程创建过后首先处于就绪状态,一个电脑只有一个CUP,能执行的进程也就只有一个,但是同时会有许多的进程是处于就绪状态的。CPU会在众多的就绪的进程中选择一个进行调度,也就是执行。当我们访问文件或者磁盘的时候,如果得不到响应就会等待,也就是阻塞。当一个进程处于阻塞状态的时候,cpu就会去执行其他的进程,若是得到响应,就会I/O完成,继续处于就绪状态。
- 进程ID
进程ID(PID):标识进程的唯一数字
父进程的ID(PPID),启动进程的用户ID(UID)。
- 进程的互斥
进程互斥是指当有若干个进程都要使用某一资源时,但是资源在同一时刻最多允许一个进程使用,这个时候其他的进程必须等待,直到占用该资源者释放该资源为止。
- 临界区
进程中访问临界资源的那段程序代码称为临界区。为实现对临界资源的互斥访问,应该保证诸进程互斥地进入各自的临界区。
- 进程同步
一组进程按一定的顺序执行的过程称为进程间的同步。具有同步关系的这组进程称为合作进程,最为有名的是生产者和消费者进程。
- 进程调度
按一定的算法,从一组待运行的进程中选一个来占有CPU运行。
调度算法 操作系统中,常见的调度算法有:
(1)先来先服务
(2)短进程优先调度
(3)高优先级先调度
(4)时间片轮转法
在有了等待运行的进程和调度算法后,接下来要讨论的问题是:什么时候调度?按调度的时机,调度可以分为:
(1)抢占式调度:不安顺序来,高优先级直接抢占。
(2)非抢占式调度:按顺序来无论优先级别高低。
- 死锁
多个进程因竞争资源而形成一种僵局,导致这些进程都无法继续往前执行。为了解决这个问题,我们把相关的进程在调用的时候按照一定的顺序来进行就好了。
11.2 函数学习
1. 函数学习
getpid
2. 函数作用
返回调用该函数的id
3. 所属的头文件
#include<sys/types.h>
#include<unistd.h>
4. 函数的参数
无
5. 函数的返回值
这个函数永远是正确的,返回值就是调用该函数进程的id
6. 范例程序
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
void main()
{
int id = 0;
id = getpid();
printf("process id is %d ",id);
}
程序每运行一次会有一个新的id进程。