zoukankan      html  css  js  c++  java
  • 进程PCB学习

    转自:https://blog.csdn.net/shuizhilan/article/details/6642040

    https://zhuanlan.zhihu.com/p/32341542

    1.组成

    进程的PCB是系统感知进程的唯一实体。对进程进行操作,也可以理解为对PCB进行操作 PCB是要常驻内存的

    所以在创建进程的时候,就是分配一个PCB,里面记录了进程的各种信息,这些信息都包括:

    1. 描述信息:进程的标识号(pid)、用户标识号(uid)、家族关系(gid)
    2. 控制信息:进程当前状态(就绪、运行、阻塞)、进程优先级、程序开始地址、计时信息、通信信息
    3. 资源管理信息:管理内存数据结构的指针、文件系统的指针等包括存储器的信息,IO设备、文件系统的信息。
    4. CPU现场保护结构:各个寄存器的内容

    2.组织方式

    2.1 链接

     不同的就绪队列有不同的指针指向。

    2.2 索引 

     每个状态对应一个索引表。

    3.实例

    Linux中的进程块:

    struct task_struct{
        ...
        unsigned short uid;#用户标识
        int pid;#进程id
        int processor;#标识用户正在使用的CPU
        ...
        volatile long state;#标识进程的状态
        long prority;#优先级
        unsighed long rt_prority;#实时进程的优先级,对于普通进程无效
        long counter;#进程动态优先级计数器,用于进程轮转调度算法
        unsigned long flags;
        unsigned long policy;#进程调度策略
        ...
        Struct task_struct *next_task, *prev_task;#进程PCB双向链表的前后项指针
        Struct task_struct *next_run,*prev_run;#就绪队列双向链表的前后项指针
        Struct task_struct *p_opptr,*p_pptr,*p_cptr,*pysptr,*p_ptr;
    #进程家族间的关系,分别为指向祖父进程、父进程、子进程以及新老进程的指针。 ... };

    其中上述进程调度策略policy:

    SCHED_OTHER(值为0)对应普通进程优先级轮转法(round robin)
    SCHED_FIFO(值为1)对应实时进程先来先服务算法;
    SCHED_RR(值为2)对应实时进程优先级轮转法

  • 相关阅读:
    HDU5367 思维map // 动态线段树
    CF500C New Year Book Reading
    窗口的星星
    【模板】扫描线
    [JLOI2014]松鼠的新家
    [USACO15DEC]最大流Max Flow
    The Lost House
    介绍 Seq2Seq 模型
    word2vec 和 glove 模型的区别
    关于 word2vec 如何工作的问题
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/14378769.html
Copyright © 2011-2022 走看看