进程的简单介绍

来源:互联网 发布:raysource mac版下载 编辑:程序博客网 时间:2024/05/16 15:28

进程概念

进程是执行中的程序,进程通常包括进程堆栈段(临时数据,例如函数参数,返回地址和局部变量)和数据段(包括全局变量)。进程还可能包括堆,是在进程运行时期动态分配的内存。

程序不是进程,程序只是被动实体,程序只是存储在磁盘上的一系列指令的集合,进程是活动实体,是运行在CPU上的程序。

进程状态

创建:进程正在被创建

就绪:进程等待分配CPU

运行:指令正在被执行

阻塞:进程等待某个事件的发生

退出:进程执行完毕


进程控制块:包含许多与一个进程相关的信息

进程状态:参见上述

程序计数器:计数器表示进程下一个要执行的指令

CPU寄存器:累加器,索引寄存器,堆栈指针和其他信息寄存器,这些信息都要保存,以便进程恢复后继续执行

CPU调度信息:包括进程优先级,调度队列的指针和其他调度参数

内存管理信息

I/O状态信息:包括分配给进程的I/O设备列表,打开的文件列表

进程调度

进程进入系统时,会被分配到作业队列,该队列包括系统中的所有进程。驻留在内存中的就绪的等待运行的进程保存在就绪队列中。

进程被分配到CPU运行时会发生以下的某个事件

进程发出I/O请求,并被放到I/O队列中

进程创建一个子进程,并等待子进程执行完毕

进程会发生中断而被强制释放到CPU,并放回就绪队列中

调度程序:

进程被放到大容量存储设备的缓冲池中,长期调度程序从该池中选择进程并装入设备以准备执行。

短期调度程序:从准备执行的进程中选择进程执行

两种调度程序的区别在与执行的频率,长期调度程序一般有一到两分钟的间隔,而短期调度程序必须频繁的为CPU选择进程准备执行,一般是毫秒级

有的操作系统(如分时系统)还包括中期调度程序,将放置在内存中的进程移除到缓冲池中。

上下文切换:

将CPU切换到另一个进程需要保存当前进程的状态(一般用PCB表示)并恢复到另一个进程的状态,上下文切换需要额外开销,所以不能频繁执行,

进程创建

进程创建子进程时

子进程一般从操作系统或父进程中获得资源

父进程和子进程并发执行

子进程执行完毕后,父进程方能执行

子进程时父进程的复制品(拥有同样的数据段和代码段)

子进程装入到另一个进程

进程间通信

如果一个进程不能影响其他进程或者被其他进程影响,则该进程是独立的,否则该进程是协作的

进程需要协作的理由

信息共享:多个用户对同样的数据感兴趣

提高运算速度:一个特定任务分成许多子任务以并发执行

模块化

协作进程需要一种进程间通信方式:共享内存,消息传递

共享内存是建立起一块用于两个进程间共享的内存区域,两个进程对该区域中的数据进行访问时,不需要来自内核的访问,就像常规的内存访问一样

消息传递易于实现,适用于较小数量的数据,共享内存不易于实现,但适用于大量数据

 

0 0
原创粉丝点击