进程的属性
1.程序读取的上下文,它表示程序读取执行的状态
2.程序当前执行的目录
3.程序服务的文件和目录
4.程序访问的权限
5.内存和其他分配给进程的系统资源
进程的状态
略
进程的创建和结束
略
进程的组成
略
进程的调度
task_struct结构体的一些组成
1.State
2.Sheduling Information
3.Identifiers
4.Inter-Process Communication 信号,管道和信号灯共享内存,消息队列
5.Links:进程之间都是相互联系的
6.Times and Timers :jiffies变量,Linux系统支持相关的interval定时器
7.File System:进程可以自由地打开或关闭文件,进程的task_struct结构中包含一个指向每个打开文件描述符的指针以及指向两个VFS inode的指针。每个VFS inode唯一地标记文件中一个目录或者文件,同时还对底层的文件系统提供统一的接口。这两个指针,一个指向进程的根目录,另一个指向其当前或pwd目录。pwd从UNIX命令pwd中派生出来的用来显示当前工作目录。这两个VFS inode包含一个count域,当多个进程引用它时,它的值将增加。这就是为什么不能删除进程当前目录或者其子目录的原因
8.Virtual Memony:多数进程都有一些虚拟内存(核心线程和后台进程没有),Linux核心必须跟踪虚拟内存与系统物理内存带的映射关系。
9.Processor Specific Context:进程可以被认为是系统当前状态的总和。进程运行时,它将使用处理器的寄存器以及堆栈等。进程被挂起时,进程的上下文以及所有的与CPU相关的状态必须保存在它的task_struct结构中。当调度器重新调度该进程时,所有上下文被重新设定。(系统必须将当前进程的状态,处理器中的寄存器以及上下文状态保存到task_struct结构中,每次调用子程序时,它将参数放在寄存器中并把返回地址放置在堆栈中,所有调度器总是运行在当前的进程的上下文)
精通Linux内核开发的里面的划分
进程属性
进程关系
1.real_parent和parent
指向父任务结构体的指针
chldren
这是指向子任务结构体链表的指针
sibiling
这是指向兄弟任务结构体链表的指针
group_leader
这个指针指向进程组组长的任务结构体
进程限制
文件描述符
1.fs
文件系统信息存储在该字段中
2.files
文件描述符表保存了一些指针,这些指针指向进程为了执行各种操作而打开的所有文件,而files字段保存了一个指向该文件描述符表的指针。
信号描述符
1.signed
这是struct signal_struct类型的元素,它保存了与进程相关的所有信号的信息。
2.signhand
这是struct signed_struct 类型的元素,它保存了与进程相关的所有信号的信息。
3.sigset_t blocked和real_blocked
这些元素标识了当前进程屏蔽或阻塞的信号
4.pending
这是struct sigpending类型的,它用来标识已经生成但未传递的信号。
5.
该字段保存了一个指向备用堆栈的指针,它有助于信号处理
6.
该字段表示用于信号处理的备用堆栈的大小
进程调度器
通用调度器下有三个调度类
完全公平调度类(CFS),实时调度类和截止期调度类(dealline)。每个调度类处理有特定需求的进程。
会慢慢补充这篇博客