由程序段(进程运行的程序的代码)、相关数据段、和PCB(进程存在的唯一标志)三个部分构成了进程实体,也称作进程映像。
注:(引入线程后)进程只作为cpu外的系统资源的分配单元。
注:操作系统内核区的内容是用户代码不可见的,并且操作系统内的进程共享一个操作系统内核区,其形式上是各个内存都有自己的内核区,实际上是仅内存中的一块区域存放着操作系统内核区。
注:进程是正在运行的程序的实例
- 首先我们先创建一个进程( 对其命名为P1进程),首先申请一个空白pcb,并向pcb中写入用于控制和管理进程的信息。
- 为该进程分配所需要的资源,若可以获得全部所需要的资源(除cpu)就将该进程挂入就绪队列中,等待cpu的调度。(若不能获得所需的所有资源,则挂入阻塞队列)。
注:
(1)进程的五状态,运行态、就绪态、阻塞态、创建态、结束态(联想进程的转换、哪些状态可以相互转换哪些不行)
(2)处理机调度,
关于调度的层次有,高级调度(作业调度)、中级调度(内存调度)、低级调度(进程调度)
关于调度的目标,cpu利用率、系统吞吐量、周转时间、带权周转时间、等待时间、响应时间
关于典型的调度算法,先来先服务(FCFS)调度算法、短作业优先(SJF)调度算法(平均等待时间最少、平均周转时间最少)、优先级调度算法、高响应比优先调度算法、时间片轮转调度算法、多级队列调度算法、多级反馈队列调度算法。
- 进程存在其自己的虚拟地址空间,虚拟地址空间经过mmu(内存管理单元)可以建立与物理地址空间的映射。【虚拟化技术】
- 然后经过调度算法,轮到P1进程,P1进程由就绪态进入了运行态,cpu开始执行P1进程的代码段,并访问代码段中的虚拟地址
注:所以程序中读写的内存地址对应的也是虚拟地址,并不是真正的物理地址。
- 虚拟地址可以分为虚拟页号和页内偏移量,首先虚拟页号先和TLB(快表,包含TLB标记位、有效位、页框号)的标记位进行对比.
注:
(1)这里TLB是全相联映射,虚拟页号和TLB标记通过标记对比器进行一一对比,当然TLB也可以使用n路组相联映射、直接映射。
(2)虚拟页号可以先和TLB标记比再和页表(慢表)比,也可以同时比。
- 这里假设慢表并未命中,将虚拟页号拆解为页目录号和页号,查页目录表,其中发现虚拟地址中的页目录号与页目录表中的页目录号一致,且有效位为1,则根据该页目录项中的页框号找到二级页表的起始地址,再根据页号找到二级页表中对应的页表项,获得页框号。
注:
(1)页目录表,即顶级页表,只能由一张而且常驻内存中(关于为什么只能有一张,请自行查阅资料,也可简单理解为树状结构)
(2)二级页表可以不在内存中,当需要的时候从外存中调入内存
- 将页框号和页内偏移量拼接获得完整的物理地址,然后就可以根据物理地址去访问cache或者主存了(为计算机组成原理内容)。