【操作系统复习】ch不知道多少 进程 & 线程

这里写目录标题

进程通信

背景:进程只能访问自己的内存空间,不允许访问其余地址空间。

  • 共享存储:为两个进程开辟一个共享存储区,两个进程可以访问相同的地址空间。可以通过添加页表项来实现。但是访问相同的地址空间可能会有访问冲突,需要PV操作等来实现互斥访问。按照访问的形式可以分为高级通信方式低级通信方式
    高级通信方式:对于共享区内部数据访问由双方进程自行控制
    低级通信方式:对于共享区访问的结构由操作系统决定,比如必须按照int数组访问等。
  • 消息传递:进程之间的数据以格式化消息进行交换。
    直接通信方式:发送进程指明接收进程。需要使用发送原语与接收原语。
    间接通信方式:不指明接受进程。需要构建一个信箱,指明放入某个信箱即可。
  • 管道通信:管道通信使用的是特殊的管道文件。本质上为大小固定的内存缓冲区。管道只能FIFO,且只能单向传输。某个时间段只能A放B收或者B放A收。只能半双工。

线程

引入目的:一个进程可能需要同时做很多事情,需要加入线程来提高并发度。

引入线程之后的变化

  • 线程为CPU调度单位。但进程依旧是资源分配单位。
  • 提高并发度
  • 进程之间的切换需要切换进程的运行环境,但如果是同一进程下的不同线程,这两个线程所使用的系统资源相同,切换开销小

多线程模型

  • 用户级线程
    由应用程序实现多线程。线程的管理由应用程序管理,线程切换不需要CPU变态,内核程序不知道线程的存在。开销小效率高,但一个线程阻塞,其余线程全阻塞,并发度不高。
  • 内核级线程
    操作系统可见线程。管理工作由操作系统完成,线程切换需要将用户态转变为内核态。并发度高,多处理机上并行,但开销较大(因为需要变态)。

三种模型:

  • 一对一模型:一个内核级线程对应一个用户级线程
  • 多对一模型:一个内核级线程对应多个用户级线程,相当于用户级线程
  • 多对多线程:n个用户级线程映射到m个内核级线程上(n>=m)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值