计算机硬件
计算机硬件核心三部分:中央处理器CPU、内存、I/O控制芯片 CPU频率:大体上理解是,CPU操作的最小时间单位叫时钟周期,它的倒数叫频率。意思就是一秒钟CPU能执行多少条指令。频率越高,单位时间内能执行的命令越多,也就越快。时钟参考资料、频率参考资料
早期计算机
- CPU的频率和内存的频率一致,直接连接到同一个总线Bus
- 为了协调I/O和总线的速度,每个I/O设备都有一个I/O控制器
发展
- CPU频率高于内存频率。采用 总线频率和内存频率一致,CPU倍频与总线通信的 方式
- I/O速度无法满足图形化芯片的需求,设计北桥芯片进行通信
- 为了减轻北桥芯片既要处理高速设备、又要处理低速设备的压力,设计南桥芯片。南桥主要处理低俗设备,汇总后连接到北桥
SMP和多核
- 频率越高,机器相应的性能会好,但是CPU的制造工艺限制,频率卡在了4GHz
- 提高CPU速度的另外的方式:增加CPU数量
- SMP对称多处理器,每个CPU完整,有cache等。
- 多核:共享昂贵的缓存设备,保留多个核心。
- 核的数量和速度提升不是线性正比,因为计算任务并不是完全相互独立。就和一个妈妈十个月才能生一个孩子,但是不能十个妈妈一个月生一个孩子。
计算机软件
-
管理计算机本身的软件称为系统软件。平台型软件:操作系统内核、驱动程序、运行库、系统工具;软件开发型:编译器、汇编器、链接器、开发库。 -
计算机软件有着严格的层次结构,各层之间通过接口进行通信。接口实际上就是一个通信协议,由下层定义实现,由上层调用。 -
层次结构的好处是,中间层都是对于下一层的封装和扩展,可以通过新加层提供其它功能。 -
应用程序使用运行库提供的应用程序接口API,比如Windows的运行库提供Windows API。运行库使用操作系统提供的系统调用接口,往往以软件中断的方式提供,比如Linux使用0x80号终端作为系统调用接口。操作系统和驱动程序使用硬件提供的硬件规格。
操作系统和设备驱动的作用
- 操作系统的功能:提供抽象的接口+管理硬件资源。操作系统不能让硬件资源闲置,要尽可能地挖掘其工作潜能。
- 多道程序:一个监控程序,当前程序没有使用CPU时,将另外等待CPU资源的程序启动。缺点:太粗糙,没有轻重缓急,交互性不行
- 分时系统:每个程序运行一段时间后主动让出CPU。缺点:程序主动让出CPU时间,如果一个程序写了个死循环,整个系统就像死机了一样。
- 多任务系统:操作系统接管所有硬件资源,并且运行在一个受硬件保护的级别。每个进程运行在比操作系统低权限地级别,有着自己独立的地址空间,有着自己的优先级。操作系统分配时间给进程,一段时间后剥夺CPU给另外地进程使用。即抢占式。
- 设备驱动屏蔽了底层硬件实现和调用的细节问题,给上层运行库和应用程序一个调用接口。比如输出到屏幕,程序设计者不用考虑到底硬件怎么输出的,比如在哪个位置呈现一个像素点。这些都交给了设备驱动程序来完成。
文件系统
- 文件系统管理着磁盘中文件的存储方式。比如一个长8000字节的文件,文件系统将前4096字节存储在磁盘的1000-1007山区,每个扇区512字节;4097-8000字节存储在磁盘的2000-2007扇区。
- 硬盘结构:一个磁盘有两个盘面,每个盘面按同心圆划分成多个磁道。每个磁道划分成若干个扇区,每个扇区大约512字节。由于靠近圆心的磁道长度小于外层的磁道,如果每个磁道划分成相同的扇区,那么外层磁道的密度肯定比内层小。所以我们采用逻辑扇区号,逻辑扇区号然后转换成盘片、盘面、磁道、扇区。
- 比如某个程序需要读取文件的前4096个字节,通过系统调用发送信息给设备驱动程序,设备驱动程序发送硬件命令给硬盘。
存储设备
线程进程
- CPU频率现在无法提升,我们采取多核措施。软件并发执行的一个方法就是多线程。
- 线程,轻量级进程,程序执行流的最小单元。
线程 | 进程 |
---|
独有:线程ID、当前指令指针PC、寄存器集合、栈、特定创建的私有堆 | 多个线程组合而成,他们共享代码段、数据段、堆、进程级资源如打开文件和信号 |
- 多线程的优点:某个线程得不到数据就进入等待状态,另外的线程继续执行,从而有效利用了等待的时间,比如网页访问,比如交互与计算线程;相比多进程,多线程共享数据效率更高。
- 并发和并行:并发是某一时刻同时运行,并行是某一时间段同时运行。对于多核,可以实现真正的并发,对于单核,一般是模拟并发,也就是并行。
- 线程的三种状态:就绪、运行、等待
- 线程调度方案:
- 抢占和不可抢占线程:
- Linux多线程:
- 线程安全
参考资料
- 俞甲子. 程序员的自我修养 : 链接、装载与库[M]. 北京 : 电子工业出版社, 2009
|