进程管理

作者: minlover | 来源:发表于2017-06-08 12:53 被阅读3次

    虚拟内存的三个结构:mm_struct、vma_struct、页目录/页表

    进程是动态创建的 --> 复制 fork / 克隆 clone;最初的进程(0号进程) --> 静态做一个

    进程的生命周期:① 进程创建 --> ② 进程执行影加载 --> ③资源分配(包括进程的虚拟内存) --> ④进程调度(分配或回收进程的 CPU) --> 进程终止(CPU 通过中断或时钟中断拿回控制权)

    进程间:互斥、同步、通信。


    1、进程管理的核心是处理器资源额分配,所以进程管理又称为处理器调度(处理器的分配和回收)。

    处理器分配给只等待处理器的程序。

    单道程序 --> CPU 按顺序、逐条执行程序中的指令

    多道程序 --> 并发、资源共享

    Process 进程、Thread 线程  -->  多个线程共用一个进程的资源,一个进程中可以有多个线程。

    进程 = 程序 + 数据 + 档案

    ①进程用于执行程序。创建一个进程必须执行程序。②一个进程可以值运行一个程序,也可在运行期间更换程序;一个程序可被多个进程同时运行。③所有程序都是在进程中执行,包括操作系统。


    2、进程控制块PCB

    为进程建立的档案 --> PCB(Process Control Block)进程控制块

    Linux --> task_struct  ;ucore --> proc_struct

    (1)PCB 是进程存在的唯一标识,含有进程的描述信息和控制信息:

    ① 进程标示,即进程名

    pid —— 进程标识符;uid —— 用户标识符;gid —— 用户所属的组标识符。

    ② 进程状态

    Ready —— 就绪状态:具备运行条件,只等待 CPU

    Blocked —— 封锁状态(阻塞/等待/挂起/睡眠):因等待某种资源或事件暂时不能运行

    Running —— 运行状态:已获得 CPU,正在执行程序。

    ③ 资源分配情况 :已获得的内存,已打开的文件等

    ④ 调度关系 :优先级 priority、进程类型、时间片 time slice

    ⑤ 进程现场信息 :CPU 现场,包括各种寄存器的值

    ⑥ 族系关系

    ⑦ 通信信息 :进程间的同步、互斥关系,锁、信号量等

    ⑧ 各类统计信息

    ⑨ 安全信息

    (2)进程的 PCB 必须驻留在系统内存区中。组织 PCB 的方法有:

    ① PCB 结构数组 ②PCB 向量表(指针数组)③ PCB 链表(单就绪队列)④ PCB 链表(多就绪队列) ⑤ 其他结构 eg:红黑树

    Ucore 中 PCB  --> hash 表 hash_list;Ucore 中所有进程的队列 --> proc_list

    Linux 原来用过向量表,现在用红黑树


    3、ucore 结构

    ① state ——状态,ucore 定义了四个状态:

    Linux 差不多,就是等待状态分了几种。

    ② mm —— 虚拟内存,课为空

    ③ context —— 进程上下文,通用寄存器。

    ④ kstack —— 进程的系统堆栈,连续的2个物理页,8k

    ⑤ tf —— 中断帧指针,系统堆栈的栈顶

    ⑥ CR3 —— 页目录,可为 boot_pgdir

    ⑦ current —— 指向当前运行进程 PCB

    相关文章

      网友评论

        本文标题:进程管理

        本文链接:https://www.haomeiwen.com/subject/revnfxtx.html