精华内容
下载资源
问答
  • 进程控制块、进程上下文

    千次阅读 2018-08-14 07:58:24
    一. 进程控制块 为了描述和控制进程的运行,系统为每个进程定义了一个数据结构——进程控制块(PCB)。... PCB是进程存在的唯一标识。 PCB主要包括如下4方面的信息 1. 进程标识信息 进程标识信息用于唯一地标识一...

    一. 进程控制块

    为了描述和控制进程的运行,系统为每个进程定义了一个数据结构——进程控制块(PCB)。  它是进程重要的组成部分,它记录了操作系统所需的、用于描述进程的当前状态和控制进程的全部信息。  操作系统就是根据进程的PCB来感知进程的存在,并依此对进程进行管理和控制。 PCB是进程存在的唯一标识。
    
    PCB主要包括如下4方面的信息
    1. 进程标识信息
    进程标识信息用于唯一地标识一个进程,一个进程通常有两种标识符:内部标志符&外部标识符。
        - 内部标志符: 由操作系统赋予每个进程的一个唯一的数字标识符,它通常为一个进程的序号,方便了系统使用。
        - 外部标识符: 由创建者产生,是由字母和数字组成的字符串,为用户进程访问该进程提供方便。
    为了描述进程间的家族关系,通常还设有父进程标识和子进程标识,以表示进程间的家族关系。
    此外,还设有用户名或用户标识号表示该进程属于哪个用户。
    
    1. 处理机状态
      处理机状态信息主要由处理机的各个寄存器内的信息组成。 进程运行时的许多信息均存放在处理机的各种寄存器中。其中程序状态字(PSW)是相当重要的,处理机根据程序状态寄存器中的PSW来控制程序的运行。
    2. 进程调度信息
      PCB中还存放着一些与进程调度有关的信息。
      - 进程状态。 标识进程的当前状态(就绪、运行、阻塞),作为进程调度的依据。
      - 进程优先级。 表示进程获得处理机的优先程度。
      - 为进程调度算法提供依据的其他信息。例如,进程等待时间、进程已经获得处理器的总时间和进程占用内存的时间等。
      - 事件。 是指进程由某一状态转变为另一状态所等待发生的事件。(比如等待I/O释放)
    3. 进程控制信息
      - 程序和数据地址。 是指组成进程的程序和数据所在内存或外存中的首地址,以便在调度该进程时能从其PCB中找到相应的程序和数据。
      - 进程同步和通信机制。 指实现进程同步和通信时所采取的机制,如消息队列指针和信号量等,他们可以全部或部分存在PCB中。
      - 资源清单。 列出了进程所需的全部资源 及 已经分配给该进程的资源,但不包括CPU.
      - 链接指针。它给出了处于同一队列中的下一个PCB的首地址。
      总结:
      对于多道程序环境,系统中通常存在多个PCB,这些PCB有的已经被占用,有的处于空闲状态。为了方便对这些PCB的查找,通常采用链表或索引将PCB管理起来。 无论采用哪种管理方式,均是将具有相同状态进程的PCB组成一个队列,或是根据进程进入该状态的原因将其组成一个队列,并设置相应的队首指针,这样就可以非常方便的访问各个进程的PCB。
      总之,系统因 PCB 而感知进程的存在,并通过 PCB 来对进程进行调度、控制、分配资源。 若进程执行结束,则通过释放 PCB 来释放进程所占有的各种资源。

    一. 进程上下文与上下文切换

    1. 进程上下文
    进程是在操作系统支持下执行的,进程执行时需要操作系统为其设置相应的执行环境,如系统堆栈、地址映像寄存器、程序计数器、程序状态字、打开文件表以及相关通用寄存器等。 所以,把进程的物理实体与支持进程执行的物理环境合称为进程上下文。
    
    
        - 上文: 把已执行的进程指令和数据在相关寄存器与堆栈中的内容称为上文。
        - 正文: 把正在执行的进程指令和数据在相关寄存器与堆栈中的内容称为正文。
        - 下文: 把待执行的进程指令和数据在相关寄存器与堆栈中的内容称为下文。
    
    Unix System Ⅴ 的进程上下文组成:由用户级上下文、寄存器上下文、系统级上下文组成。 
    
    
        - 用户级上下文:由进程的用户程序段部分编译而成的用户正文段、用户数据和用户栈等组成。
        - 寄存器上下文:由程序计数器(PC)、处理机状态字(PS)、栈指针和通用寄存器组成。 PC给出CPU将要执行的下一条指令的虚地址;PS给出机器与该进程相关联时的硬件状态;栈指针指向下一项的当前地址;通用寄存器则用于不同执行模式之间的参数传递。  
        - 系统级上下文又分为静态部分和动态部分。 这里的动态部分是指进入和退出不同的上下文层次时,系统为各层上下文中相关联的寄存器值所保存和恢复的记录。 系统级上下文静态部分包括PCB结构、将进程虚地址空间映射到物理空间的有关表格、核心栈等。 这里,核心栈主要用来装载进程中所使用的系统调用的调用序列。  
        系统级上下文的动态部分是与寄存器上下文相关联的。
        进程上下文的层次概念主要体现在动态部分中,即系统级上下文的动态部分可看成是由一些数量变化的层次组成,其变化规则符合许先进后出的堆栈方式。
    
    2. 进程上下文切换
    进程上下文切换发生在不同的进程之间而不是同一个进程内。
    进城上下文切换分成三个步骤:
    (1) 把被切换进程的相关信息保存到有关存储区,例如该进程的PCB中。
    (2) 操作系统中的调度和资源分配程序执行,选取新的进程。
    (3) 将被选中进程的原来保存的正文部分从有关存储区中取出,并送至寄存器与堆栈中,激活被选中进程执行。 
    

    总结: 进程上下文切换的切换过程涉及由谁来保护和获取进程的正文的问题,也就是如何使寄存器和堆栈等中的数据流入流出 PCB 的存储区。 另外,进程上下文切换还涉及系统调度和分配程序,这些都比较耗费CPU时间。

    转载自:https://blog.csdn.net/cooling88/article/details/53074038

    展开全文
  • 进程控制块

    2015-05-14 20:39:52
    总而言之,PCB是进程存在的唯一标志。 进程控制块中的信息包括进程标识符、处理机状态、进程调度信息、进程控制信息。 进程标识符用于唯一的标识一个进程。一个进程通常有两种标识符:内部标识符

    为了描述和控制进程的运行,系统为每一个进程定义了一个数据结构——进程控制块。

    它是进程实体的一部分,是操作系统中最重要的记录型数据结构。或者说,OS是根据PCB来对并发程序的进程进行控制和管理的。总而言之,PCB是进程存在的唯一标志。

    进程控制块中的信息包括进程标识符、处理机状态、进程调度信息、进程控制信息。

    进程标识符用于唯一的标识一个进程。一个进程通常有两种标识符:内部标识符和外部标识符。

    处理机状态信息主要是由处理机的各种寄存器中的内容组成的。处理机在运行中,许多信息都是放在寄存器中的。当处理机被中断时,所有的这些信息都保存在PCB中,以便在该进程重新执行时,能从断点继续执行。

    进程调度信息包括进程状态、进程优先级、进程调度所需的其他信息,事件(阻塞原因)。

    进程控制信息包括程序和数据的地址、进程同步和通信机制、资源清单、链接指针。

    进程控制块的组织方式为链接方式、索引方式。

    展开全文
  • 进程控制块——PCB

    2018-11-25 10:19:46
    同时,系统可以利用PCB来管理和控制进程,所以说,PCB系统感知进程存在的唯一标识。  Linux系统下的PCB包含了很多参数,每个PCB约占1KB的内存空间大小。 主要包含的内容: 1 进程标识符(唯一) 2 ...

    PCB进程控制块的结构:

      进程控制块(PCB)是系统为了管理进程设置的一个专门的数据结构。系统用它来记录进程的外部特征,描述进程的运动变化过程。同时,系统可以利用PCB来管理和控制进程,所以说,PCB是系统感知进程存在的唯一标识。

      Linux系统下的PCB包含了很多参数,每个PCB约占1KB的内存空间大小。

    主要包含的内容:

    1 进程标识符(唯一)
    2 进程的当前状态,通常同一个状态的进程会被放到同一个队列中(五种状态)
    3 进程的程序和数据地址
    4 进程的资源清单。列出所拥有的除了CPU外的资源记录
    5 进程优先级,反映进程的紧迫程度
    6 CPU现场保护。记录中断时的CPU状态
    7 进程队列中的PCB的链接字
    8 进程的其他相关信息。记账用的,如占CPU多长时间等。
    9  

    用于表示PCB的结构task_struck简要描述如下:

    ​include/linux/sched.h
    
    struct task_struct {
        volatile long state;
        struct thread_info *thread_info;
        atomic_t usage;
        unsigned long flags; 
        unsigned long ptrace;
     
        int lock_depth;
     
        int prio, static_prio;
        struct list_head run_list;
        prio_array_t *array;
     
        unsigned long sleep_avg;
        long interactive_credit;
        unsigned long long timestamp;
        int activated;
     
        unsigned long policy;
        cpumask_t cpus_allowed;
        unsigned int time_slice, first_time_slice;
             
        struct list_head tasks;
        struct list_head ptrace_children;
        struct list_head ptrace_list;
     
        struct mm_struct *mm, *active_mm;
        ...
        struct linux_binfmt *binfmt;
        int exit_code, exit_signal;
        int pdeath_signal;
        ...
        pid_t pid;
        pid_t tgid;    
        ...
        struct task_struct *real_parent;
        struct task_struct *parent;
        struct list_head children;
        struct list_head sibling;
        struct task_struct *group_leader;
        ...
        struct pid_link pids[PIDTYPE_MAX];
     
        wait_queue_head_t wait_chldexit;
        struct completion *vfork_done;
        int __user *set_child_tid;
        int __user *clear_child_tid;
     
        unsigned long rt_priority;
        unsigned long it_real_value, it_prof_value, it_virt_value;
        unsigned long it_real_incr, it_prof_incr, it_virt_incr;
        struct timer_list real_timer;
        unsigned long utime, stime, cutime, cstime;
        unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw;
        u64 start_time;
        ...
        uid_t uid,euid,suid,fsuid;
        gid_t gid,egid,sgid,fsgid;
        struct group_info *group_info;
        kernel_cap_t cap_effective, cap_inheritable, cap_permitted;
        int keep_capabilities:1;
        struct user_struct *user;
        ...
        struct rlimit rlim[RLIM_NLIMITS];
        unsigned short used_math;
        char comm[16];
        ...
        int link_count, total_link_count;
        ...
        struct fs_struct *fs;
        ...
        struct files_struct *files;
        ...
        unsigned long ptrace_message;
        siginfo_t *last_siginfo;
        ...
     };​
    调度数据成员:

    1》volatile long state:表示进程当前的运行状态①TASK RUNNING(可运行)②TASK INTERRUPT IBLE(可中断的等待状态)③TASK UNINTERRUPTIBLE(不可中断的等待状态)④TASK ZOMBIE(僵死状态)⑤TASK STOPPED(暂停状态)等五种。

    2》long priority进程优先级,priority的值给出了每个进程每次获得CPU后,可使用的时间片长度(单位jiffies)。

    3》unsigned long rt_priority rt_priority的值给出了实时进程的优先级。

    4》long counter在轮转法调度是counter表示当前进程还可以运行多久。在进程刚开始时其被赋值为priority,以后每个一个时钟中断递减1,减到0引起新一轮调度。

    5》unsigned long policy表示该进程的进程调度策略。有:SCKED_OTHER 0,非实时进程,用基于优先权的轮转法;SCHED_FIFO 1实时进程,用先进先出算法;SCHED-RR 2实时进程,用基于优先权的轮转法。

    进程队列指针:

    1》struct task_struct* next_task,*prev_task 在Linux中所有进程(以PCB的形式)组成一个双向链表。

    2》struct task_struct* p_opptr,*p_pptr,*p_cptr,*p_ysptr,*p_osptr分别指向该进程的原始父进程,父进程,子进程和新老兄弟进程的指针。

    3》struct task_struct* pidhash_next;struct task_struct** pidhash_pprev用于链入进程hash表的前后指针。系统进程除了链入双向链表外,还被加到了hash表中。

    进程标识:

    1》uid  gid 分别为运行进程的用户标识和用户组标识。

    2》pid pgrp分别是运行进程的进程标识号和进程组标识号。

    3》时间数据成员:long per_cpu_utime[NR_CPUS]是用户进程运行时间,per_cpu_stime[NR_CPUS]内核进程运行的时间,进程创建时间unsigned long start_time

    文件系统结构成员:

    1》struct fs_struct* fs;fs保存了进程本身与VFS(虚拟文件系统)的关系信息。

    struct fs-struct

    {

        atom ic_t count;

        rw lock_lock;

        int umask;

        struct dentry* root,*pwd,*altroot;

        struct vfsm ount* rootmnt,*pwdmnt,*altrootmnt;

    }

     

    内部数据成员:

    1》struct mm_stuct* mm;在Linux中,采用按需分页的策略解决进程的内存要求。mm是指向关于储存管理的mm_truct结构。

    2》struct mm_struct* active_mm;指向活动地址空间。

    3》mm_segm ent_t addr_lim it表示线程空间地址。用户线程空间地址:0...0xBFFFFFFF。内核线程空间地址:0...0xFFFFFFFF.

    4》spinlock_t alloc_lock;用于申请空间时用的自旋锁。自旋锁的主要功能是临界区保护。

     

    页面管理:

    1》int swappable:1 进程占用的页面是否可换出。swappable 为1表示可换出。

    2》unsigned long min_flt,maj_flt;该进程累计minor缺页次数和major缺页次数。

    3》unsigned long nswap该进程累计换出页面数

    4》unsigned long swap_cnt下一次循环最多可换出的页数。

     

    展开全文
  • 进程控制块: 是操作系统管理控制进程运行所哦那个的信息集合,操作系统用PCB来描述进程的基本情况以及运行变化的过程,PCB是进程存在的唯一标志    进程的创建:为进程创建PCB  进程的终止: 回收他的PCB  ...

      进程控制块: 是操作系统管理控制进程运行所哦那个的信息集合,操作系统用PCB来描述进程的基本情况以及运行变化的过程,PCB是进程存在的唯一标志

      

      进程的创建:为进程创建PCB

      进程的终止: 回收他的PCB

      进程的组织管理:通过对PCB的阻值管理实现

     

      包含三大类信息

        (一) 进程标识信息:如本进程的表示,本进程的产生者标识(父进程标识) 用户标识

        (二) 处理器的状态信息保存区 保存进程的运行现场信息

          用户可见寄存器:用户程序可以使用的数据,地址等寄存器

          控制和状态寄存器:比如程序计数器PC 程序状态字 PSW

          栈指针:过程调用/系统调用/终端处理和返回时需要用到

       (三)进程控制信息

          调度和状态信息:用于操作系统调度进程并占用处理机使用

          进程间通信信息:为支持进程通信与通信相关的各种标志 信号 信件等,这些信息存在接收方的进程控制块中

          存储管理信息:包含有指向本进程映像存储空间的数据结构

          进程所用资源:说明由进程打开、使用的系统资源,如打开的文件等。

          有关数据结构链接信息:进程可以连接到一个进程队列中,或连接到相关的其他的其他的PCB

     

       PCB的组织方式

        链表:同一状态的进程其PCB成一张链表 多个状态对应多个不同的链表

            (各状态有不同的链表 比如 就绪链表 阻塞链表)

        索引表:同一状态归入一个index表 (由index指向PCB),多个状态对应多个不同的Index表

            (各状态的进行形成不同的索引表:就绪索引表、阻塞索引表)

     

    转载于:https://www.cnblogs.com/cjdty/p/10911490.html

    展开全文
  • 进程控制块(PCB)

    2013-11-10 20:16:50
    总而言之,PCB是进程存在的唯一标志。 进程控制块中的信息包括进程标识符、处理机状态、进程调度信息、进程控制信息。 进程标识符用于唯一的标识一个进程。一个进程通常有两种标识符:内部标识符和外部标识符
  • 进程控制开发-1

    2009-08-25 16:18:00
    进程的学习进程控制开发纲要基本概念定义:相对于程序而言,它是一个动态的...控制信息,以及资源信息,每一项是一个task_struct结构,include/linux/sched.h 进程控制块是进程存在的唯一标识,一般把PCB放在操作系统
  • PCB是用以记录与进程相关信息的主存区,是进程存在的唯一标志。 二、PCB中的信息 1. 进程标识符 作用: 用于唯一地标识一个进程 • 进程本身:外标识、内部标识 • 家族信息:父进程、子进程信息 2. 处理机状态 ...
  • 进程的描述与控制 文章目录进程的描述与控制进程的定义进程的组成进程的组织进程的...程序段、数据段、PCB(进程控制块)三部分组成了进程实体(PCB是进程存在的唯一标识) 典型定义 进程是程序的一次执行过程 进...
  • 进程控制块是进程存在的唯一标识!! 进程的特征 进程的状态和转换 通常进程有5种状态,前3种为基本的状态: 运行态 进程在处理机上运行 就绪态 进程已经获得除处理机之外的所有资源,获得处理机后即可立即...
  • 1,进程的特征: 动态性 并发性 独立性 异步性 2,进程的组成:由程序,数据集合,进程控制块(PCB)组成 ... PCB是进程存在的唯一标识。 4,PCB的组织方式: 线性队列 链接表 索引结构 ...
  • 进程

    2018-08-16 10:34:29
    进程是程序在一个数据集合上运行的过程,它是系统进行资源...PCB是进程存在的唯一标识。 一个进程执行过程中只能对应一个PCB 进程和程序的区别 进程是程序的一次执行过程,进程是动态的,程序是静态的。 创...
  • 进程控制块(PCB)

    2020-08-29 14:24:58
    PCB是进程存在的唯一标志 系统能且只能通过PCB对进程进行控制和调度 PCB记录了操作系统所需的、用于描述进程的当前情况以及控制进程运行的全部信息 PCB中的信息 1 进程标识符 进程标识符用于唯一地标识一个进程。 ...
  • 05进程的组织

    2021-01-08 08:02:39
    1进程控制块PCB:是进程实体的一部分,是进程存在的唯一标志 主要包括:进程描述信息、进程控制和管理信息、资源分配清单和处理机相关信息,如下 1.1进程描述信息:进程标识符PID:进程唯一的标识号 用户标识符:进程...
  • 进程进程间通信

    2019-01-15 13:26:00
    程序:存放在磁盘文件下的可执行文件 进程:是一个具有独立功能的程序对某个数据集合的一次...进程控制块:PCB是进程存在的唯一标识,是task_struct的结构体,task_struct==》结构体==》进程表项(进程控制块) ...
  • 进程和线程区别

    2017-04-12 10:59:54
    (1)PCB:记录进程的标识、状态和控制信息,是进程的唯一标识,操作系统对进程控制和管理的方式 PCB在内存中以表的形式存储,PCB表,标志着进程的存在,操作系统根据系统中是否有该进程的进程控制块PCB而知道该进程...
  • 进程的组成与调度

    2019-12-09 20:45:27
    进程由 3 个部分组成,分别是程序代码... 进程控制块:包含进程的描述信息和控制信息,它是进程存在的唯一标识 进度调度算法 进程之间需要竞争资源,一般都是竞争 CPU 资源,因为 CPU 运行速度太快了,其他介质都赶...
  • 进程控制块:用于描述进程的外部特征,记录进程的执行过程,系统可以用来控制,管理进程,也操作系统感知进程存在的唯一标识 进程执行的三种状态:阻塞/运行/就绪 1.进程执行过程中出...
  • 04进程的特征和概念

    2021-01-08 08:02:14
    配置专门的数据结构:进程控制块PCB.PCB是进程存在的唯一标志 2、进程特征:动态性(最基本特征)、并发性、独立性、异步性、结构性 3、进程的状态与转换:1运行状态、2就绪状态、3阻塞状态、4创建状态、5借宿状态。...
  • 进程 进程的组成 PCB(进程控制块): 为了描述控制进程的运行,系统中存放进程的管理和控制信息的数据结构称为进程控制块(Process Control Block)。...PCB是进程存在的唯一标识,所谓的创建进...
  • 进程和线程

    2021-01-23 17:25:16
    PCB 是进程存在的唯一标识,这意味着一个进程的存在,必然会有一个 PCB,如果进程消失了,那么 PCB 也会随之消失。 PCB 具体包含什么信息呢? 进程描述信息: 进程标识符:标识各个进程,每个进程都有一个并且...
  • 进程与线程笔记 - 2

    2021-02-28 22:53:06
    PCB是进程存在的唯一标识,进程存在,PCB存在,进程消亡,PCB消亡。 进程控制块携带的信息 进程描述信息:进程标识符(每个进程都有唯一的进程标识符)、用户标识符(进程所属的用户,为共享和保护服务) 进程控制和...
  • Spark[一]——Spark的进程们[Driver、Master、Worker、Executor] 一、背景知识 ...程序控制块包含进程的描述信息和控制信息,是进程存在的唯一标识。 2.线程 线程是程序执行中一个单一的顺序执行控制流
  • (一)进程的概念 ...进程控制块是系统用来控制和管理进程,获得进程状态和进程存在特征的唯一标识。 包括: 进程标识 PID 进程用户 进程状态 进程的优先级 文件描述符表 (四)进程的三种类型 (1)...
  • 操作系统-进程详解

    2020-03-02 16:46:53
    进程包括:进程控制块(PCB),程序段和数据段,其中PCB是进程存在的唯一标识,创建进程实际就是创建一个PCB,而销毁进程实际就是销毁PCB PCB PCB是一个结构体,在linux中为task_struct结构体,其中包括进程状态,...

空空如也

空空如也

1 2 3 4 5
收藏数 88
精华内容 35
关键字:

进程控制块是进程存在的唯一标识