进程控制原理及程序设计
来源:互联网 发布:李小龙怎么死的 知乎 编辑:程序博客网 时间:2024/05/16 07:07
一进程控制原理
1
进程是一个具有一定独立功能的程序的一次运行活动。
进程是运行着的程序。
2
特点
动态性,并发性,独立性,异步性
3
状态
就绪态,执行态,阻塞态
4
进程ID-PID
父进程ID-PPID
启动进程的用户-UID
5
进程互斥
当硬件或软件资源不允许多个进程共同使用时就会产生互斥
6
临界资源
临界区:
7
进程同步:一组并发进程按《固定的顺序》执行的过程称为进程间的同步。
8
进程调度:从一组进程中选一个来占有CPU
调度方式:抢占式和非抢占式
9
调度算法:
先来先服务;短进程优先调度;高优先级优先调度;时间片轮转法
时间片轮转法:每个进程在时间片,进行轮转执行。
10
死锁:多个进程因竞争资源而形成的僵局。
实例:getpid.c、fork1.c、
fork_count
#include<unistd.h>
#include<stdio.h>
int main(void)
{
pid_t pid;
int count =0;
pid=fork();
count++;
printf("count=%d\n",count);
return 0;
}
上面,fork()后面的会被执行两次,父进程和子进程各执行一次,但彼此数据独立,so两次count值相等。
结果是count=1
count=1
vfork创建的父进程与子进程共用数据段
fork创建的父进程与子进程独立,不共用数据段
#include<unistd.h>
#include<stdio.h>
int main(void)
{
pid_t pid;
int count =0;
pid=vfork();
count++;
printf("count=%d\n",count);
return 0;
}
count=1
count=2
问题:我的count=1
count=13623285而且还循环不停显示
二进程控制程序设计1
获取ID
2
父进程:说到父进程,要提到子进程,当进程创建进程时,创建的进程为子进程,原来的进程为父进程。
pid_t getpid(void)
pid_t getppid(void)
3
进程传进
#include<unistd.h>
pid_t fork(void)
功能:创建子进程
代码段是共享的,子进程会将其拷贝过来,故:下面的程序,父进程执行一次,子进程也执行一独立
4
父进程和子进程的数据完全彼此。
5
vfork:子进程和父进程共享数据段
fork:父、子进程的执行次序不确定。
vfork:子进程先运行,父进程后运行
6
exec函数族
exec用《被执行的程序》替换《调用它的程序》。
fork创建新进程,产生一个新的PID
exec启动一个新程序,替换原有进程,因此进程PID不会改变
7
execl//包含路径
execlp//不包含路径
execv(const char*path,char*const argv[])//含路径,argv[]:被执行程序所需的命令行参数数组
实例
#include<unistd.h>
main()
{
execl("/bin/ls","ls","-al","/etc/passwd",(char*)0);
}
#include<unistd.h>
main()
{
char*argv[]={"ls","-al","/etc/passwd",(char*)0};
execv(“/bin/ls",argv);
}
#include<stdlib.h>
void main()
{
system("ls -al /etc/passwd");
}
8
system.c///system调用exec产生子进程
9
pid_t wait(int *status)//等带其某个子进程退出。
实例
#include<sys/types.h>
#include<sys/wait.h>
#include<unistd.h>
#include<stdlib.h>
void mian()
{
pid_t pc,pr;
pc fork();
if(pc==0)
{
printf("This is chile process with pid of %d\n",getpid());
sleep(10);//睡眠10秒
}
else if(pid>0)//如果是父进程
{
pr=wait(NULL);
printf(“I catched a chile process with pid of %d\n”,pr);
}
exit(0);
}
- 进程控制原理及程序设计
- linux 应用程序设计基础--进程控制原理
- linux_c 网络开发日记(4)多进程程序设计_进程控制原理
- Linux进程控制与程序设计
- 进程控制原理
- 进程控制原理
- 进程控制原理---经典
- 进程控制原理
- 进程控制原理
- linux进程及进程控制
- linux进程及进程控制
- 进程及进程控制(一)
- 进程及进程控制(二)
- linux进程及进程控制
- linux进程及进程控制
- 进程及进程控制块
- linux应用程序设计(一)——文件、时间编程及进程控制
- linux应用程序设计基础--进程控制编程
- KMP hdu-2203-亲和串
- unity3d_幻灯片效果
- MP3解码详解(还清高高手指点)
- linux中的命令格式解析
- 在网页中显示数学公式的方法
- 进程控制原理及程序设计
- Windows Embedded CE 7串口通信应用程序实例(上)
- 反射与Class类
- Lucene 工作原理
- DevExpress GridControl使用方法总结
- Jquery获取表单中的值
- SDIO接口概念介绍
- cocos2d-x 2.x action动作整理集合
- HDU3065----AC自动机的初级阶段