抽象的操作系统(八) --- 进程

来源:互联网 发布:java开源流媒体服务器 编辑:程序博客网 时间:2024/06/05 12:01
      进程是程序的一个运行实体,它有自己的运行时堆栈和运行时的数据值,同时也作为操作系统调度的基本单位。每个进程有自己的PCB,即进程控制块。
      1). 进程的状态。作为被调度的对象,进程在不同的时期有不同的状态,诸如就绪,挂起,恢复,运行,退出。这样, 操作系统就有完成多任务这样的能力了,比如可以后台挂QQ前台手机浏览器上网,也可以来电话的时候浏览器进入进入暂停状态。不论是类似于BREW的协作式多任务,还是Android这样的真正的多进程环境,都提供了多任务机制,而大家在不同的平台上,也要能根据它们的调度机制,来进行不同的处理。
      2). 进程的装载。程序文件是怎么被装入执行的呢?从软件角度上讲,有两个问题:一是平台如何调用程序里的函数,二则是程序如何调用平台的函数。如果又将程序编译成可以动态加载的,那么只要解决了上述两个问题,那么程序就能够被加载和运行了。这个也是很多中间件平台(比如MTK上的中间件, BREW的MOD,浏览器的插件)加载执行的原理。
      3). 进程的互斥与协作。多任务的时候,对于临界资源的竞争,造成了进程的互斥;而进程对彼此之间运行结果的需要,则又造成了它们之间的协作。操作系统一般会提供类似于锁,信号量这样的原子接口,来让程序编写人员对多任务进行合理的调度。但是大多数情况下,进程之间是并发(多核则是并行)执行的。
      4). 进程与线程。线程是更小的调度单位,它与进程不同的是:同一进程内部的所有线程共享数据空间,只是指令的执行可以向进程一样可以并发执行, 并且线程切换开销更小,它在很多场合起着非常重要的作用。
原创粉丝点击