进程-进程基本概念

1.进程定义
进程是操作系统的核心和基础,所有多道程序操作系统,它们的创建都围绕着进程的概念。因此操作系统必须满足的大多数需求表示都涉及进程。
进程的定义:

  • 正在执行的程序。
  • 正在计算机上执行的程序实例。
  • 能分配给处理器并由处理器执行的实体。

2.进程分类
Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。

  • 交互进程——由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。
  • 批处理进程——需要用户交互,一般在后台运行。所以不需要非常快的反应,他们经常被调度期限制。典型的批处理进程:编译器,数据库搜索引擎和科学计算。
  • 监控进程(也称守护进程)——Linux系统启动时启动的进程,并在后台运行。

上述三种进程各有各的作用,使用场合也有所不同。

3.进程控制块(PCB
Linux系统需要对进程进行管理操作,就需要一个进程的各种信息,而进程控制块就是进程的描述。
那么系统是怎么保存这些信息的呢?
  Linux的进程控制块为一个结构task_struct所定义的数据结构, 在创建一个新进程时,系统在内存中申请一个空的task_struct区,即空闲PCB块,并填入所需信息。并且将该结构存入tast[]数组中。
  task_struct在/include/linux/sched.h中,其中包括管理进程所需的各种信息。Linux系统的所有进程控制块组织成结构数组形式。
task_struct 结构中包含了许多字段,按照字段功能,可分成如下几类:

  • 标识符(Identifiers):每个进程都有一个进程标识号(PID)和一个父进程标识号(PPID),其中PID唯一标识一个进程。另外,一个进程还有自己的用户标识号(UID)和组标识号(GID),系统通过这两个标识号判断进程对文件或设备的访问权。
  • 进程状态(State) : Linux 进程可有如下几种状态:运行、等待、停止和僵死。
  • 优先级:相对于其他进程的优先级
  • 进程调度信息:系统通过调度信息实现进程间通讯。
  • 进程链接信息(Links):Linux系统中,除了初始化进程init,任何进程都具有父进程同时也可能有兄弟进程或子进程。所以系统有必要记录这些关系,所以每个进程的PCB中都记录着该进程的父进程、子进程以及兄弟进程。每个进程的task_struct结构有许多指针,通过这些指针,系统中所有进程的task_struct结构就构成了一棵进程树,这棵进程树的根就是初始化进程init的task_struct结构(init进程是Linux内核建立起来后人为创建的一个进程,是所有进程的祖先进程)。
  • 时间和定时器信息(Times and Timers):进程在其生存期内使用CPU的时间,内核都要进行记录,以便进行统计、计费等有关操作。
  • 文件系统信息(File System):进程可以打开或关闭文件,文件属于系统资源,Linux内核要对进程使用文件的情况进行记录。task_struct结构中有两个数据结构用于描述进程与文件相关的信息。其中,fs_struct中描述了两个VFS索引节点(VFS inode),这两个索引节点叫做root和pwd,分别指向进程的可执行映象所对应的根目录(home directory)和当前目录或工作目录。
  • 虚拟内存信息(Virtual Memory):每个进程都拥有自己的地址空间(也叫虚拟空间),用mm_struct来描述,内核随时了解和控制进程的内存空间,PCB中必须保存进程内存空间的相关信息。
  • 上下文数据:进程执行时处理器的寄存器中数据。当进程暂时停止运行时,处理机状态必须保存在进程的task_struct结构中,当进程被调度重新运行时再从中恢复这些环境,也就是恢复这些寄存器和堆栈的值。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值