第10课-进程控制

一.进程是一个具有独立功能的程序的一次运行活动。
二.特性:
(1)动态性
(2)异步性
(3)独立性
(4)并发性
三.三态:
1.就绪:任何时刻都只有一个进程在CPU运行,但是同一时刻有多个进程就绪。通过一定的算法将就绪的进程挑选出来,然后交给CPU执行。
2.执行:当进程被调度以后,就进入执行状态。
3.阻塞:进程的请求暂时得不到满足,就是阻塞状态。
4.在阻塞和执行之后都会在此回到就绪状态,等待下一次的调度。

四。进程ID:用来对进程进行标识。------PID
父进程-----PPID
启动进程的用户ID--------UID
五.进程互斥
若干进程同时访问同一资源,但是这个资源任意时刻只允许有一个进程访问他。则其他资源必须等待。直到占用该资源释的进程释放他为止。
六.临界资源
操作系统中同一时刻只允许一个进程访问的资源称为临界资源。
七.临界区:
进程中访问临界资源的那段代码叫做临界区。为实现对临界资源的互斥访问,应保证诸多进程互斥的进入各自的临界区。
八.进程同步:一组进程按照一定的顺序执行的过程就是进程间的同步。具有同步关系的这组进程叫做合作进程。
九.进程调度:按照一定的算法,从一组就绪的进程中选出一个占有CPU运行。
十。调度算法:
(1)

(2)按照调度时机,调度可以分为抢占式调度和非抢占式调度。这两个规则和前面说的四中调度算法共同决定操作系统中的进程调度。
十一.死锁:多个进程因为竞争资源而形成的僵局。导致这些进程都无法继续往前执行。

十二.getpid

十三.函数学习
4.1 创建进程
4.1.1 函数名
Fork
4.1.2 函数原形
pid_t fork(void);
4.1.3 函数功能
创建一个子进程
4.1.4 所属头文件
<unistd.h>
4.1.5 返回值
成功:在父进程中返回子进程的PI
在子进程中返回0
失败:父进程中返回-1
4.1.6 参数说明



4.1.7:工作原理:父进程调用fork以后会产生一个子进程,这个子进程会在内存中开辟一个空间,里面的代码和父进程的一样,只是她不从起始地址开始执行,而是从fork后面的代码开始执行。一般是父进程先执行,但其实不一定谁先谁后。子进程再执行。可以通过进程PID来区别父进程和子进程。大于0的就是父进程。相应的子进程拥有自己独立的数据段和栈。不和父进程共享。


4.2 创建进程
4.2.1 函数名
vfork
4.2.2 函数原形
pid_t vfork(void);
4.2.3 函数功能
创建一个子进程并且阻塞父进程
4.2.4 所属头文件
<sys/types.h>
<unistd.h>
4.2.5 返回值
成功:在父进程中返回子进程的PID
在子进程中返回0
失败:父进程中返回-1
4.2.6 参数说明

4.2.7:创建之后,子进程一定先运行。但是和父进程共享数据段和栈。


4.2.8:进程退出:void exit(int var)
父进程退出可以用return 和exit但是子进程只能用exit。一般情况下,正常退出用exit(0),异常退出用exit(1)




4.3 进程等待4.3.1 函数名
Wait4.3.2 函数原形
pid_t wait(int *status);4.3.3 函数功能
挂起调用它的进程,直到其子进程结束4.3.4 所属头文件
<sys/types.h><sys/wait.h>
4.3.5 返回值成功:返回终止的那个子进程的PID
失败:-14.3.6 参数说明
Status:记录子进程的退出状态。


4.4 执行程序

4.4.1 函数名Execl
4.4.2 函数原形int execl(const char *path, const char *arg, ...);
4.4.3 函数功能运行可执行文件
4.4.4 所属头文件 <unistd.h>
4.4.5 返回值成功:不返回
失败:返回-1.且宏定义errno会被设置。4.4.6 参数说明
Path:要运行的可执行程序的路径,虽然一直包含到文件,但是其后的第二个参数还要指出你要运行的文件。Arg:以及后面的参数都是可执行文件运行需要的参数。遇到空指针结束且一定要由NULL在最后。
4.4.7在调用execl以后,代码段会变化,保留原有的PID,不会产生新进程,执行新代码。但是fork是保留原代码,产生新的PID。

时间: 2024-11-11 12:30:42

第10课-进程控制的相关文章

第七课 进程通信

unix_c_07.txt================第七课 进程通信================一.基本概念------------1. 何为进程间通信~~~~~~~~~~~~~~~~~进程间通信(Interprocess Communication, IPC)是指两个,或多个进程之间进行数据交换的过程.2. 进程间通信分类~~~~~~~~~~~~~~~~~1) 简单进程间通信:命令行参数.环境变量.信号.文件.2) 传统进程间通信:管道(fifo/pipe).3) XSI进程间通信:

第五课 进程管理

unix_c_05.txt================第五课 进程管理================一.基本概念------------1. 进程与程序~~~~~~~~~~~~~1) 进程就是运行中的程序.一个运行着的程序,可能有多个进程.进程在操作系统中执行特定的任务.2) 程序是存储在磁盘上,包含可执行机器指令和数据的静态实体.进程或者任务是处于活动状态的计算机程序.2. 进程的分类~~~~~~~~~~~~~1) 进程一般分为交互进程.批处理进程和守护进程三类.2) 守护进程总是活跃的

Linux - 进程控制 代码(C)

进程控制 代码(C) 本文地址:http://blog.csdn.net/caroline_wendy 输出进程ID,getpid(). 代码: /*By C.L.Wang * Eclipse CDT * Ubuntu 12.04 * 2014.10.5*/ #include "apue.h" #include "error.h" int main(void) { printf("hello world from process ID %ld\n"

六、Linux进程控制

1. Linux进程概述 进程是一个程序一次执行的过程,它和程序有本质区别. 程序是静态的,它是一些保存在磁盘上的指令的有序集合:而进程是一个动态的概念,它是一个运行着的程序,包含了进程的动态创建.调度和消亡的过程,是Linux的基本调度单位. 那么从系统的角度看如何描述并表示它的变化呢?在这里,是通过进程控制块(PCB)来描述的.进程控制块包含了进程的描述信息.控制信息以及资源信息,它是进程的一个静态描述. 内核使用进程来控制对CPU和其他系统资源的访问,并且使用进程来决定在CPU上运行哪个程

Linux进程控制编程

一.获取ID #include<sys/types.h> #include<unistd.h> pid_t getpid(void)    获取本进程ID pid_t getppid(void)  获取父进程ID 父进程:现有进程中,创建新的进程. 例:getpid.c #include<stdio.h> #include<unistd.h> #include<stdlib.h> int main() { printf("PID=%d\

Linux进程控制(二)

1. 进程的创建 Linux下有四类创建子进程的函数:system(),fork(),exec*(),popen() 1.1. system函数 原型: #include <stdlib.h> int system(const char *string); system函数通过调用shell程序/bin/sh –c来执行string所指定的命令,该函数在内部是通过调用execve("/bin/sh",..)函数来实现的.通过system创建子进程后,原进程和子进程各自运行,

linux 命令及进程控制

main.c  main.o/main.obj  main/main.exe          编译                连接 程序运行;      两步: gcc/g++  -c  main.c/main.cpp  -> main.o              gcc/g++ -o main  main.o -> main(可执行文件)     一步:  gcc -o main mian.c  -> main    工程文件:       rm  *.o     gcc  -

【C++探索之旅】第一部分第六课:控制流程,随心所至

内容简介 1.第一部分第六课:控制流程,随心所至 2.第一部分第七课预告:函数效应,分而治之 控制流程,随心所至 上一课<[C++探索之旅]第一部分第五课:简易计算器>比较简单,这一课也不难,却很重要. 其实目前来说,基础部分和<C语言探索之旅>有些类似.难免有些重复,毕竟C++从C语言借鉴了不少.不过小编保证之后进入C++的面向对象编程部分,才是精彩中的精彩.敬请期待~ 好了,扯回正题. 大家应该看过不少科幻片吧,其中很大一部分是说电脑发展起来成为人工智能和人类打架的(反正最终都

Linux进程控制知识总结

目录 一:进程标识符(ID) 二:进程操作 2.1创建一个进程 2.2 fork函数出错情况 2.3创建一个共享空间的子进程 2.4退出程序 2.5设置进程所有者 三:执行程序 3.1 exec函数 3.2 执行解释器文件 3.3在程序中执行Shell命令 四:关系操作符 4.1等待进程退出 4.2 等待指定的进程 进程控制 -- 一步 一:进程标识符(ID) 进程ID是用来标识进程的编号,就像身份证一样.不同的进程有不同的ID,可以通过ID来查询进程.进程标识符的类型是pit_t,其本质是一个