PCB:进程控制块
TCB:线程控制块
进程的物理地址与虚拟地址
物理地址:物理地址空间是实在的存在于计算机中的一个实体,在每一台计算机中保持唯一独立性。
虚拟地址:每个进程都分配有自己的虚拟空间,而且只能访问自己被分配使用的空间。虚拟地址就是虚拟空间中的地址。
虚拟地址和物理地址之间的映射是通过MMU(内存管理单元)来完成: 【实际就是MMU查页表】
虚拟地址的好处:
- 让进程拥有独立的内存空间,相互独立,互不干扰、相互隔离。
- 真实的物理地址不由程序操控,而由计算机分配操控,保证进程数据的安全性。
- 不连续的物理地址映射成了连续的虚拟地址,利用了内存碎片。
- 进程虚拟内存和可以比真实物理内存大 (页面分配策略)
- 程序员是面向虚拟内存进行编程的,程序是面向虚拟内存运行的。因为程序无法知道可用的物理地址是哪些,所以必须做出映射!!!
虚拟地址空间(进程的地址空间)
内核空间是共享的,用户空间是私有的(隔离的)。所以进程间通信需要通过内核空间作为中介!
用户区:
- 程序段(.text):程序段为程序代码在内存中的映射。
- 初始化过的数据(.data):在程序运行值初已经对变量进行初始化的数据。
- 未初始化过的数据(.bss):在程序运行初未对变量进行初始化的数据,操作系统会赋零值。
- 堆(stack):运行时存储临时变量,在程序块开始时自动分配内存,结束时自动释放内存。
- 栈(heap):存放线程函数的参数值,局部变量的值等。
- 命令行参数和环境变量
- 共享动态连接库(操作系的接口)
内核区:
8. 进程控制块PCB
9. 页表:虚拟地址与物理地址的映射
多个进程在操作系统中的组织方式
进程的特征
进程的三种状态
初创+终止状态
进程控制
- 进程的切换是原语实现【原子性执行(开中断、关中断实现的)】
- 切换指令由操作系统内核程序控制的,属于特权指令(所以需要CPU转换为核心态后进行进程状态切换)
进程通信
共享存储
管道通信
消息传递
线程
内核级线程
注意:内核级线程才是系统调度的基本单位