1.什么是进程
首先我们来理解一组概念 程序,进程
程序:是静态的,是放在磁盘上的可执行文件,类似QQ.exe.
进程:是动态的,是程序的一次过程.,也可以理解成为"正在运行的程序".
同一个程序多次执行会对应多个进程
2.进程的特点
- 独立性
一个进程所执行的程序无法直接访问另一个进程所执行的内存区域.
一个进程的失败也不会影响其他进程的运行. - 动态性
进程与程序的区别在于,程序只是静态的指令集合,而进程是一个正在系统中的活动的指令集合,具有自己的生命周期和各种不同的状态. - 并发性
多个进程可以在单个处理器CPU上执行,多个进程之间不会互相影响.
3.进程的结构
进程由程序、数据和进程控制块三部分组成
在这里我们主要理解一下进程控制块(Processing Control Block) PCB,进程控制块是系统管理进程设置的一个专门的数据结构,它是对进程的描述.
PCB在进程创建状态的时候创建,在进程终止的时候销毁.
理解了PCB是什么之后,我们再来看一看PCB中有哪一些信息:
1.进程的PID,它是进程的唯一身份标识.通过这一标识,系统可以区分出不同的进程.
2.内存指针,用来说明当前进程使用的内存是哪一部分,并且在进程运行的时候使用了哪些内存上的资源.
3.文件描述符表,用来表示在进程运行的时候,使用了硬盘上的资源.
除了这些属性,还有一些描述和CPU资源相关的属性,辅助进行进程的调度
在这里我们只说一些重要的属性:
a.进程状态:(三态模型)
运行状态: 进程占有处理器正在运行.
就绪状态: 该进程具备运行条件,随时可以上CPU执行
阻塞状态: 又可以叫睡眠状态,该进程不具备运行条件,正在等待某个事件的完成.
b.进程优先级:
每个进程都有相应的优先级,优先级决定它何时运行和接收多少 CPU 时间
c.进程上下文:
上下文就是描述当前进程执行到哪里,相当于一个"存档记录",进程在离开CPU的时候就要把当前运行的结果存档,下次执行接着上次的结果继续执行.
进程记账信息:
统计每个进程在CPU上执行了多久,可以作为调度的参考信息
还有一个很重要的一组概念我们需要区分一下[并发和并行]:
并行:同一时刻,两个核心同时执行两个两个进程,此时两个进程是并行执行.
并发:一个核心,先执行进程1,执行一会儿,再去执行进程2,这样交替执行就是并发执行
4.进程的内存管理
进程需要使用一些系统资源,其中内存资源就是一个关键的资源.为了让各个进程之间不要回想打扰,操作系统就引用了**“虚拟地址空间”**.
这样使每个进程都只能访问到自己的地址空间,互相之间不会有影响.
以上这是我目前对进程的理解,如有错误请指出.