进程
:是一个具有一定独立功能的程序的一次运行活动。
进程的特点:动态性、并发性、独立性、异步性
进程的状态:
进程ID:标识进程的唯一数字
父进程的ID(PPID)
启动进程用户的ID:(UID)
进程互斥:指若干个进程都要使用某一资源时,但该资源在同一时刻最多只允许一个进程访问,这时其它进程必须等待,直到占用该资源的进程释放了该资源。
临界资源:
操作系统中将同一时刻只允许一个进程访问的资源成为临界资源。
临界区:
进程中访问临界资源的那段代码称为临界区。
进程同步:一组进程按一定的顺序执行的过程称为进程的同步。具有同步关系的这组进程称为合作进程。
进程调度:按一定的算法,从一组待运行的进程中选出一个来占有CPU运行
。
常见的调度算法:
1.先来先服务
2.短进程优先调度
3.高优先级优先调度、
4.时间片轮转调度
调度:
抢占式调度
非抢占式调度
死锁:多个进程因为竞争资源而形成的一种僵局,导致这些进程都无法继续往前执行。
多进程编程:
1.创建子进程
pid_t fork()
返回值:
成功:
在父进程中返回子进程的PID
在子进程中返回0
失败:
-1
vfork创建一个子进程并且阻塞父进程
vfork与fork区别:
1 .vfork时,子进程一定先运行,父进程后运行
fork时, 不一定是子进程还是父进程先运行
2. fork创建的子进程有自己独立的数据段和堆栈
vfork创建的子进程与父进程共享数据段以及堆栈
进程等待函数:wait 挂起调用它的进程直到其子进程结束
execl : 运行可执行文件
fork与exec对比:
fork创建一个新的进程,产生一个新的PID,exec保留原有的进程,执行新的代码