• 进程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)对应实时进程优先级轮转法

  • 相关阅读:
    HDU 5115 Dire Wolf ——(区间DP)
    2016 ICPC 大连网络赛 部分题解
    CodeForces 707D Persistent Bookcase ——(巧妙的dfs)
    HDU 5806 NanoApe Loves Sequence Ⅱ ——(尺取法)
    【Permutations II】cpp
    【Permutations】cpp
    【Subsets II】cpp
    【Subsets】cpp
    【Search a 2D Matrix】cpp
    【Search Insert Position 】cpp
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/14378769.html
Copyright © 2020-2023  润新知