深入理解计算机系统第十二章学习笔记

应用级并发应用情况:访问慢速I/O设备;与人交互;通过推迟工作以降低延迟;服务多个网络客户端;在多核机器上进行并发计算。

三种基本构造并发程序的方法:进程、I/O多路复用、线程

1、基于进程的并发编程

例如构建一个并发服务器:

假设有1个服务器和2个客户端,服务器正在监听listenfd(3)上的连接请求,客户端1向服务端请求,服务端返回一个连接描述符connfd(4),同时服务器会生成一个子进程,子进程完全复制服务器描述符表,并关闭其监听符listenfd(3),服务器关闭已连接的描述符connfd(4)。客户端2请求时,同样派生一个子进程服务。

优劣:

父子进程间共享文件列表,但不共享用户地址空间,一个进程不可能覆盖另一个进程的虚拟内存。但缺点是独立的地址空间使得进程共享状态信息更困难,需要IPC机制(管道,消息队列,共享内存,),比较缓慢。

2、基于I/O多路复用的并发编程

适用场景:1)网络客户端发起连接请求 2)用户在键盘上键入命令行

基本思想:用select函数将进程挂起,只有在一个或多个I/O事件发生后,才将控制返回给应用程序。

3、基于线程的并发编程

线程就是运行在进程上下文中的逻辑流。线程包括线程ID、栈、栈指针、程序计数器、通用目的寄存器和条件码。

线程执行模式:先有一个主线程,主线程创建一个对等线程,两个线程并发执行。

多线程和多进程的区别:1、一个线程的上下文要比一个进程的上下文小很多,切换更快。2、线程不是按照严格的父子层次来组织的&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值