进程
来源:互联网 发布:淘宝链接里面的scm 编辑:程序博客网 时间:2024/06/11 08:34
进程
异常是允许操作系统内核提供进程概念的基本构造块,进程是计算机科学中最深刻、最成功的概念之一。
进程提供给应用程序的关键抽象:
- 一个独立的逻辑控制流,它提供一个假象,好像我们的程序独占的使用处理器。
- 一个私有的地址空间,它提供一个假象,好像我们的程序独占的使用内存系统。
逻辑控制流
进程可以向每个程序提供一个假象,好像它在独占使用处理器。如果想用调试器单步执行程序,我们将会看到一系列的程序计数器(PC)的值,这些值唯一地对应于包含在程序的可执行目标文件中的指令,或是包含在运行时动态连接到程序的共享对象中的指令。
并发流
一个逻辑流的执行在时间上与另一个流重叠,称为并发流。
多个流并发地执行的一般现象被称为并发。
一个进程和其他进程轮流运行的概念称为多任务。
一个进程执行它的控制流的一部分的每一时间段叫做时间片。
注意:并发流的思想与流运行的处理器核数或者计算机数无关。
私有地址空间
进程为每个程序提供它私有地址空间。一般而言,和这个空间中某个地址相关联的那个内存字节是不能被其他进程读或者写的。
用户模式和内核模式
处理器提供了一种机制:利用一个控制寄存器中的一个模式位来限制一个应用可以执行的指令以及它可以访问的地址空间范围。
- 没有设置模式位时,进程运行在用户模式中。用户模式下无法执行特权指令。(eg:停止处理器、改变模式位、发起I/O操作)不允用户模式中的进程引用地址空间中内核区的代码和数据。反之,用户可以通过系统调用接口间接的访问内核代码和数据。
- 设置了模式位时,进程运行在内核模式中,可以执行任何指令,访问系统任何内存位置。
Linux提供了一种机制, /proc文件系统,它允许用户模式进程访问内核数据结构的内容。/proc文件系统将许多内核数据结构的内容输出为一个用户程序可以读取的文本文件的层次结构。2.6版本的Linux内核引入了/sys文件系统,它输出关于系统总线和设备的额外低层信息。
上下文切换
内核为每个进程维持了一个上下文。上下文就是内核重新启动一个被抢占的进程所需的状态。它由一些对象的值组成,这些对象包括通用目的寄存器、浮点寄存器、程序计数器、用户栈、状态寄存器、内核栈和各种内核数据结构,比如描述地址空间的页表,包含有关进程信息的进程表,以及包含进程已打开文件的信息的文件表。
在进程执行的某些时刻,内核可以决定抢占当前进程,并重新开始一个先前被抢占了的进程,这种决策叫做调度。
内核调度了一个新的进程运行后,它就抢占当前进程,并使用一种称为上下文交换的机制来将控制转移到新的进程。上下文切换,保存当前进程的上下文,回复某个先前被抢占的进程被保存的上下文,将控制传递给这个新恢复的进程。
- 当内核代表用户执行系统调用时,可能会发生上下文切换。
- 中断也可能引发上下文切换。