进程

120 阅读2分钟

进程:

执行中程序的实例 进程提供给应用程序的关键抽象:

  • 一个独立的逻辑控制流,使我们觉得程序独占cpu
  • 一个私有的地址空间,使我们觉得程序独占存储器系统

逻辑控制流

见图: 进程A与进程B并发,进程C与进程B独立,进程A运行一会儿被抢占去运行B,B运行结束进入C,然后回到A 一个简单例子是A会读取存储器数据,存储器数据读取需要时间,这段时间cpu转去运行B和C。 这种轮转执行的概念为多任务。一个进程执行他的控制流的一部分的每一时间段叫做时间片,多任务也叫时间分片。

私有地址空间

用户模式和内核模式

cpu使用控制寄存器中的一个方式位来描述当前进程所处模式。方式位设置时进程运行在内核模式中,否则运行在用户模式中。 Linux的/proc文件系统允许用户模式进程访问内核数据结构的内容。文件系统将内核数据结构输出为用户可读的ASCII文件层次结构,便于用户查看系统属性。

上下文切换

操作系统内核利用上下文切换来实现多任务。

内核为每一个进程维护一个上下文,在进程执行的某些时刻,内核可以决定抢占当前进程,并重新开始一个先前被抢占的进程。这叫做调度,由内核中称为调度器的代码处理的。上下文切换保存当前进程上下文,恢复某个先前被抢占进程上下文,将控制传递给这个新恢复的进程。

所有进程都由内核代表运行,不论是运行在内核态还是用户态。系统调用被阻塞时内核可以调度一个其他进程来运行,等到阻塞结束收到信号(中断),再返回。 系统也会有产生周期性定时器中断,用于控制每一个进程的运行时长,使大部分进程并发执行。