0%

b计算机基础/c_计算机系统/b_linux系统/补充/资源(缓存IO变量代码段)的获取、放入安全

资源(缓存/IO/变量/代码段)的获取、放入安全

#b计算机基础/c_计算机系统/b_linux系统/补充
2020年4月27日 下午11:35

注:这篇是从安全的角度去考虑的,另外还有从效率的角度去思考
效率这个这个角度我认为是一个tradeoff,计算机软件体系是一个从底层开始层层抽象发展的,这个的目的是为了上下层抽象的过程中简化编程的思维,但是对于数据的处理、拷贝、交互来说,应该是扁平的,这中间就会有矛盾,面对这样的矛盾,我们处理的方法就是让数据的交互来说尽可能的放在这个体系的底层,也就是内核层去完成,尽量不要用到用户态,这个就减少了没有实际效率意义的内核态与用户态之间的数据拷贝,一个专业的名次是0拷贝。

多线程核心知识的两个层面去理解:

  1. 本质讨论的都是资源的获取和放入
  2. 【资源本身】资源的两种保护形式-主动、被动:
  3. 【获取资源方】操作对象面对锁、等待、空之后的做法种类:
  4. 上面三点说明了如何处理,如果不处理会出现什么情况:
    • 为什么我们再多线程下需要使用锁?
      • 脏数据

我们可以根据场景进行自定义设计的地方:

  • 选择合适的锁的类型
    • 锁就是字面意思:锁住大门,不让你进。他有酸甜苦辣味,看你的需要选取。不同的锁的类型,体现你对资源的管理方式。
  • 从线程的角度,你希望线程遇到阻塞之后,如何行事呢?
    • 阻塞待唤醒、忙轮询、一遍轮询、不轮询直接获得操作对象等