Part I: 第 1 章 计算机系统漫游(阅读笔记)

这一章我阅读下来,个人感觉是对于整本书的整体概括和介绍。从最基本的信息位开始介绍,然后介绍到编译器,计算机硬件以及计算机操作系统和网络通信。其中让我比较印象深刻的就是这本书对于编译器以及不同编译阶段的介绍以及进程、线程并发的一些理念的介绍。

关于编译器,我之前对此知之甚少,因为在学习编程刚开始的时候,都是用集成开发工具来完成的,集成开发工具屏蔽了很多复杂的关于编译器,编辑器的联动操作,并且提供了方便的调试工具,所以作为学习者,我对于程序的编译执行的一些中间过程处于一无所知的状态,在阅读次数之后才算有了基本的认知,以C语言为例,编译分为4个阶段,分别是预处理阶段,编译阶段,汇编阶段和链接阶段,在这些阶段也会依次生成这些中间文件: 预处理生成*.i文件,编译生成*.s的汇编语言文件,汇编器再将*.s文件翻译成机器语言指令并将其保存在目标文件*.o中,最后将进入链接阶段,我们在编写C语言文件的时候必定会用到相应的标准库函数,在调用这些库函数的时候,链接器会将这些库函数的目标文件合并到之前的源文件生成的目标文件中,最后生成可以运行的可执行文件。

关于进程和线程,在类似于Java和C#这样的高级编程语言中,都会提供一个线程类,因此我在此之前对于线程就有一个基本概念,对于进程,我在阅读此书之前,对于进程的理解几乎完全来源于Windows系统的Task Manager,非常浅薄。说一下在阅读完本章之后我对于进程以及线程的理解把。  首先,进程从本质上来说也是一种抽象,在操作系统上可以并发运行多个进程,这种并发运行看上去是同时发生的,其实并不是这样的,操作系统会切换不同的进程,完成进程的上下文切换,线程与进程不同,一般来说线程是运行在进程中的上下文中并且能够共享同样的代码和全局数据,所以相比起进程,线程不需要频繁地进行上下文切换,在系统开销上要比进程小得多。

以上就是我对于CSAPP一书第一章的一些粗浅理解。

时间: 2024-10-25 18:47:52

Part I: 第 1 章 计算机系统漫游(阅读笔记)的相关文章

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

CSAPP:计算机系统漫游 关键点:上下文.程序运行.计算机系统抽象. 信息就是位+上下文一个程序的运行过程系统的硬件组成编译系统是如何工作的?一个程序的运行过程(c语言举例)计算机系统中的抽象 信息就是位+上下文 ??所谓信息(包括磁盘文件.内存中的程序.内存中存放的用户数据.以及网络上传输的数据),都是由一串比特(bit)表示的,区分不通数据对象的唯一方法是我们读到数据对象时的上下文.??这里的上下文,可以理解为一个"标志",用于区分不通的数据对象,或者进入不同的状态,在不同的上下

《深入理解计算机系统》第一章计算机系统漫游

信息就是位+上下文 系统中所有信息都是由一串位表示的.区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文. 程序被其他程序翻译成不同的格式     范例代码 1 #include <stdio.h> 2 3 4 5 int main() 6 7 { 8 9 printf("hello world\n"); 10 11 } 每条C语言都必须被其他程序转化为机器指令,以可执行目标程序的格式打包好,以二进制文件形式存放 转化过程分为: 预处理阶段:读取系统头文件stdio

第一章 计算机系统漫游

1.1信息就是上下文 源程序实际上就是由值0和1组成的位(bit),一个字节为8个位. 系统中所有的信息-包括磁盘文件,存储器中的程序,存储器中存放的用户数据以及网络上传送的数据,都是由一串位表示的.区分不同数据对象的唯一方法就是我们读到这些数据对象时的上下文. 1.2程序被其他程序翻译成不同的格式 unix系统上源文件通过编译系统(预处理器,编译器,汇编器,链接器)转换为可执行目标文件 汇编语言是非常有用的,因为它为不同高级语言的不同编译器提供的通用的输出语言 1.3了解编译系统如何工作是大有

《深入学习计算机系统(C语言)》学习进程之开篇第一章计算机系统漫游

1.1  信息就是位 + 上下文 程序的生命周期从源程序开始——这是一个有着某种扩展名(比如C源程序的文件扩展名为.c,java源程序的文件扩展名为.java,c++源程序的扩展名为.cpp等等)的文本文件.这些文本文件由一个个文本字符构成,而每个文本字符又由8个bit来构成. 数据有不同的数据对象,即不同的由bit组成的“实体”. 1.2  程序被其他程序翻译成不同的格式 为了在(操作)系统上运行程序,每条源程序上的语句都被其他程序转化为机器语言指令.然后将这些指令以可执行目标程序的格式打好包

第一章——计算机系统漫游

1.1 信息就是位+上下文 程序员通过编辑器创建并保存的文本文件hello.c是以字节序列的方式储存在文件中(源文件也叫源程序),大部分现代计算机系统都使用ASCII标准来表示文本字符,像hello.c这样只由ASCII字符构成的文件称为文本文件,所有其他文件都称为二进制文件, ASCII表 https://baike.baidu.com/item/ASCII/309296?fr=aladdin unicode,utf-16,utf-8概念区分 http://blog.sina.com.cn/s

第1章 计算机系统漫游

编译系统的构成 1.预处理阶段:预处理器处理字符#开头的命令,展开头文件: 2.编译阶段:编译器将预处理过的源程序翻译成汇编语言程序: 3.汇编阶段:汇编器将汇编程序翻译成机器语言指令: 4.链接阶段:链接器合并我们的可重定位目标文件和程序库的目标文件最终生成可执行目标文件.

第1章 计算机系统漫游(深入理解计算机系统)

1 #include <stdio.h> 2 3 int main() 4 { 5 printf("hello, world\n"); 6 } 1.1 信息就是位+上下文 hello程序的声明周期是从一个源程序开始的,即程序员利用编辑器创建并保存的文本文件,文件名是hello.c.源程序实际上就是一个由值0和1组成的位(bit)序列,每8个位被组成成一组,称为字节.每个字节表示程序中的某个文本字符. 大部分的现在系统都使用ASCII标准来表示文本字符,这种方式就是用一个唯一

一、计算机系统漫游

漫游了什么 第一章主要对计算机系统进行一个概述,我也提取每一个小点来进行简要的记录. 作者从一个hello.c程序讲述了: 从存储,编译,执行的过程,讲解了文本存储形式,并讲解了此过程所需要的硬件支撑. 从执行中数据的多次复制,讲到了读取的速度以及存储器层次架构. 从hello程序和shell的交互,讲到了进程,线程以及并发的概念等. 对于进程,并发等我并没做出摘要,一是因为这是老生常谈的问题,作者在第一章也只是介绍了概念.二是因为在书的后面会详细讲解,故没有记录. 1.1 信息就是位+上下文

构建之法阅读笔记05

2017.5.20 今天阅读的是<构建之法>第8章需求分析的阅读笔记,我们如果要开始做一个软件,最先要进行的就是需求分析,我们应该充分的了解我们这个软件是否具有前景,我们为用户提供的服务是不是用户所需要的,这一章详细的叙述了如何进行需求分析. 首先是获取和引导需求,我们应该找到软件的利益相关者,了解挖掘他们对软件的需求,引导他们表达出真实的需求.然后分析和定义需求,对各个方面的需求进行规整,定义需求内涵,从各个角度将需求量化,然后估计实现这些需求所需要的时间和资源,确定各个需求的优先级.紧接着