task_struct结构描述
来源:互联网 发布:unity3d户型模型 编辑:程序博客网 时间:2024/04/30 04:04
1、Linux中的进程状态:
可运行状态
处于这种状态的进程,要么正在运行、要么正准备运行。正在运行的进程就是当前进程(由current所指向的进程),而准备运行的进程只要得到CPU就可以立即投入运行,CPU是这些进程唯一等待的系统资源。系统中有一个运行队列(run_queue),用来容纳所有处于可运行状态的进程,调度程序执行时,从中选择一个进程投入运行。在后面我们讨论进程调度的时候,可以看到运行队列的作用。当前运行进程一直处于该队列中,也就是说,current总是指向运行队列中的某个元素,只是具体指向谁由调度程序决定。
等待状态
处于该状态的进程正在等待某个事件(event)或某个资源,它肯定位于系统中的某个等待队列(wait_queue)中。Linux中处于等待状态的进程分为两种:可中断的等待状态和不可中断的等待状态。处于可中断等待态的进程可以被信号唤醒,如果收到信号,该进程就从等待状态进入可运行状态,并且加入到运行队列中,等待被调度;而处于不可中断等待态的进程是因为硬件环境不能满足而等待,例如等待特定的系统资源,它任何情况下都不能被打断,只能用特定的方式来唤醒它,例如唤醒函数wake_up()等。
暂停状态
此时的进程暂时停止运行来接受某种特殊处理。通常当进程接收到SIGSTOP、SIGTSTP、SIGTTIN或 SIGTTOU信号后就处于这种状态。例如,正接受调试的进程就处于这种状态。
僵死状态
进程虽然已经终止,但由于某种原因,父进程还没有执行wait()系统调用,终止进程的信息也还没有回收。顾名思义,处于该状态的进程就是死进程,这种进程实际上是系统中的垃圾,必须进行相应处理以释放其占用的资源。
2、进程调度信息
调度程序利用这部分信息决定系统中哪个进程最应该运行,并结合进程的状态信息保证系统运转的公平和高效。这一部分信息通常包括进程的类别(普通进程还是实时进程)、进程的优先级等等。
进程调度的策略
3、标识符
4、进程通信有关信息
为了使进程能在同一项任务上协调工作,进程之间必须能进行通信即交流数据。Linux支持多种不同形式的通信机制。它支持典型的Unix 通信机制(IPC Mechanisms):信号(Signals)、管道(Pipes),也支持System V 通信机制:共享内存(Shared Memory)、信号量和消息队列(Message Queues)
5、 进程链接信息(Links)
程序创建的进程具有父/子关系。因为一个进程能创建几个子进程,而子进程之间有兄弟关系,在task_struct结构中有几个域来表示这种关系。
在Linux系统中,除了初始化进程init,其他进程都有一个父进程(parent process)或称为双亲进程。可以通过fork()或clone()系统调用来创建子进程,除了进程标识符(PID)等必要的信息外,子进程的task_struct结构中的绝大部分的信息都是从父进程中拷贝,或说“克隆”过来的。系统有必要记录这种“亲属”关系,使进程之间的协作更加方便,例如父进程给子进程发送杀死(kill)信号、父子进程通信等,就可以用这种关系很方便地实现。
每个进程的task_struct结构有许多指针,通过这些指针,系统中所有进程的task_struct结构就构成了一棵进程树,这棵进程树的根就是初始化进程init的task_struct结构(init进程是Linux内核建立起来后人为创建的一个进程,是所有进程的祖先进程)。
6、时间和定时器信息(Times and Timers)
一个进程从创建到终止叫做该进程的生存期(lifetime)。进程在其生存期内使用CPU的时间,内核都要进行记录,以便进行统计、计费等有关操作。进程耗费CPU的时间由两部分组成:一是在用户模式(或称为用户态)下耗费的时间、一是在系统模式(或称为系统态)下耗费的时间。每个时钟滴答,也就是每个时钟中断,内核都要更新当前进程耗费CPU的时间信息。
7、文件系统信息
、
8、虚拟内存信息(Virtual Memory)
9、页面管理信息
10、对称多处理机(SMP)信息
- task_struct结构描述
- task_struct结构描述
- task_struct结构描述
- task_struct结构描述
- task_struct结构描述
- task_struct 结构描述
- task_struct 结构描述
- task_struct结构描述
- linux 入门:task_struct结构描述
- 进程的task_struct结构描述
- 进程控制块PCB结构 task_struct 描述
- 进程控制块PCB结构 task_struct 描述
- linux进程描述符—task_struct结构
- 进程控制块PCB结构 task_struct 描述
- 进程控制块PCB结构 task_struct 描述
- 进程控制块PCB结构 task_struct 描述
- 进程控制块PCB结构 task_struct 描述
- task_struct结构体(PCB)描述
- 删除字符串中出现次数最少的字符
- RTC与Maven Release Plugin结合使用遇到的问题
- 实习第十五天:如何在文件夹中打开DOS命令窗口
- OpenCV3.1开发系列-CMake编译OpenCV3.1及opencv_contrib
- c++第7次实验-素数和回文
- task_struct结构描述
- UNIX环境高级编程-第3章 文件I/O
- C语言之typedef
- Java 线程池的原理与实现
- 63. Unique Paths II
- 顺序表(Seqlist)&链表(List)的基础操作
- OCR字符切割实例
- Matlab预分配内存优化for循环
- Dealloc 时取 weak self 时崩溃