链接、装载与库——计算机组成

来源:互联网 发布:网络主播崔佑欣揪痧 编辑:程序博客网 时间:2024/06/06 07:02

*从这篇开始连续记录我的读书笔记,将书中重要的知识点总结,方便自己以后快速回忆与阅读。那就先从《程序员的自我修养——装载、链接与库》第一章开始喽。*

第一章 温故而知新

1.1 从Hello World 说起

1.2 万变不离其宗

1.计算机中有三个最为关键的部件,分别为中央处理器CPU内存I/O控制芯片

早期计算机硬件结构

早期的CPU的核心频率与内存一样,所以直接连接在同一个总线(Bus)上。但为了协调I/O设备与总线之间的速度,一般每个设备都会有一个相应的I/O控制器

2.由于CPU核心频率的提升,且远远快于内存的速度,于是产生了与内存频率相一致的系统总线,而CPU采用倍频的方式与系统总线进行通信

硬件结构框架

为了协调CPU、内存和高速的图形设备,专门设计了一个高速的北桥芯片,以便它们之间能够高速地交换数据。但如果相对低速的设备全部连接在北桥上,北桥同时处理不同速度的设备,设计会十分复杂。于是设计了专门处理低速设备的南桥(Southbridge)芯片,将低速设备都连接在南桥上,由南桥汇总后连接到北桥上。90年代时,PC在系统总线上采用PCI结构,在低速设备上采用ISA总线。

3.多对称处理器(SMP,Symmetry Multi-Processing),每个CPU在系统中所处地位和所发挥的功能一样,是相互对称的。多核处理器(Multi-core Processor)实际上就是SMP的简化版,它们之间的区别很小,逻辑上来看它们是完全相同的。区别在于多核和SMP在缓存共享等方面有细微的差别,使得程序在优化上可以有针对性地处理。

1.3 站得高,望得远

1.计算机系统软件体系结构采用一种层的结构。

“计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。”

计算机软件体系结构

  • 每个层次之间都需要相互通信,一般将通信的协议成为接口(Interface),接口的下层是接口提供者,由它定义接口;接口的上层是接口的使用者,它使用接口来实现所需功能。

  • 从整体层次结构上来看,开发工具与应用程序是是属于同一个层次的,都使用操作系统应用程序编程接口(Application Programming Interface)。应用程序接口的提供者运行库,什么样的运行库提供什么样的API。运行库使用操作系统提供的系统调用接口(System call Interface),系统调用接口在实现中往往以软件中断(Software Interrupt)的方式提供。

1.4 操作系统做什么

操作系统的一个功能是提供抽象的接口,另外一个主要功能是管理硬件资源。

1.4.1 不要让CPU打盹

1.如何高效、充分的利用CPU?

  • 计算机发展早期,为了充分利用CPU资源,编写了一个监控程序,当某个程序暂时无需使用CPU时,监控程序就把另外正在等待CPU资源的程序启动,使CPU充分利用。这种方法被称为多道程序(Multiprogramming)。其最大的问题是程序之间的调度太粗糙,程序之间不分轻重缓急。

  • 经过改进,程序运行模式变成一种协作模式,即每个程序运行一段时间后都主动让出CPU给其他程序,使得一段时间内每个程序都有机会运行一小段时间。这种程序协作模式叫做分时系统(Time-Sharing System)。但如果一个程序一直霸占CPU,那么其他程序都得等着。

  • 多任务(Multi-tasking)系统,操作系统接管了所有的硬件资源,并且本身运行在一个手硬件保护的级别。所有的应用程序都以进程(Process)的方式运行在比操作系统权限更低的级别,每个进程都有自己独立的地址空间,使得进程之间的地址空间相互隔离。

  • CPU由操作系统统一进行分配,每个进程根据进程优先级的高低都有机会得到CPU,如果运行时间超出了一定时间,操作系统会暂停该进程,将CPU资源分配给其他等待运行的进程。这种分配方式即抢占式(Preemptive)操作系统可以强制剥夺并且分配给它认为目前最需要的进程。

    进程转换流程

1.4.2 设备驱动

1.当成熟的操作系统出现以后,硬件逐渐被抽象成了一系列概念。在UNIX中,硬件设备的访问跟访问普通文件一样。从硬件细节中解放,将繁琐的的硬件细节全交给操作系统中的硬件驱动(Device Driver)程序来完成。

2.文件系统是操作系统中最重要的部分之一,文件系统管理者磁盘中文件的存储方式。

文件在磁盘中的结构

硬盘的结构介绍:

  • 硬盘基本存储单位为扇区(Sector),每个扇区一般为512字节。一个磁盘往往有多个盘片,每个盘片分两面,每面按照同心圆划分为若干个磁道,每个磁道划分为若干个扇区。

  • 如果按照每个磁道都拥有相同的数量的扇区,那么靠近盘面外围的磁道密度肯定比内圈更加稀疏。但如果不同的磁道扇区数又不同,计算起来就十分麻烦。现代硬盘为了屏蔽这些复杂的硬件细节,普遍使用LBA(Logical Block Address)的方式,即整个硬盘中所有的扇区从0开始编号,一直到最后一个扇区,这个扇区编号叫做逻辑扇区号

*下次的读书笔记将总结第一章剩下的内容,主要为内存及其分配机制、线程相关等内容。*

0 0
原创粉丝点击