·什么是进程
狭义定义:进程是正在运行的程序的实例。
广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
·描述进程
操作系统对于进程有自己的一个描述,叫做PCB(process control block),而我们在Linux系统下的则叫做task_struct。task_struct是Linux内核的一种数据结构,使用了类似双向链表这些结构体组织起来进行管理,它会被装载到内存中并且包含着进程信息。
·task_struct中的内容
标识符 | 描述本进程的唯一标识符,用来区别其他进程。 |
状态 | 任务状态,退出代码,退出信号等。 |
优先级 | 相对于其他进程的优先级。 |
程序计数器 | 程序中即将被执行的下一条指令的地址。 |
内存指针 | 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块指针。 |
上下文数据 | 进程执行时处理器的寄存器中的数据。 |
I/O状态信息 | 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。 |
记账信息 | 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。 |
·查看进程
我们可以在Linux中写一个死循环,用另外一个终端进行查看:
#include<stdio.h>
#i