进程管理

来源:互联网 发布:舰c图鉴软件 编辑:程序博客网 时间:2024/05/29 17:10

        进程可以看作是正在执行的程序。进程需要一定的资源(如CPU时间、内存、文件和I/O设备)来完成其任务。这些资源可以在创建进程或执行进程时被分配。

        进程是大多数系统的工作单元。系统有一组进程组成:操作系统进程执行系统代码,用户进程执行用户代码。所有这些进程可以并发执行。

        虽然从传统意义上讲,进程运行时只包含一个单一的控制线程,但是目前大多数现代操作系统都支持多线程进程。

        操作系统负责对进程和线程的管理:用户和系统进程的创建与删除、进程调度、进程同步机制、通信和进程死锁处理机制。

        早期的计算机系统只允许一次执行一个程序。这种程序对系统有完全的控制,能访问所有的系统资源。现代计算机系统允许将多个程序调入内存并发执行。这一要求对各种程序提供更严格的控制和更好的划分。这一要求产生了进程的概念,即执行中的程序。进程是现代分时系统的工作单元。

        操作系统越复杂,就越能为用户做更多的事情。虽然操作系统的主要目标是执行用户程序,但是也需要顾及内核之外的各种系统任务。因此,系统由一组进程组成:操作系统进程执行系统代码,而用户进程执行用户代码。通过CPU多路复用,所有进程可以并发执行。通过进程之间的切换,操作系统可以使计算机更为高效。

 一、进程概念

        正如前述,进程是正在执行中的程序,这是一种非正式的说法。进程不只是程序代码,程序代码有时称为文本(text)段。进程还包括当前活动,这些活动通过程序计数器的值和CPU寄存器的内容来表示。另外,进程通常还包括进程栈(stack)——包含临时数据(如函数参数、返回地址和局部变量)和数据段(包括全局变量)。进程还可能包括堆(heap),这是在进程运行期间动态分配的内存。内存中进程结构如下图所示:

图:内存中的进程结构

        这里强调:一个程序本身不是一个进程。一个程序只是一个被动的实体(静态实体),如存储在磁盘上包含一组指令的文件(常被称为可执行文件),而进程是活动实体,它包含一个指向下一条要执行的指令的程序计数器和相关资源集合。当一个可执行文件被装入内存时,一个程序才能成为进程。装载可执行文件通常有两种方法,即双击可执行文件的图标或在命令行中输入该文件的文件名(如prog.exe或a.out)。

        虽然两个进程可以与同一程序相关,但是它们被当成两个独立的执行序列。例如,多个用户可运行电子邮件的不同副本,或者同一用户能调用多个Web浏览器程序的副本。这些都是独立的进程,虽然数据段、堆、栈段却不同。一个进程在执行时产生许多进程是很常见的。

 

二、进程状态

        一个进程在执行时它的状态会改变。进程的状态在某种程度上是由当前状态定义的。一个进程可能处于下列状态之一:

        a、创建(new):进程正在被创建

        b、运行(running):指令被执行

        c、等待(waiting):进程正在等待某些事件的发生(如I/O完成或接收到一个信号)

        d、就绪(ready):进程等待分配给处理器

        e、终止(terminated):进程已经完成执行

        这些状态的名字是随意的,且随着不同操作系统而变化,但是这些状态可以出现在所有的系统上。有些操作系统更加详细地描述进程状态。必须认识到一次只有一个进程可以在处理器上运行,但是多个进程可以处于就绪或等待状态。与这些状态相对应的状态图如下图所示:

  图:进程状态图   

 三、进程控制块

        每个进程在操作系统内用进程控制块(process control block,PCB)来表示。下图给出了一个PCB的例子,它包含许多与一个特定进程相关的信息:

图:进程控制块

 

       a、进程状态:状态可包括创建、就绪、运行、等待、停止等。

       b、程序计数器:计数器表示进程要执行的下一个指令的地址。

       c、CPU寄存器:根据计算机体系结构的不同,寄存器的类型和数目也不同。他们包括累加器、变址寄存器、堆栈寄存器和通用寄存器和其他条件代码信息  寄存器。与程序计数器一起,这些状态信息在出现中断时也需要保存,以便进程以后能正确地继续执行(如下图所示)。                           

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

        e、内存管理信息:这些信息包括基址和界限寄存器的值、页表和段表(取决于操作系统使用的内存系统)

        f、统计信息:这些信息包括CPU时间、实际使用时间、时间界限、统计数据、作业或进程数量等。

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

        简而言之,PCB简单地作为这些信息的仓库,这些信息在进程与进程之间是不同的。

 

 

图:CPU在进程间切换

四、线程

        迄今为止所讨论的进程模型暗示:一个进程是一个只能执行单个执行线程的程序。例如,如果一个进程运行一个字处理器程序,那么只能执行单个线程指令。这种单一控制线程使得进程一次只能执行一个任务。例如,用户不能在同一进程内,同时输入自负和进行拼写检查。许多现代操作系统扩展了进程概念以支持一次能执行多个线程。