进程概论
进程=程序+执行
进程是人根据需要发明的。
单一操作员单一控制端(等待人输入命令)、批处理(等待IO操作)均存在效率低下问题,故将多个程序同时加载到计算机内,这些同时加载进内存的程序就是进程。
进程模型
从存储角度看,进程就是内存的某片空间。
从逻辑角度看,进程可以执行、也可以挂起。为了记住执行位置,每个进程有程序计数器。
进程是提供的一种抽象,目的是通过并发提高效率。
进程的物理基础是程序。
多个进程共享同一物理内存,需要内存管理。
多个进程共享同一CPU,需要进程调度。
进程的产生与消亡
进程产生事件:
系统初始化(神造人)
创建子进程(人生人)
用户请求创建新进程(试管婴儿)
进程消亡事件:
寿终:运行结束退出
自杀:因错误自行退出
他杀:被其它进程结束
处决:因异常被强行终结
进程的状态
典型情况有三大状态:执行、阻塞、就绪
具体实现:Windows有7个状态,Solaris有6个状态。
进程与地址空间
就是进程要用的所有资源。
进程管理
记录进程信息的结构:进程控制块(PCB)。PCB的具体实现各个操作系统不尽相同。
操作系统根据PCB管理进程。所有进程的PCB组成一个列表,保存在内核空间。
进程创建大体过程:
分配PCB
初始化寄存器(管理执行状态)
初始化页表(存储管理)
将程序代码读进内存
处理器设置为“用户态”
从程序起始位置开始执行
进程创建在不同操作系统里过程细节不尽相同。
进程管理的难点在兼顾效率和公平。
进程的缺陷(线程来弥补)
一个时间只能做一件事,如果被阻塞(等待输入),则进程运行停止。
现实情况下,进程在等待输入时,可以先做一些其它事情。或者进程内有多个事情可以同时进行。
———————————————————————————————————————————
欢迎关注我的微博:大雄_RE。专注软件逆向,分享最新的好文章、好工具,追踪行业大佬的研究成果。