进程:进程是一个调度单位,CPU为这个单位分配资源让其 正常的执行
程序:持久性的保存在本地的一个可以执行的文件
进程与程序之间的关系:当程序执行,产生调度单位【进程】以后,该调度单位与程序文件没有任何的关系【相互独立】
进程空间【虚拟内存】:其中的0-3G提供给用户空间【KERNEL】使用,3-4G提供给内核空间【USER】使用
用户空间存储的内容包括:环境变量【命令行参数】;栈;静态库/共享库;堆;BSS/DATE【代码/数 据:作用于已经初始化和没有初始化的全局变量和静态变量】;test代码段
内核空间主要用于装每一个进程的PCB【进程控制块】:进程控制块中包含的信息【PID:进程ID;UID: 用户ID;GID:组ID;PATH:进程的工作路径】。每一个进程在创建初始化时,内核都会分配一个PCB给这个 进程 。
物理内存与内存之间的存在的映射关系:【映射关系存在于虚拟内存的映射表中】
内核所有的进程有相同的物理空间【共享】
用户空间中的内容对于不同的进程而言进程之间不能共用,只能采用独占式的方式
内存的单位:页/【4096字节】---4K
系统调用【将产生中断(汇编指令是:int 0x80)】:用户空间到内核空间的转换/CPU使用 级别的切换。
用户级最低,内核级最高
实例:printf()函数在调用的 时仍然处于用户空间中,调用后进入 内核空间
进程间的分时复用的原则【时间片的轮转】:
分时复用优点: 将资源合理利用的最小化。
分时复用的基础:寄存器,栈
核心思想:当中断产生的时候,将会执行保护 寄存器现场的操作【将数据保存到PCB所指向的内核的栈中,用于下一次进 程对数据的处理】;当中断取消时, 将恢复寄存器的现场,将PCB内核栈中的数据放入寄存器中。
通俗的说法是: 一个调度单位(进程、线程)就是寄存器和栈。