首页 > 代码库 > 第5章 进程环境(1)_进程结构(task_struct)

第5章 进程环境(1)_进程结构(task_struct)

1. 进程的概念和进程结构

1.1 进程

(1)程序(program)是一些保存在磁盘上有序指令的集合,是存放在磁盘文件中的可执行文件。但没有任何执行的概念,它是静态的

(2)进程(process)

  ①程序的执行实例被称为进程,是一个动态的概念,它是程序执行的过程,包括创建、调度和消亡。

  ②进程具有独立的权限与职责,如果系统中某个进程崩溃,它不会影响其余的进程。

  ③每个进程运行在其各自的虚拟地址空间中,进程之间可以通过由内核控制的机制相互通信。

(3)进程ID:每个linux进程都有一个唯一的数字标识符,称为进程ID(process ID),进程ID 总是一个非负整数。

1.2 内核中的进程结构

(1)task_struct结构体

技术分享 

  ①进程号(pid):用来唯一标识进程。

  ②进程的状态,标识进程是处于运行态,等待态,停止态,还是死亡态

    A.运行态:此时进程 或者正在运行,或者准备运行

    B.等待态:此时进程在等待一个事件发生或某种系统资源

    C.停止态:此时进程被终止

    D.死亡态:这是一个已终止的进程,但还在进程向量数组中,占有一个task_struct结构。

  ③进程的优先级和时间片。

    不同有优先的进程,被调度运行的次序不一样,一般是高优先级的进程先运行。时间片标识一个进程将被处理器运行的时间

  ④虚拟内存

    大多数进程有一些虚拟内存(内核线程和守护进程没有) ,并且Linux必须跟踪内存如何映射到系统物理内存。

  ⑤处理器相关上下文

    一个进程可以被认为是系统当前状态的总和。每当一个进程运行时,它要使用处理器的寄存器、栈等,这是进程的上下文(context)。并且,每当一个进程被暂停时,所有的CPU相关上下文必须保存在该进程的task_struct中。当进程被调度器重新启动时其上下文将从这里恢复。

(3)与文件相关的两个数据结构

技术分享 

  ①fs_struct:它包含此进程当前工作目录根目录、umask。umask是新文件被创建的缺省模式,它可以通过系统调用来改变。

  ②files_struct包含此进程正在使用的所有文件的信息f_mode字段描述该文件是以什么模式创建的:只读、读写、还是只写。f_pos保存文件中下一个读或写将发生的位置。f_inode描叙文件的VFS索引节点,而f_ops是一个例程向量的指针,每个代表一个想施加于文件的操作的函数。Linux进程在启动时有3个文件描述符被打开了,他们是标准输入设备、标准输出设备和标准错误设备,并且通常是从创建此进程的父进程继承得来

第5章 进程环境(1)_进程结构(task_struct)