【链接装载与库】基础知识

基础知识

  1. 计算机有各种硬件,但在软件开发者的角度看有三个最为关键:中央处理器(CPU),内存和I/O控制芯片

  2. 早期的计算机没有很复杂的图形功能, CPU 的核心频率也不高,跟内存的频率一样,它们都是直接连接在同一个总线 (Bus) 上的。由于I/O 设备诸如显示设备、键盘、软盘和 磁盘等速度与 CPU 和内存相比还是慢很多,所以效率很缓慢

  3. 为了协调CPU、 内存和高速的图 形设备,人们专门设计了一个高速的北桥芯片,以便它们之间能够高速地交换数据

  4. 由于北桥运行的速度非常高,所有相对低速的设备如果全都直接连接在北桥上,北桥 既须处理高速设备,又须处理低速设备,设计就会十分复杂。于是人们又设计了专门处理 低速设备的南桥 (Southbridge) 芯片,磁盘、 USB、 键盘、鼠标等设备都连接在南桥上, 由南桥将它们汇总后连接到北桥上。

SMP

  1. 很早以前就有了多 CPU 的计算机,其中最常见的一种形式就是对称多处理器(SMP Symmetrical Multi -Processing ),简单地讲就是每个 CPU 在系统中所处的地位和所发挥的 功能都是一样的,是相互对称的。

站得高,看得远

  1. 系统软件这个概念其实比较模糊,传统意义上一般将用于管理计算机本身的软件称为系 统软件,以区别普通的应用程序。
    系统软件可以分成两块, 一块是平台性的,比如操作系统 内核、驱动程序、运行库和数以千计的系统工具;另外一块是用于程序开发的,比如编译器、 汇编器、链接器等开发工具和开发库。本书将着重介绍系统软件的一部分,主要是链接器和 库(包括运行库和开发库)的相关内容。

  2. 计算机软件体系结构每个层次之间都须要相互通信,既然须要通信就必须有一个通信的协议,我们一般将其 称为接口 (Interface),接口的下面那层是接口的提供者,由它定义接口;接口的上面那层 是接口的使用者,它使用该接口来实现所需要的功能。

  3. 开发工具与应用程序是属 于同一个层次的,因为它们都使用一个接口,那就是操作系统应用程序编程接口,应用程序接口的提供者是运行库,什么样的运行库提供什么样的 API, 比如Linux 下的 Glibc 库提供 POSIX 的 API;

  4. 运行库使用操作系统提供的系统调用接口,系统调用接口在实现中往往以软件中断的方式提供

  5. 操作系统内核层对于硬件层来说是硬件接口的使用者,驱动程序如何操作硬件,如何与硬件进行通信。 这种接口往往被叫做硬件规格

操作系统

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

  2. 操作系统作为硬件层的上层,它是对硬件的管理和抽象。对于操作系统上面的运行库和 应用程序来说,它们希望看到的是一个统一的硬件访问模式。

  3. 当成熟的操作系统出现以后,硬件逐渐被抽象成了系列概念。
    这些繁琐的硬件细节全 都交给了操作系统,具体地讲是操作系统中的硬件驱动 (Device Driver)程序来完成。

  4. 文件系统管理着磁盘中文件的存储方式

  5. 操作系统分段,分页

线程

  1. 线 程 (Thread),有时被称为轻量级进程, 是程序执行流 的最小单元。一个标准的线程由线程 ID、当前指令指针 (PC)、 寄存器集合和堆栈组成。

  2. 一个进程由一个到多个线程组成,各个线程之间共享程序的内存空间(包括代码 段、数据段、堆等)及一些进程级的资源(如打开文件和信号)。

  3. 线程的访问非常自由,它可以访问进程内存里的所有数据,甚至包括其他线程的堆栈

  4. 线程调度与优先级
    我们一般把频繁等待的 线程称之为 IO 密集型线程, 而把很少等待的线程称为CPU 密集型线程。IO密集型线程总是比CPU 密集型线程容易得到优先级的提升。

  5. 饿死

Linux的多线程

  1. Linux 将所有的执行实体(无论是线程还是进程)都称为任务 (Task)
    Linux 下不同的任务之间可以选择共享内存空间,因而在实际意义上,共享了同一个内存空间的多 个任务构成了一个进程,这些任务也就成了这个进程里的线程。
  2. fork可以创建一个新任务
    fork 产生新任务的速度非常快,因为 fork 并不复制原任务的内存空间,而是和原任务 一起共享一个写时复制 的内存空间。所谓写时复制, 指的是两个任务可以同时自由地读取内存,但任意一个任务试图对内存进行修改时,内存就 会复制一份提供给修改方单独使用,以免影响到其他的任务使用。

线程安全

  1. 原子操作
  2. 同步与锁
    互斥量,临界区,读写锁

参考资料:<<程序员的自我修养>>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值