目录
1.进程的概念
2.进程管理
3.进程属性(pcb)
3.1pid
3.2内存指针
3.3文件描述符
3.4进程调度
3.4.1进程状态
3.4.2 进程的优先级
3.4.3进程的上下文
3.4.4进程的记账信息
5.进程间通信
一个运行起来的程序,就是进程
.exe是一个可执行文件(程序),双击exe,程序跑起来,就在系统中形成一个进程
管理分两步:
1.描述一个进程:使用结构体/类,把一个进程有哪些信息表示出来
2.组织这些进程:使用一定的数据结构,把这些结构体/对象,放到一起
每一个进程要有唯一的一个身份标识符
当前这个进程使用的内存是哪一部分
进程要运行,就要消耗一定的硬件资源,运行时使用的内存上的资源
进程每次打开一个文件,就会产生一个'文件描述符'(标识了这个被打开的文件),一个进程可能会打开很多文件,对应了一组文件描述符.把这些文件描述符方法一个顺序表这样的结构里,就构成文件描述符表
进程运行要从操作系统申请资源(资源包括不限于内存,硬盘,cpu等)
所以,进程是操作系统进行分配的基本单位
cpu 核心数,如果有8个物理核心,那么就有16个逻辑核心
并行:同一时刻,两个核心,同时执行两个进程
并发:一个核心,先执行进程1,执行一会之后,在执行进程2,再执行一会之后,在执行进城....,只要切换速度足够快,看起来,进程123就是'同时'执行
进程之间的调度不一定是公平的,要有优先级
寄存器:典型的是保存当前进程执行的中间结果,包括进程运行到哪一条指令
4.内存分配--内存管理
操作系统给进程分配的内存,是以"虚拟地址空间"的方式进行分配的,每个进程访问的内存地址,都不是真实的物理内存地址
虚拟地址空间
如果进程1,出现野指针,拿着地址,发现页表上没有这个地址,无法翻译,就无法真正的修改物理内存,就不会对别的进程的内存数据造成干扰
一个进程无法直接干预另一个进程的内存内容-->进程的独立性
进程之间进行交互,相互配合
如果进程可以直接访问物理内存,其实没有隔离性,就不需要进程间通信.
进程通信,就是在隔离性的前提下,找一个公共的区域,让两个进程借助这个区域来完成数据交换
进程间通信,在隔离性的前提下,找到一个公共区域,让两个进程借助这个区域来完成数据交换.
操作系统提供的进程间通信具体实现方式,有很多种,管道,消息队列,共享内存,信号...