这本书主要讲了装载,链接和库的一些概念。今天的这篇笔记就给大家讲一下基础概念。
计算机的硬件设备有很多,其中中央处理器cpu,内存,I/O控制芯片最为关键。后来又出现了南桥芯片和北桥芯片用以协调它们之间的信息传输。一个计算机中有时不只有一个cpu,多个cpu可以提高计算机的频率,最长见的就是SMP(对称多处理器)与多核处理器。
下面讲一讲系统软件(这与普通的应用程序不同),系统软件的体系结构中各种软件的位置如下:
系统软件可以分为两块,一块是平台性的,比如操作系统内核,驱动程序,运行库和许多的系统工具;另一块是用于程序开发的,比如编译器,汇编器,连接器等开发工具和开发库。每个层次之间都有一个接口,以上三个接口从上往下以此为:应用程序编程接口,系统调用接口,硬件规格接口。
下面来看看操作系统,操作系统的功能是提供抽象的接口,管理硬件资源。一个计算机中的资源主要分CPU,存储器和I/O设备。所以操作系统就从这三个方面入手进行管理。让我们依次来看看。首先对于CPU,操作系统可以强制剥夺CPU资源并且分配给它认为目前最需要的进程(应用程序的运行方式)。操作系统中的文件系统管理着磁盘中文件的存储方式,它负责维护这些数据结构并且保证磁盘中的扇区能够有效地组织和利用。对于I/O设备,操作系统的I/O抽象模型也很好地实现了I/O设备的共享和抽象。对于存储器,也就是内存的问题:如何有效地利用计算机的内存,书中提到了一个办法即我们把程序给出的地址看作是一种虚拟地址,然后通过某些映射的方法,将这个虚拟地址转换成实际的物理地址。
上述分配内存的方法叫做分段,但是它显然不能提高内存的利用效率。书中又提到了一个叫分页的方法,即如下图所示每一个方框代表了一个页。 这样便节约了内存,使得一个页对应多个页。
接下来看下有关线程的基础。线程,有时被称为轻量级进程,是程序执行流的最小单元。一个标准的线程由一个线程ID,当前指令指针,寄存器集合和堆栈组成。
线程的访问非常自由,它可以访问进程内存里所有的数据,甚至包括其他线程的堆栈。在一个处理器上可以切换不同的线程的行为称之为线程调度。在其中有三种状态,分别是运行,就绪,等待。关于其它的概念,我们在以后用到时再作讲解。