一、什么是多进程
1.多任务程序能够同时做多件事情,如QQ同时聊天和上传下载。 2.多任务程序在应用开发中非常普遍,是必须掌握的基本概念。
二、进程的创建与资源分配
1.操作系统在创建进程时会分配内存资源、CPU资源和时间片。 2.进程的内容包括代码、用户数据和系统数据。 3.系统数据段中的进程控制块包含PID、用户信息、进程状态、优先级和文件描述符表。
三、进程切换
1.程序计数器(PC)存放下一条指令的地址。 2.当进程时间片用完或进行IO操作时,PC的值会自动更新。 3.PC的作用是确保进程在下一次被调度时从上次停止的地方继续执行。
四、进程的类型
进程分为交互进程、批处理进程和守护进程。
1.交互进程:在shell下运行,可以与用户交互。
2.批处理进程:与终端无关,通常由作业管理工具调度执行。
:3.守护进程:在后台运行,通常用于服务程序。
五、进程的状态与切换
1.进程状态包括运行态(就绪态和可运行)、等待态(可中断和不可中断)、停止态和死亡态。 2.进程在运行过程中会在不同状态之间切换,取决于事件发生或资源可用情况。
六、常用指令
1、PS指令
ps -ef|more //一频一频的显示全部进程
ps -ef|grep test //查看名为test的进程
top //查看进程动态信息注:q键退出
./proc目录:存放所有进程的详细信息,目录名为数字的目录分别对应不同的进程。
./proc/fd目录:存放当前进程打开的所有文件的信息。
2、修改进程优先级的指令
1.Nice命令:用于指定优先级运行进程,Nice值越小,优先级越高。
nice -n 2 ./test //将./test的进程优先级设置为2
2.reNice命令:用于改变已有进程的优先级,普通用户只能降低优先级。
3.权限说明:普通用户只能指定正数或零,管理员用户可以指定任意Nice值。
3、前后台进程切换
./test $ //后台运行test进程
1.jobs命令:用于查看后台进程,显示当前终端上的后台作业及其编号。
2.fg命令:用于将后台作业切换到前台运行。
fg 1 //将后台程编号为1的变为前台
3.bg命令:用于将后台挂起的作业恢复为运行态。
bg 2 //将进程号为2的挂起进程运行起来
六、进程相关的函数学习
1、进程创建函数fork
①.fork函数用于创建新的进程,系统会为新进程分配资源
返回值:失败为-1
成功后父进程中返回值为子进程的进程号,子进程中返回值为0.
②:1.子进程从fork函数的下一条语句开始执行
2.父子进程的执行顺序不确定,取决于内核的调度
3.父进程中可以多次调用fork函数,创建多个子进程
2、父子进程关系
1.子进程几乎复制了父进程的所有内容,包括代码、数据和打开的文件
2.父子进程有各自独立的地址空间,互相不影响
3.父进程先结束时,子进程会成为孤儿进程,由系统的一号(init)进程收养
4.子进程先结束时,如果父进程没有及时回收,子进程会变成僵尸进程
3、进程结束函数exit/_exit
1.exit函数用于结束当前进程,并返回一个值给父进程
2.exit函数在结束进程时会刷新流的缓冲区
3._exit函数与exit类似,但不会刷新流的缓冲区