《程序员的自我修养》第一章 温故而知新

这里写图片描述

早期的计算机CPU和内存访问速度一致,而其他外设访问速度过慢,因此都需要一个相应的I/O控制器。后来CPU的频率提高了,CPU改使用倍频的方式与系统总线进行通信。后来随着图形芯片需要跟CPU和内存之间大量交换数据,设计了专门的北桥芯片。低速设备连接南桥芯片,再汇总连接到北桥。

这里写图片描述

这里写图片描述

硬件接口称为硬件规格。开发工具与应用程序是属于同一个层次的。

当我们要读一个文件时,应用程序发出读的命令,操作系统接收到之后传递给磁盘驱动程序,磁盘驱动程序再向磁盘发出硬件指令,读到数据。

将程序给出的地址看作是一种虚拟地址,通过MMU(硬件单元)完成映射得到物理地址,解决了地址空间不隔离的问题以及程序运行的地址不确定的问题。

物理内存有效利用的有多少取决于地址总线的个数。

同一个进程中的线程是可以访问其他线程的栈的,如果它知道其他线程的栈地址的话(但一般语言层面上不允许这样)

这里写图片描述

这里写图片描述

这里写图片描述

fork产生一个新的进程,使用的是写时复制,所以速度很快。clone可以在实际效果上产生一个新的线程(共享当前进程的内存空间和文件),是一个内核线程。

线程间的同步:原子操作,信号量,互斥量,临界区(区别在于他的作用范围仅限于本进程),读写锁,条件变量。

过度优化问题:即使成功正确上了锁,也有可能出现问题。因为编译器和CPU都会打乱指令的执行顺序,且为了提高变量的访问速度,有可能将变量放于寄存器中并未及时写回内存。

这里写图片描述

这里写图片描述

多对一线程模型:线程之间的切换由用户态的代码来进行,所以实际上只有一个内核线程。(个人理解,表面上的多线程实际是由代码库来负责切换线程)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值