操作系统——进程通信、线程

进程通信是指进程之间的信息交换。进程的互斥和同步是一种低级的进程通信机制,效率低、所能够传递的信息非常有限。

1、进程通信机制:

(1)共享存储器系统

通过共享数据结构或者共享存储区进行进程之间的通信。

(a)通过共享数据结构。

    比如生产者-消费者问题中的有界的缓冲区。由于数据结构的设置以及同步的处理都是人工的,强度大,是一种比较低级的通信机制。

(b)通过共享存储区。

    在处理器中划分一块共享的存储区域,所有共享该区域的进程通过对共享区域的数据进行读写来进行通信,是一种能够传输较大数量的通行方式。

(2)消息传递系统

各需要通信的进程通过格式化的消息进行信息交换。这是最重要的一种进程通信方式。

(a)直接通信方式。

利用操作系统的原语进行通信,发送方直接指定消息的接收方;消息接收方也指定消息的来源。

(b)间接通信方式。

需要借助作为共享数据结构的实体进行通信。该实体一般被称为信箱。

消息传递系统中的主要问题:通信链路、消息格式、进程同步方式。通信链路的建立可以利用系统的“建立链接”原语建立通信链路并显式拆除,也可以利用系统的“发送原语”由系统自动建立通信链路。对于单机系统消息格式则是简单固定,而对于复杂系统的进程通信(比如网络)则可能要将消息分为消息头和消息正文等。进程同步方式主要有3种:发送进程和接受进程都阻塞(两者之间无缓冲区)、发送进程不阻塞接受进程   阻塞(打印进程一直阻塞直到有打印请求)、发送进程和接受进程都不阻塞(两者之间带有缓冲区)。

(3)管道通信系统

    管道通信主要借助于管道文件。管道文件是用来连接一个输入进程和输出进程并实现他们输入的一个共享文件。利用管道进行通信时需要注意管道文件的互斥、对管道文件操作的同步以及输入和输出进程必须同时存在。

(4)Client-Server system

2、消息传递通信的实现方法

(1)直接通信方式

    发送进程利用OS所提供的发送命令(原语),直接把消息发送给目标进程。此时,发送进程和接收进程都以显式方式提供对方的标识符。通常利用系统通信命令(原语):
 Send(Receiver, message);
 Receive(Sender, message);

(2)间接通信方式

    基于共享数据结构的实体用来暂存发送给目标进程的消息;接收进程则从该实体中,取出对方发送给自己的消息。通常把这种实体称为信箱。
    消息在信箱中可以安全地保存,只允许核准的目标用户随时读取。既可实时通信,又可非实时通信。

3.消息传递系统的实现

①通信链路的建立
②消息格式
③同步方式

4.消息缓冲队列通信机制

美国Hansan提出,在RC4 4000系统上实现。
1.不需要管理链路
2.定义简单数据结构(消息格式)
3.实现发送和接收的操作原语


认识线程

    引入

    多道程序管理:追求效率的目的下实现“并发”
    并发性与效率的讨论(利用进程实现的多道程序中):
    进程是一个可拥有资源的独立单位;是一个可独立调度和分配资源的基本单位

    属性

    多线程OS中,一个进程包括多个线程,每个线程都是利用CPU的基本单位。
    轻型实体:只需一点必不可少的、能保证独立运行的资源。(TCB)
    独立调度和分派的基本单位:调度切换迅速且开销小。
    可并发执行
    共享进程资源:同进程中的线程可共享相同的进程地址空间、已打开文件、信号量机构等。

    线程的信息

    tcb管理的信息:标识符、运行状态、优先级、寄存器状态、堆栈、专有存储器、信号屏蔽等

    线程的管理

1.互斥锁
    适用于高频度使用的关键共享数据和程序段(unlock和lock两个锁操作原语)

2.条件变量
    与互斥锁一起使用,锁能保证互斥进入临界区,利用条件变量使线程阻塞
    注意不满足条件时,wait条件变量:
    释放互斥锁,进程阻塞在条件变量指向队列中,被唤醒后要重新再设互斥锁

3.信号量
    私用信号量:用于同进程的线程同步
    公用信号量:用于不同进程间

你可能感兴趣的:(操作系统——进程通信、线程)