进程是系统分配资源时的最小单位
程序和进程的区别:程序是存放在磁盘中的可执行文件
进程是正在执行的程序
进程是动态的,程序是静态的
进程是暂时的,而程序是可以保存的
组成不同:进程包括程序,数据和进程控制,,而程序只是一个可执行文件
通过多次执行,一个文件可以起多个进程; 通过调用关系,一个进程可以包括多个程序
进程状态:执行状态,就绪状态,等待状态
linuX下,进程各自独立互不干扰,多进程可以同时运行
子进程(PID) 父进程(PPID) 用户ID(UID) 都为数字
进程互斥:多个进程要使用同一共享资源时,每时每刻只能有一个进程调用,改资源被称为临界资源,进程被称为临界区
调度进程:抢占式 / 非抢占式
调度算法:高优先级优先调度算法和时间片轮转法结合使用
函数:获取ID getpid()子 geippid()父
returnID。
创建进程:pid_t fork()
返回两次,三个返回值(-1、0、ID) -1:错误 0:子进程 ID:父进程的子进程ID
大概率先进行子进程,产生的子进程会开辟新的虚拟内存,并复制父进程的所有数据
创建子进程 :pid_t vfork()
返回与fork相同,但vfork创建的子进程绝对为先执行 ,且创建的子进程共享父进程的数据
vfork通常与exec函数族一起使用 exec可以启动一个新程序来代替现有进程,进程号不变(exec具体要查阅man)
int execl(程序绝对路径,执行的命令与句,参数1,参数2.。。。。。 NULL); 都要加双引号
int system("命令语句")
pid_t wait(int *status) 用于阻止某个进程结束,直到他的某个子进程结束,并回收子进程的资源和数据
pid_t waitpid(进程号,int *status ,0) 有几个宏函数要查询man手册(检测子进程是否正常结束(正常返回0), 返回子进程的返回值)
exit()函数:用于结束进程