程序员的自我修养学习笔记 第一章

序言

market/money oriented programming才是唯一的编程范式。

主要总结知识点,不做复制粘贴。

第一章 

1.1 

这章的问题留到总结完后再来回答#TODO

1.2
  • cpu位数、操作系统位数以及总线位数的区别:参考

cpu位数:cpu寄存器的大小=cpu并行处理的位宽=cpu指令集的位数;

操作系统的位数:操作系统所支持的cpu指令集位数<=cpu位数(cpu侧的向上兼容),一般操作系统多少位,虚拟地址就有多少位。

总线位数:地址总线、控制总线、数据总线位数。独立于cpu位数以及操作系统位数;

  • 计算机架构概述:cpu+内存+IO设备;北桥连接高速设备,如cpu、内存、gpu等;南桥连接低速设备,如鼠标等。
  • cpu发展简史:symmetrical multi-processing -> multi-processor
1.3
  • 软件:系统软件和应用程序。系统软件:平台性(操作系统、运行时库、驱动)以及开发工具(编译器、链接器)
  • 计算机软件体系结构
1.4
  • 操作系统提供的抽象:IO设备抽象为文件(UNIX系统,winodws系统不同),IO设备以及内存抽象为虚拟内存,IO设备、内存、cpu抽象为进程。
  • 操作系统任务调度:多道->分时系统->多任务系统(优先级)(讲的比较粗略)
  • 操作系统的驱动程序:由硬件厂商开发人员根据操作系统给出的接口标准编写,负责实现硬件操作。
1.5
  • 虚拟内存解决的问题:1,隔离问题;2,效率问题:分页;3,地址一致性
1.6
  • 线程组成:线程ID,PC(也是寄存器),寄存器,堆栈,thread local storage
  • 为什么用线程
    • 提高时间利用率;
    • 面向有并发需求的任务,如网络请求处理与接收
    • 利用多核能力
    • 较多进程可以更方便的进行线程间通信
  • 线程优先级:IO密集线程优先级一般高于CPU密集型线程
  • fork快的原因:copy-on-write
  • 可重入的条件:
    • 不依赖于(局部)静态或者非const全局变量以及对应的指针
    • 不调用不可重入函数
  • 由于编译器的寄存器“缓存”、指令重排以及cpu的指令乱序优化,可能造成线程安全的问题。为了解决上述问题,可以采用volatile声明使得对被生命的对象,编译器不进行寄存器缓存以及对操作次对象进行指令重排;采用barrier函数可以阻止cpu再barrier两侧间进行指令重排;
  • 线程模型:一对一、多对一、多对多。衡量标准:1,用户态一个线程阻塞会不会阻塞其他线程;2,是否可以利用多核cpu硬件;3,线程数量限制;4,线程切换开销;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值