(1)共享存储器系统。高级通信中的共享存储器系统是指进程之间通过对共享存储区的读 写来交换数据。共享存储器系统的另一种方式是利用共享的数据结构来进行进程通信,但这种 方式对共享数据结构的设置及对进程间的同步都必须由程序员来处理,且只能进行少量的数 据交换,因此属于低级通信方式 (2)消息传递系统。消息传递系统中,进程间的数据交换以格式化的消息(网络中称作报 文)为单位。根据实现方式,它又可分为直接通信和间接通信两类。在直接通信方式中,源进程 可直接将消息发送给目标进程,此类操作系统通常提供send( recelver, message)和 receive( sender, message)两条通信命令(原语)供用户使用。在间接通信方式中,进程间需要 通过某种中间实体(即信箱)来进行通信,发送进程将消息投入信箱,而接收进程则从信箱中疆 取得消息,因此,它不仅能实现实时通信,还能实现非实时通信。此时,操作系统应提供若干条 原语分别用于信箱的创建、撤消和消息的发送、接收等。 (3)管道通信。所谓″管道"是指连接i两个进程的一个打开的共享文件,发送进程以字符 流的形式将大量的信息写入管道,接收进程则在需要时从管道中读出数据。为了协调双方的通 信,管道通信机制必须对发送进程和接收进程在利用管道进行通信时实施同步和互斥,并只有 在确定了对方存在时方能进行通信 3.1.5线程 1.线程的基本概念 引入线程的目的是为了减少程序在并发执行时所付出的时空开销,从而使0S具有更好的 并发性。在多线程os中,将拥有资源的基本单位与调度和分派的基本单位分开处理。此时 个进程中含有一个或多个相对独立的线程,进程只是拥有资源的基本单位,每个线程都是一 个可执行的实体,即CPU调度和分派的基本单位是线程。 线程可以利用线程标识符和一组状态参数来描述,并具有下述属性 (1)轻型实体。线程除了在运行中必不可少的资源(如线程控制块、程序计数器、一组寄存 器值和堆栈)外,线程基本上不拥有系统的资源。 (2)独立调度和分派的基本单位。线程是能独立运行的基本单位,因而也是独立调度和分派 的基本单位,为此,线程中必须包含调度所必需的信息 (3)可并发执行。同一个进程中的多个线程,以及不同进程中的多个线程均可以并发地执 (4)共享进程资源。同一个进程中的各线程可以共享该进程所拥有的全部资源,如进程的地 址空间、己打开的文件、定时器和信号量机构等 由于线程基本不拥有资源,创建线程时不需另行分配资源,终止时也不需要进行资源的回 收,而切换时也大大减少了需保存和恢复的现场信息,因此,线程的创建、终止和切换都要比进 程迅速且开销小。另外,同一进程中的各线程可以共享该进程所占用的内存空间和已打开文件, 因此,线程间通信也非常简便和迅速 2.线程的控制 在多线程0S环境下,应用程序在启动时,0S将为它创建一个进程,同时为该进程创建第 个线程。以后在线程的运行过程中,它可根据需要利用线程创建函数(或系统调用)再去创建若 个线程。所以线程是由线程创建的,但线程间并不提供父子关系的支持 每个线程被创建后,便可与其他线程一起并发地运行。如同传统的进程一样,并发运行的 线程之间也存在着共享资源和相互合作的制约关系,致使线程在运行时也具有间断性。相应地, 线程在运行时,也具有执行、就绪、阻塞三种基本状态,并随着自身的运行和外界环境的变换 而不断地在三种状态之间转换 当线程完成了自己的工作后,它便可正常终止。线程的终止也可能是因为运行中出现错误(1)共享存储器系统。高级通信中的共享存储器系统是指进程之间通过对共享存储区的读 写来交换数据。共享存储器系统的另一种方式是利用共享的数据结构来进行进程通信,但这种 方式对共享数据结构的设置及对进程间的同步都必须由程序员来处理,且只能进行少量的数 据交换,因此属于低级通信方式。 (2)消息传递系统。消息传递系统中,进程间的数据交换以格式化的消息(网络中称作报 文)为单位。根据实现方式,它又可分为直接通信和间接通信两类。在直接通信方式中,源进程 可直接将消息 发送给目 标进程, 此类操作 系统通常 提供 send(receiver,message)和 receive(sender,message)两条通信命令(原语)供用户使用。在间接通信方式中,进程间需要 通过某种中间实体(即信箱)来进行通信,发送进程将消息投入信箱,而接收进程则从信箱中疆 取得消息,因此,它不仅能实现实时通信,还能实现非实时通信。此时,操作系统应提供若干条 原语分别用于信箱的创建、撤消和消息的发送、接收等。 (3)管道通信。所谓"管道"是指连接 i 两个进程的一个打开的共享文件,发送进程以字符 流的形式将大量的信息写入管道,接收进程则在需要时从管道中读出数据。为了协调双方的通 信,管道通信机制必须对发送进程和接收进程在利用管道进行通信时实施同步和互斥,并只有 在确定了对方存在时方能进行通信。 3.1.5 线程 1.线程的基本概念 引入线程的目的是为了减少程序在并发执行时所付出的时空开销,从而使 OS 具有更好的 并发性。在多线程 os 中,将拥有资源的基本单位与调度和分派的基本单位分开处理。此时, 一个进程中含有一个或多个相对独立的线程,进程只是拥有资源的基本单位,每个线程都是一 个可执行的实体,即 CPU 调度和分派的基本单位是线程。 线程可以利用线程标识符和一组状态参数来描述,并具有下述属性: (1)轻型实体。线程除了在运行中必不可少的资源(如线程控制块、程序计数器、一组寄存 器值和堆栈)外,线程基本上不拥有系统的资源。 (2)独立调度和分派的基本单位。线程是能独立运行的基本单位,因而也是独立调度和分派 的基本单位,为此,线程中必须包含调度所必需的信息。 (3)可并发执行。同一个进程中的多个线程,以及不同进程中的多个线程均可以并发地执 行。 (4)共享进程资源。同一个进程中的各线程可以共享该进程所拥有的全部资源,如进程的地 址空间、己打开的文件、定时器和信号量机构等。 由于线程基本不拥有资源,创建线程时不需另行分配资源,终止时也不需要进行资源的回 收,而切换时也大大减少了需保存和恢复的现场信息,因此,线程的创建、终止和切换都要比进 程迅速且开销小。另外,同一进程中的各线程可以共享该进程所占用的内存空间和已打开文件, 因此,线程间通信也非常简便和迅速。 2.线程的控制 在多线程 OS 环境下,应用程序在启动时,OS 将为它创建一个进程,同时为该进程创建第一 个线程。以后在线程的运行过程中,它可根据需要利用线程创建函数(或系统调用)再去创建若 干个线程。所以线程是由线程创建的,但线程间并不提供父子关系的支持。 每个线程被创建后,便可与其他线程一起并发地运行。如同传统的进程一样,并发运行的 线程之间也存在着共享资源和相互合作的制约关系,致使线程在运行时也具有间断性。相应地, 线程在运行时,也具有执行、就绪、阻塞三种基本状态,并随着自身的运行和外界环境的变换 而不断地在三种状态之间转换。 当线程完成了自己的工作后,它便可正常终止。线程的终止也可能是因为运行中出现错误