一、概念
进程是一组有序的指令(按顺序)+数据+资源的集合。
进程:是运行中的程序
程序:是存储在磁盘上的可执行的二进制文件
二、进程的状态
进程在其生命周期可以存在多个状态:就绪、运行、阻塞等,下图所示:
查看进程状态
/proc/PID/status
三、进程管理命令
ps 查看进程 (bash Linux终端执行的进程
ps -f 更详细 ---> UID 用户ID PPID 父进程ID
ps -ef 显示系统所有进程
ps -ef | grep 管道命令过滤
top 统计进程信息
Ctrl+c 结束正在前台运行的进程
Ctrl+z/kill -stop pid 挂起正在前台执行的进程
jobs 显示后台运行的或者挂起的进程任务列表
fg 任务号 将挂起的或者后台运行的进程放到前台执行
bg 任务号 将挂起的进程放到后台执行
kill pid 结束进程
Kill -9 PID 强行结束进程
free 查看内存使用情况
free -m 按M的单位显示
进程执行的方式:
前台执行 进程执行后,终端必须等待进程执行完成,才能借助工作
Slepp 200 前台执行
后台执行 进程与终端的执行互补干扰
Sleep 200 & 后台执行
四、进程的管理
操作系统对进程的管理方式:
PCB:进程控制块(结构体) 进程的属性信息 uid pid ppid(父进程id) gid 程序计数器 优先级 程序上下文
每个PCB(需要频繁删除、添加)会用双向链表来存储
进程新生成时,必须先分配PCB结构,后才会生成进程主体
进程结束时,先释放主体,(过一段时间)然后才会释放PCB结构
引入概念:僵死进程:进程主体释放,但是PCB 依旧保存
五、进程的加载:简单分页 每个4k页帧
操作系统为每一个进程维护一个页表
逻辑地址:在程序阶段就能确定下来的地址---> 只与数据或函数在程序文件中的偏移有关
物理地址:物理内存上实际的偏移
逻辑地址和物理地址之间通过页表进行转换
逻辑地址 = 页号+页内地址(页内偏移)
物理地址 = 块号+页内地址
例如:已知某个分页系统,页面大小为1k(即1024字节),某一个作业有4个页面,分别装入到主存的第3、4、6、8块中,求逻辑地址2100对应的物理地址。