内核导言之进程概述

进程概述

一个进程是一个程序的执行,它是有一序列有格式字节组成的,这些有格式字节

被解释成机器指令(正文)、数据和栈区。可以有几个进程是一个程序的实例,一个

进程遵循着一个严格的指令序列执行,这个指令序列是自包含的,不会跳转到其他进

程的指令序列上。
      UNIX系统上的进程都是被系统调用fork创建的实体。除了0进程以外,每个进程都

是被另外一个进程执行系统调用fork时创建的。调用系统调用fork的进程是父进程,而

新创建的进程是子进程。一个进程可以创建多个子进程,但是进程只能有一个父进程

内核各进程的进程标识号来标知每个进程,进程标志号简称进程ID。0进程是一个特殊

的进程,他是在系统引导时手工创建的;当他创建1号进程(init进程)后,0进程就会

变为对换进程。init进程是是系统中每个进程的祖先。


程序编译建立可执行文件,可执行文件由以下几部分组成:
    1)描述文件属性的一组“头标(header)”
    2)程序正文
    3)数据的机器语言表示,它给出程序开始执行时的初值;一个空间指示,它指出内核

      应该被称为bss的未初始化数据分配多大的空间(运行时内核应该把bss的初值置为0)

    4)其他段,诸如符号表信息



进程表的信息
   1) Pid:它指明进程与其他进程的关系(例如,父子关系)。
   2) 进程状态:也就是准备就绪、睡眠、正在运行等。
   3) 调度参数:如优先级。
   4) 进程统计数据:如执行时间和内核资源利用率(这些用于设置进程优先级)。
   5) 指向每个进程区域表(P区表)的指针:通常,有三个指针,对每个用户进程而言,

       它们分别对应文本、数据和堆栈。

   6) 指向u区和内核堆栈的指针:接下来的部分介绍这些数据结构。

u区的信息
   1) 指针:指向该进程对应进程表中的条目。为避免混乱,图中并没有给出该指针。
   2) 真实有效的用户ID:指明进程的权限,如文件访问权限。
   3) 控制终端:该字段确定与进程相关的"逻辑终端"。
   4) 计时器:该字段分别指明进程在用户模式和内核模式下的运行时间。
   5) 队列:指明进程想要响应不同信号的方式。当该进程对应的信号到达时,查询队

       列并采取适当的动作。
   6) 当前目录和当前根目录:描述进程所处的文件系统环境。当用户想要从一个目录转

       换到另一个目录时,从本质上讲,这个字段被改动。同样还要使用该字段由相对路

        径名连接后构造绝对路径名。
   7) 用户文件描述符:该表维护进程用不同模式打开的文件,前面已经介绍过。
   8) 权限:该字段帮助进程在创建文件时设置权限掩码位。它表示u区中的这些权

      限位可被用作以"Creat"系统调用作为参数提供的这些权限位的掩码。最终将这

       些结果权限位设置为该文件索引节点中的权限。因此,该进程创建或打开的所

      有文件根据掩码可以拒绝某种权限。

   9) 最大值:该字段限制进程的大小以及进程可以写的文件的大小。
  10) I/O参数:该参数指明源地址/目标地址,要传送的数据量等。通常,它们保存内

       存地址和作为文件偏移的相对字节数(RBN)。

  11) 返回值:该字段存储系统调用产生的结果。
  12) 错误:该字段记录该进程提交的系统调用在执行期间遇到的错误。


进程上下文
一个进程的上下文包括被进程正文所定义的进程状态、进程的全局用户变量和数

据结构的值、他使用机器寄存器的值、存储在它的进程表项与u区中的值以及它用户栈

和核心栈的内容。当执行一个进程时,系统被说成是在该进程的上下文中执行。当内

核决定要去执行另一个进程时,它做一次上下文切换,以使系统在另外一个进程的上下

文执行。当内核进行上下文切换时,要保留足够的信息,以便后来切换回来执行该进程。

类似的,当从用户态切换到内核态时,内核也要保留足够的信息方便以后能够切换回用户

态,并且在断点继续执行。中断也是类似。




进程状态:
1) 用户运行态(UR)--进程运行在用户模式下。
2) 内核运行态(KR)--进程运行在内核模式下。
3) 准备就绪态(RD)--进程运行准备就绪。
4) 内存睡眠态(AM)--进程受阻塞,并且正在等待诸如I/O完成这样的事件。
5) 就绪交换态(RS)--进程只有被交换进入之后才可以被调度,而不是在等待其他事件

时被调度。
6) 睡眠交换态(AS)--进程已经被换出,同时还在等待事件。通常,在等待的事件发生

后,它先转移到"就绪交换态", 然后是在被换入时才转移到"准备就绪态"。作为选择,

如果该进程在某个事件中被阻塞时就被换入,那么它可以进入"内存睡眠态"。在事件处

理完以后可以进入"准备就绪态"。之后,该进程进入"内核运行态",最终进入"用户运行

态",内核就可以调度该进程了,因而可以执行实际的用户进程。

7) 抢占优先态(PR)--进程没有等待任何事件,并且有一个进程已经放弃对CPU的控制,

且其直接返回到"用户模式",那么可以调用该进程。

8) 已经创建态(CR)--进程已经创建完毕,但尚未准备就绪。
9) 僵尸存放态(ZM)--进程已经被终止,但尚未完全从系统中删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值