OS零碎知识整理(7)
1.进程通信的含义以及进程通信方式?
进程通信(Communication):主要指进程间传送数据。
可以划分为 (1)控制信息的传送(低级通信) (2)大批量数据传送(高级通信)
进程通信方式:
在单机系统中,进程间通信可分为4种形式
(1)主从式
(2)会话式
(3)消息或邮箱机制 (较为常用)
(4)共享存储区方式
2.消息缓冲通信的实现
消息缓冲机制:发送进程和接收进程采用消息缓冲机制进行数据传送时,发送进程在发送消息前,先在自己的内存空间设置一个发送区,把欲发送的消息填入其中,然后再用发送过程将其发送出去;接收进程则在接收消息之前,在自己的内存空间内设置相应的接收区,然后用接收过程接收信息。
图来自《计算机操作系统教程》张尧学
3.线程?
线程(Thread):基本的CPU执行单元,程序执行流的最小单元,是独立调度的基本单位。 !进程是拥有资源的基本单位。
(1)线程是一个轻型实体,不拥有系统资源(仅有一些些必不可少的资源)。
(2)不同的线程可以执行相同的程序,即同一个服务程序被不同的用户调用时,操作系统为它们创建不同的线程。
(3)同一进程中的各个线程共享该进程所拥有的资源。
(4)线程是处理机的独立调度单位。
(5)线程有三种基本状态,就绪态/阻塞态/运行态。
引入线程的目的:为了减少进程切换和创建开销,提高执行效率和节省资源。
为了更好地使多道程序并发执行,以提高资源利用率和系统吞吐量,增加并发程度。
使用线程的最大好处:有多个任务需要处理机处理时,减少处理机的切换时间;线程的创建和结束所需要的系统开销也比进程的创建和结束要小得多。
线程的分类
(1)用户级线程(User level threads)
管理过程全部由用户程序完成,操作系统内核只对进程进行管理。
为了对用户级线程进行管理,操作系统提供一个在用户空间执行的线程库。
在用户级线程系统中,操作系统内核的调度单位仍是进程。
用户级线程的调度算法只进行线程上下文切换而不进行处理机切换,即线程上下文的切换只在用户空间中实现,与内核无关,开销小。
(2)系统级线程/核心级线程(Kernel-level threads)
操作系统内核给应用程序提供相应的系统调用和应用程序接口API,以使得用户程序可以创建、执行、撤销线程。
核心级线程的上下文切换时间要大于用户级线程上下文切换时间,因为上下文切换涉及内核,需要从用户态转向内核态。
线程有其适用范围与不适用范围
不适用范围:Eg.很少做进程调度和切换的实时系统、个人数字助理系统中,由于任务的单一性,设置线程反而会占用更多的系统资源。
使用范围:Eg.多处理机系统和网络系统或分布式系统。