1.CPU处理程序过程
\qquad在存储介质中,从下至上是进程的时间加载的先后顺序,也是存储空间大小的顺序。
2.MMU(内存管理单元)
\qquadMMU是位于CPU内部的一个物理器件。在程序运行时,会产生进程,同时产生虚拟内存空间,但是虚拟内存并不存在,真实存在的是物理内存。虚拟地址:可用的地址空间有4G。MMU完成虚拟内存地址和物理内存地址之间的映射。除此之外,MMU在完成虚拟内存和物理内存之间的映射时,还会完成设置内存访问级别。
\qquad当程序需要多少内存时,MMU就会给程序分配多少,但分配的最小单元空间大小为4K,即MMC把虚拟内存映射到物理内存的大小为4K的整数倍。两个不同的进程,共用同一块物理内存内核空间。
3.PCB(进程控制块)
\qquadPCB,也叫进程控制块,位于虚拟内存内核空间中,本质是task_struct结构体,用于维护进程相关信息。
\qquad 在/usr/src/kernels/3.10.0-1127.19.1.el7.x86_64/include/linux/sched.h
可以找到struct task_struct
结构体,其内部成员有:
\qquad进程ID:系统中的每一个进程都有唯一的ID,在C语言中,常用pid_t类型表示,即非负整数。
\qquad进程的状态:就绪:等待CPU分配时间片;运行:占用CPU;挂起:等待CPU之外的其它系统资源,主动放弃CPU;停止。
\qquad进程切换时,需要保存和恢复的一些CPU寄存器。
\qquad描述虚拟地址空间的信息:虚拟地址空间和物理内存空间的对应关系。
\qquad描述控制终端的关系
\qquad当前工作目录位置。
\qquadumask掩码
\qquad文件描述符表,包含很多指向file结构体的指针。
\qquad和信号相关的信息
\qquad用户id和组id
\qquad会话和进程组
\qquad进程可以使用的资源上限。资源上限查询命令 :ulimit -a