天天看点

CSAPP-第一章计算机系统漫游

目录

前言

1.1程序的编译流程(详细内容在第三章,第七章,第九章)

1.1.1编译系统的大致介绍

1.1.2知道编译系统有什么用呢?

1.2系统硬件组成

1.2.1系统硬件简述(主要内容是在第四章和第六章)

1.3操作系统管理硬件(第八章异常控制流的大概内容)

1.3.1计算机系统的分层视图

1.3.2操作系统的基本功能

1.3.3进程和线程

总结

前言

        本文首先讲述关于编译系统的大致流程,计算机系统硬件的组成,关于操作系统的一个基本功能的介绍和经常提到线程和进程的大概介绍

1.1程序的编译流程(详细内容在第三章,第七章,第九章)

1.1.1编译系统的大致介绍

这一章从一个hello world 程序开始讲解了程序的一个编译到运行的过程,由此提出了一个信息就是位+上下文的概念并描述了程序从源程序到可执行文件的编译过程,以一个C程序为例大概的流程如下图

CSAPP-第一章计算机系统漫游

下面来讲解一下各阶段处理的内容

  1. 预处理阶段,通过预处理器来处理以#开头的命令,以此修改C程序之后就得到了.i为扩展名的文件。
  2. 编译阶段,通过编译器将.i文件翻译成.s文件,.s文件存储的是源文件翻译后的汇编程序。
  3. 汇编阶段,通过汇编器将翻译过来的汇编程序即.s文件翻译成机器指令。
  4. 链接阶段,通常源文件里都会通过.h文件引用外部函数,链接器就是负责将这些函数的实现合并到源程序中。

1.1.2知道编译系统有什么用呢?

在日常开发中确实用不到但是知道这个可以对程序的大致流程有一个了解同时尤其是对于C/C++程序员而言,这个相对更重要,了解编译系统还有如下好处:

  1. 优化程序性能
  2. 理解链接时出现的错误
  3. 避免安全漏洞 

1.2系统硬件组成

1.2.1系统硬件简述(主要内容是在第四章和第六章)

包括以下几个部件

1.总线

贯穿整个系统的一组电子管道,称为总线,负责在各部件之间传递信息。

2.I/O设备

就是用来和计算机进行交互的设备常见的如鼠标和键盘就是输入设备,显示器就是输出设备还包含用来存储的一些设备比如硬盘,U盘,光盘等等这些即使输入设备又是输出设备。

3.主存

在硬件中的地位可以说仅次于处理器没有内存你就无法运行任何程序,操作数据,相对于硬盘内存只是个临时存储设备,断电数据就丢失,因此在进行工作时一定要每隔一段时间进行一次保存

4.处理器

称为CPU,在硬件系统中最重要的设备相当于人的大脑负责处理程序的各种运算,逻辑判断,其存储空间相对于内存和硬盘微不足道但是读取速度三者中最快的。

CPU处理的指令主要是以下几条

  • 加载:从内存读取数据到寄存器。
  • 存储:从寄存向内存上写数据。
  • 操作:从两个寄存器上读取数据进行算数运算并将结果存放到其中一个寄存器。
  • 跳转:主要用来实现循环和分支结构。 

1.3操作系统管理硬件(第八章异常控制流的大概内容)

1.3.1计算机系统的分层视图

CSAPP-第一章计算机系统漫游

1.3.2操作系统的基本功能

  1. 防止硬件失控被程序滥用
  2. 向应用程序提供简单一致的机制来控制复杂不相同的低级硬件设备。

1.3.3进程和线程

        1.进程

        进程是处理器,主存,I/O设备的抽象,简单来说进程就是在使用这个软件是操作系统会调度内存在内存上开辟出一段空间用来运行这个应用程序,一个系统可以同时运行多个进程,就像你的电脑可以同时听音乐,打游戏,这就是多个进程同时运行。可以说一个进程就是一个应用程序,但是一个应用程序不一定只有一个进程可能是多个进程,一个进程可以包含多个线程。

        2.线程

        线程就是一段可执行代码,是一个进程中的实际执行单位,比如说QQ你和别人聊天的同时你也可以下载文件,聊天和文件下载分别都是不同的线程来负责的。对于一个线程来说其实就类似一个工人,而线程就类似一个车间,线程的作用相对进程来说应用更广泛。

总结

    开篇讲述了一个程序的编译系统要经过预处理,编译,汇编,链接四个阶段,第二部分讲述了计算机的核心硬件包括总线,I/O设备,内存,处理器,其中处理器,I/O设备,内存最为重要,第三部分最重要的是进程和线程这两个概念。当然第一章的内容不止如此,我个人认为这三块内容相对更重要剩下的在后需章节会介绍由于本人能力有限可能描述的不是很清晰,还望见谅。

继续阅读