目录
基本概念
关于进程的描述 --- PCB
task_struct-PCB的一种
task_ struct内容分类
如何查看进程
通过系统调用获取进程标识符
基本概念
书本概念:程序的一个执行实例,正在执行的程序等
内核观点:担当分配系统资源(CPU时间,内存)的实体。
示例:(Linux环境)
当我们执行一指令,或者通过 ./ 的方式运行一个程序的时候,本质上,就是在系统层面上创建一个进程,Linux是可以同时加载多个可执行程序的,意味着系统中是会出现同时存在大量进程的情况。
- 那么这么些个进程需不需要被系统管理起来呢?答案是肯定的。
- 那么系统是如何进行管理大量进程的呢? --- 先描述,再组织。
例图:
上述是一个草图,本质上想描述的是 完整的进程 = 对应的文件(代码+数据)+ 对应的PCB结构体(进程)
通过对进程对应的PCB结构的增删查改,也就实现了对进程的管理。
关于进程的描述 --- PCB
进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。
书本上称之为PCB(process control block),Linux操作系统下的PCB是:task_struct
task_struct-PCB的一种
在Linux中描述进程的结构体叫做task_struct。
task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息。
task_ struct内容分类
- 标示符: 描述本进程的唯一标示符,用来区别其他进程。
- 状态: 任务状态,退出代码,退出信号等。
- 优先级: 相对于其他进程的优先级。
- 程序计数器: 程序中即将被执行的下一条指令的地址。
- 内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
- 上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。
- I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
- 记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
- 其他信息
如何查看进程
1.ps
ps:查看在当前终端下的进程 ps axj:查看在系统中的所有进程
示例:
示例2:
2.top:显示系统中存在的所有进程(相当于Windows下的任务资源管理器)
示例:
通过系统调用获取进程标识符
- 进程id(PID) --- getpid
- 父进程id(PPID)--- getppid
代码示例: