进程是一个执行中的程序。

当一个进程执行时,它会改变状态。

进程的状态由该进程的当前活动定义。每个进程可能处于以下状态之一:New、Ready、Running、Waiting或Terminated。每个进程在操作系统中由其自己的进程控制块(PCB)来表示。

一个进程,当它没有执行时,被放置在一些等待队列中。在操作系统中有两个主要的队列:I/O请求队列和就绪队列。就绪队列包含已准备好执行的所有进程,并等待CPU。每个进程由一个PCB来表示。

操作系统必须从各种调度队列中选择进程。长期(作业)调度是用来选择可以为CPU而竞争的进程的。通常,长期调度受到资源分配因素的严重影响,特别是内存管理。短期(CPU)调度是从就绪队列中选择一个进程来执行。

操作系统必须为父进程提供一个机制来创建新的子进程。父进程可以等子进程终止后再继续,或者父子进程可以同时执行。允许并发执行有几个原因:

  • 信息共享、
  • 计算加速、
  • 模块化
  • 便利性

在操作系统中执行的进程可以是独立的进程,也可以是协作进程。协作过程需要一个进程间通信机制来相互通信。总之,通信是通过两种方案:

  • 共享内存
  • 消息传递。

共享内存方法需要通信进程来共享一些变量。这些进程将通过使用这些共享变量来交换信息。在共享内存系统中,提供通信的责任由应用程序的程序员负责;操作系统只需要提供共享内存。

消息传递方法允许进程交换消息。提供通信的责任可能与操作系统本身有关。

这两个方案不是互斥的,可以同时在一个操作系统中使用。

客户机-服务器系统中的通信可以使用

  • 套接字
  • 远程过程调用(RPC)
  • 管道。

一个套接字被定义为通信端点。一对应用程序之间的连接由一对套接字组成,分别在通信信道的两端。

RPC是分布式通信的另一种形式。当进程(或线程)调用远程应用程序上的过程时,就会发生RPC。

管道提供了一种相对简单的方法来相互通信。普通管道只允许父进程和子进程之间的通信,而具名管道允许不相关的进程通信。

RPC与RMI的主要区别是RPC传递给远程过程的数据是按照普通数据结构形式的,而RMI允许把对象传递给远程方法。

results matching ""

    No results matching ""