(PS:个人课下整理的操作系统笔记,OneNote直接拷贝过来的,图片看不了就将就一下,配合张伟老师的PPT看效果更好)
一、进程间通信(Interprocess communication,IPC)
1.概念:提供一种机制,以允许进程不必通过共享地址空间来同步和通信其动作
2.消息传递系统(Message Passing system,MPS)允许进程间通信和同步而不需要共享数据
3.IPC工具拥有的操作:
- 发送消息(消息可以是定长或者变长)
- 接收消息
4.消息传递系统的传递消息方式:
- 直接通信——必须明确的命名发送者和接收者
- 原语:
- Send (p, message)发送消息到进程P
- Receive (Q, message)接收来自进程Q的消息
- 属性:只与两个进程有关,一对进程自动建立一条链路,对称寻址(发送和接受进程必须命名对方)
- 变形:非对称寻址(发送者命名接收者,接收者不命名发送者)原语定义为send(p,message),receive(id,message),变量id设置成相应的进程名
- 缺点:改变一个进程名,需要找到并改变其他所有包含这个进程名的引用
- 原语:
- 间接(indirect)通信——消息通过邮箱(mailbox)或端口(port)来接收,每个邮箱标识符唯一
- 原语:
- Send (A, message)发送一个消息到邮箱A
- Receive (A, message)接收来自邮箱A的消息
- 属性:只要一对进程中两个成员共享一个邮箱即可建立链路,一条线路(对应一个邮箱)可以有两个或多个进程相关联,两个进程间也可以有多条线路(多对多)
- 原语:
5.高级通信机制
- 共享存储器系统share memory(有限缓存:生产者消费者问题)
- 管道通信系统pipe(共享文件)
- 消息传递系统(最好提供给IPC):直接通信、间接通信
6.阻塞(同步),非阻塞(异步)知道
二、线程(Thread):为了提高系统程序并发执行的程度,进一步提高系统吞吐量,有时也叫轻量级进程LWP
1.什么是线程:
线程是CPU使用的基本单元,它由线程ID,程序计数器、寄存器、栈组成,与同一进程的其他线程共享资源(代码段、数据段和其他系统资源)
2.从调度、并发性、拥有资源、系统开销,说明进程和线程的区别
3.多线程编程的优点:
- Responsiveness响应
- Resource Sharing资源共享
- Economy经济
- Utilization of MP(Multi Processor) Architectures多处理器结构的利用
4.用户级线程和内核级线程
- User threads(能快速创建和管理,可以在不支持线程的操作系统上实现。允许用户自己定制调度算法)
- Provided by a thread library at the user level.
- All thread operations are completed in user space, which are unknown in kernel space.
- POSIX Pthreads、Mach C-threads、Solaris threads
- Kernel threads(内核级通常慢于用户级线程)
- Provided by the OS directly.
- All thread operations are performed by OS.
- Windows 95/98/NT/2000、Solaris、Tru64 UNIX、BeOS、Linux
5.多线程模式:(了解)
- 多对一:早期模型,基本不用
- 多对多
- 一对一