Linux的进程及进程数据结构

一 linux的进程

 

 

 在Linux系统中,进程被称为任务。 

Linux的进程运行时,处理机提供了两种执行状态:

1.内核态:又称系统态,它具有较高的特权,能执行所有的机器指令,能访问

所有的寄存器和存储区域,能直接控制所有的系统资源。
2.用户态 :它具有较低的特权,只能执行规定的机器指令,只能访问进程的存

储空间。在用户态下进程不能与系统硬件相互作用,不能访问系统资源。

 

 进程运行在特权较低的用户态下时,只能通过系统调用(system call)转换为内核态后,才能访问系统空间。

 

 

linux进程的组成

Linux进程由三部分组成:
1.正文段(text):存放程序代码。正文段具有只读的属性。
2.用户数据段(user segment):是进程在运行过程中处理数据的集合,它们是

进程直接进行操作的所有数据(包括全部变量在内),以及进程使用的进程堆栈。
3.系统数据段(system segment):存放着进程的控制信息,即进程控制块。Lin

ux中PCB是名字为task_struct的数据结构。

 

进程的虚拟地址空间

 

系统为每个进程分配一个独立的虚拟地址空间。进程的虚拟地址空间被分做两个部分:
1.用户空间。用户进程本身的程序和数据(可执行映象)映射到用户空间中。
2.系统空间。内核被映射到所有进程的系统空间中。它们只允许在具有较高特权的内核态下访问。

 

 

linux进程的类型

Linux操作系统包括三种不同类型的进程。
1.交互进程:这种进程经常与用户交互。典型的有shell进程、文本编辑进程及图形应用程序。
2.批处理进程:这种进程不必与用户交互,因此经常在后台运行。典型的有编译程序、数据库搜索引擎及科学计算。
3.守护进程:Linux系统启动时启动的进程,并在后台运行。

 

 二 描述linux进程的数据结构

 使用名为task_struct的进程控制块来管理linux的进程。

所有的task_struct的指针都存放在task数组中,task数组又称为task向量

 

 task数组大小限制了系统并发执行的进程总数,而物理内存的大小决定了系统中的最大进程数

 

 task_struct包含的主要信息

 1.进程的状态和标志信息

  状态信息,即state项

  1.Running有运行状态,//可运行状态进程组成队列RUN_QUEUE

  2.Waiting 

  可中断等待状态,//可以被信号中断

  不可中断等待状态,//进程不能被信号唤醒

  3.Zombie僵死状态,

  4.Waiting暂停状态,

  5.Swapping交换状态

  6.Exclusive独占状态。

 

 

 

  说明

 

 

0  

 

 

1  

 

 

2  

 

 

4  

 

 

8  

 

 

16  

 

 

32  

flags项,表示进程的标志

 

 

2  进程的调度信息

包含了进程的类别,调度策略,进程的优先级。

policy,priority,rt_priority,counter,nice

 

policy,表示进程调度策略。可以通过系统调用sys_sched_setscheduler()更改

具体的调度策略如下

 

 priority表示进程的静态优先级

priority的值表示每次进程获取cpu之后,可使用的cpu时间,默认为20,

计数单位为jiffies

 

rt_priority给出实时进程的优先级

 

counter:进程的动态优先级,轮转法调度的时候表示进程当前还可以运行多久

    开始时counter被赋予priority的值,运行一个时钟-1,当减到0的时候引起调度,重新从

    run-queue队列中选取counter最大的就绪进程获得cpu

 

nice  2.4以上的内核中,priority被nice取代

    

3 进程的标识信息

  pid是进程标识号,ppid是父进程标识号

  uid和gid,进程的用户标识号和组标识号

  euid和egid,进程的有效用户标识号和有效组标识号

 

 pid一般顺序编号,新创建的pid编号通常是前一个pid+1

pid有上限,超出的话就从0开始

32位pid最大值32767

linux通过pidhash表查找对应的task结构,快速通过进程pid找到task_struct结构的进程描述符

 

4 进程的通信信息

    

5 进程的家族信息

 

 

 

 

 linux还把可运行的进程通过指针*next_run和*pre_run连接形成双向循环队列RUN_QUEUE

 

6 时间和定时消息

 7 文件系统信息

 

 

 

 

 8 存储管理信息

 

 

 

 

 

 9 CPU现场保留信息

保留进程的上下文信息

 

posted @ 2019-12-08 18:59  TheDa  阅读(1309)  评论(0编辑  收藏  举报