Too Much - CSAPP C12

正如fucking real world,总有貌似搞不完的工作,浩瀚无际的信息向我们迎面而来。而我们的脑袋只有一个,无法多去处理那些纷繁的事务,需要进行规划和执行,可以像上班一样一天只做一件事,也可以像上学一样一天切换多节课。
计算机面临的问题与我们相同,只有一个处理器核心(多核大多也被抽象成单核来利于编程),所以前人们就需要用并行和同步这两个概念去应对处理现实的那些缤繁的问题
并行对于我们并不直观。我们大脑是一个非常精妙的系统,所采取的并行策略是一明一暗两条线,我们日常感知的明线是线性的,于是就和计算机中并行的概念冲突了,所以概念并不直观。时间这个概念亦是,所以对于问题我们先要在脑中抽象出这样一个这么一些概念,然后去映射到编程当中,这个过程由于反直觉,会产生一些常见的问题,例如竞争条件、死锁和活锁。
我们也并不孤独,处理并发思路构建与前人的智慧之上。根据系统层级,和实现方式,有三大类

  • 基于进程
    内核自动管理多个逻辑流
    每个进程有其私有的地址空间(也就是说进程切换的时候需要保存和载入数据)
  • 基于事件
    由程序员手动控制多个逻辑流
    所有的逻辑流共享同一个地址空间
    这个技术称为 I/O multiplexing
  • 基于线程
    内核自动管理多个逻辑流
    每个线程共享地址空间
    属于基于进程和基于事件的混合体

用强大的逻辑和抽象把并行能够执行之后还有一个非常重要的问题,那就是数据的同步,并行任务逻辑往往会交织,所以需要一些方法去保证并行中数据的同步,主要有

  • 共享变量
  • 临界区 Critical Section
  • 信号量

这个领域也有着两个经典的模版问题

  • 生产者-消费者问题
  • 读者-写者问题

给这个纷杂的世界一些假设和先验,世界的运行就变得有逻辑可循

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 基础知识 1.1、 基本概念、 功能 冯诺伊曼体系结构1、计算机处理的数据和指令一律用二进制数表示2、顺序执...
    yunpiao阅读 5,403评论 1 22
  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 4,165评论 0 23
  • 六点前自然醒,想着今天该干什么?然后决定今天该穿什么风格的衣服、撸什么样的妆! 推开玻璃门,走到阳台看看我的那些花...
    拾壹依阅读 516评论 2 4
  • TokenEndPoint 获取令牌过程中, 有个这样的步骤: TokenGranter, 字面上的理解: 令牌授...
    ninetxie阅读 15,347评论 1 11
  • 其实我最想说也是我最需要的就是戒骄戒躁,学会谦虚,继而谨慎 急功近利,不可一世,不是好词 我认为不仅仅在工作当中,...
    卢延阳阅读 178评论 0 1