1.进程的概念
- 程序:存放在磁盘上的指令和数据的有序集合(文件),静态的
- 进程:执行一个程序所分配的资源的总称;进程是程序的一次执行过程;进程是动态的,包括创建、调度、执行和消亡
2.进程内容
- 正文段
- 用户数据段
- 系统数据段
系统数据段包含进程控制块、CPU寄存器值、堆栈
1.进程控制块(pcb):存放进程属性,操作系统可通过进程控制块来管理进程。包含:进程标识PID,即进程号;进程用户,即进程由哪个用户创建;进程状态,优先级;文件描述符表,用来记录进程打开的文件
其中正文段和用户数据段称程序
3.进程类型
- 交互进程:在shell下启动.可在前台运行
./a.out
,也可以在后台运行.a/out &
1.前台:进程可输出,也可以通过终端向进程输入
2.后台:进程可输出,不能通过终端向进程输入 - 批处理进程:和在终端无关,被提交到一个作业队列中以便于顺序执行
- 守护进程:和终端无关,一直在后台运行
4.进程状态
- 运行态:进程正在运行,或者准备运行
- 等待状态(阻塞):进程在等待一个事件的发生或某种系统资源
1.可中断:进程状态可以被信号打断
2.不可中断:进程状态不可以被信号打断 - 停止态:进程被中止,受到信号后可继续运行.例如调试程序时候的断点
- 死亡态(僵尸态):已经终止的进程,但pcb未被释放,其他资源已经被释放
-
各进程状态图解
进程开始处于就绪态,等待CPU调度,当分配给进程的时间片用完后,进程将进入就绪状态,等待调度;
当一个进程正在运行时候如果没有资源,则进程会进入阻塞状态;
当一个进程正在运行时候收到停止信号则会进入停止状态,收到恢复信号又会进入就绪状态;
5.查看进程信息
- 相关命令
ps
查看系统进程快照
ps -ef|more
按批次显示所有进程信息
ps -ef|grep 进程名
显示指定进程名信息
ps aux|more 进程名
显示指定进程名信息和状态
ps aux|grep 进程名
显示指定进程名信息和状态
man ps
可查看进程状态码
top
查看进程动态信息
/proc
查看进程详细信息
cd /proc
进入proc文件夹下根据进程号查看详细进程信息
6.修改进程优先级
进程优先级为-20~19,默认为0,值越小优先级越高
nice
按用户指定的优先级运行进程
nice -n 2 ./test
以优先级为2运行test程序
普通用户只能修改优先级为整数,root随意
renice
改变正在运行的进程优先级
renice -n 2 进程号
修改指定进程号进程优先级
普通用户只能降低优先级,root随意
7.查看后台进程
jobs
查看后台进程
bg 作业号
将指定作业号挂起的进程在后台运行
fg 作业号
将指定作业号后台进程放在前台运行
后台转前台:
hanqi@hanqi-PC:~/C/IO$ ./a.out &
[1] 7907
hanqi@hanqi-PC:~/C/IO$ ./a.out &
[2] 7908
hanqi@hanqi-PC:~/C/IO$ jobs
[1]- 运行中 ./a.out &
[2]+ 运行中 ./a.out &
hanqi@hanqi-PC:~/C/IO$ fg 1
./a.out
^C
hanqi@hanqi-PC:~/C/IO$ jobs
[2]+ 运行中 ./a.out &
hanqi@hanqi-PC:~/C/IO$ fg 2
./a.out
^C
前台转后台:Ctrl + Z
hanqi@hanqi-PC:~/C/IO$ ./a.out
^Z
[1]+ 已停止 ./a.out
hanqi@hanqi-PC:~/C/IO$ bg 1
[1]+ ./a.out &
hanqi@hanqi-PC:~/C/IO$ fg 1
./a.out
^C
hanqi@hanqi-PC:~/C/IO$