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

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/blog_a475ac530102wl4g.html

系统中所有的信息——包括磁盘文件、内存中的程序、内存中存放的用户数据以及网络上传送的数据,都是由一段比特表示的。区分不同数据对象的唯一方法是读到这些数据对象时的上下文。

1.2 程序被其他程序翻译成不同的格式

在Unix系统中,从源文件到可执行目标文件的转化是由编译器驱动程序GCC完成的,
linux> gcc -o hello.c

这个翻译过程分为四个阶段,执行这四个阶段的程序(预处理器、编译器、汇编器和链接器)一起构成了编译系统

1.3 了解编译系统如何工作是大有益处的

优化程序性能

理解链接时出现的错误

避免安全漏洞

 1.4 处理器读并解释储存在内存中的指令

现在,hello.c源程序已经被编译系统翻译成了可执行目标文件hello,并被存放在磁盘上,要想在Unix上运行该可执行文件,需要将它的文件名输入到称为shell的应用程序中:

linux> ./hello

hello, world

linux>

1.4.1 系统的硬件组成

(1)总线

贯穿整个系统的一组电子管道,携带信息字节(定长的字节块也就是字)并负责在各个部件间传递。

(2)I/O设备

I/O(输入/输出)设备是系统与外部世界的联系通道。如输入的键盘和鼠标,输出的显示器,以及磁盘驱动器(磁盘),最开始,可执行程序hello就存放在磁盘上。

每个I/O设备都通过一个控制器或适配器与I/O总线相连。

(3)主存

是一个临时存储设备,在处理器执行程序时,用来存放程序和程序处理的数据。

从物理上来说,主存是由一组动态随机存取存储器(DRAM)芯片组成的;从逻辑上来说,存储器是一个线性的字节数组,每个字节都有其唯一的地址(数组索引,从零开始)。

(4)处理器

中央处理单元(CPU),简称处理器,是解释(或执行)存储在主存中指令的引擎。

处理器的核心是一个大小为一个字的存储设备(或寄存器),称为程序计数器(PC)。任何时刻,PC都指向主存中的某条机器语言指令(即含有该条指令的地址)。

1.5 高速缓存至关重要

较大的存储设备要比较小的存储设备运行的慢而快速设备的造价远高于同类的低速设备,处理器从寄存器文件中读数据比从主存中读取几乎要快100倍,针对这种处理器与主存之间的差异,有了更小更快的存储设备,叫高速缓存处理器(cache),位于处理器芯片上,用一种叫静态随机访问处理器(SRAM)实现的,能够利用高速缓存将程序性能提高一个数量级。

1.6 存储器设备形成层次结构

主要思想是上一层的存储器作为低一层存储器的高速缓存。

1.7 操作系统管理硬件

文件是对I/O设备的抽象表示,虚拟内存是对主存和磁盘I/O设备的抽象表示,进程是对处理器、主存和I/O设备的抽象表示。

1.7.1 进程

进程是操作系统对一个正在运行的程序的一种抽象,传统系统在一个时刻只能执行一个程序,而多核处理器同时能执行多个程序。无论是在单核还是多核系统中,通过处理器在进程中切换来实现并发运行,操作系统实现这种交错执行的机制称为上下文切换

从一个进程到另一个进程的转换是由操作系统内核管理的,内核不是一个独立的进程,它是系统管理全部进程所用代码和数据结构的集合。

1.7.2 线程

一个进程可以由多个称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。

1.7.3 虚拟内存

虚拟内存为每个进程提供一个假象,即每个进程都在独占的使用主存,每个进程看到的内存都是一致的,称为虚拟地址空间

1.7.4 文件

文件就是字节序列,每个I/O设备甚至是网络,都可以看成是文件。

1.8 系统之间利用网络通信

从单一的系统来看,网络可视为一个I/O设备。

1.9.1 Amdahl定律

主要思想是当我们对系统的某个部分加速时,其对系统整体性能的影响取决于该部分的重要性和加速程度。

1.9.2 并发和并行

并发指一个同时具有多个活动的系统,并行指用并发来使一个系统运行的更快。

并行可以在计算机系统的多个抽象层次上运用。

(1)线程级并发

(2)指令级并行

(3)单指令、多数据并行

1.9.3 计算机系统中抽象的重要性

原文地址:https://www.cnblogs.com/yuki67/p/10199620.html

时间: 2024-11-02 16:34:11

第一章——计算机系统漫游的相关文章

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  程序被其他程序翻译成不同的格式 为了在(操作)系统上运行程序,每条源程序上的语句都被其他程序转化为机器语言指令.然后将这些指令以可执行目标程序的格式打好包

第一章 计算机系统概论

计算机组成原理POCC review 第一章 计算机系统概论 这一章,相信老师都是略讲的,但是很重要. 计算机分类 电子计算机: 1.模拟计算机:数值由连续量表示,运算过程也连续 2.数字计算机: 按位运算,不连续跳动计算 通用计算机:超级计算机.大型机.服务器.PC机.单片机.多核机 计算机发展史 计算机五代变化 电子管 晶体管 中小规模集成电路 大规模(LSI)和超大规模集成电路 巨大规模集成电路 半导体存储器:速度快.容量大.价格低 计算机性能指标: 吞吐量:单位时间处理信息量 响应时间:

深入理解计算机系统读书笔记之第一章:漫游

我是从豆瓣上看到好多人都在推荐这本书,于是就去借来读一读,昨天晚上用了好长时间来读这本书的第一章节,感觉这本书比较符合我(有些基础还不太明白,这本书详细的进行了讲解,很好). 下面写一下我的理解(顺便回顾一下知识) 第一节主要讲的是: A Tour of Computer Systems 以hello.c为例进行讲解,介绍这个程序如何从一个源程序变成可执行程序,再到执行,显示屏上出现“hello,world” ···········································

深入理解计算机系统,第一章:漫游

计算机系统漫游 1.1 信息就是位+上下文 先看一个简单的Hello World C程序. 1 #include <stdio.h> 2 3 void main() 4 { 5 printf("Hello World!\n"); 6 } 这个程序的源文件是文本格式,以字节序列的方式存储在文件中,由一种叫ASCII码的方式编码.除了文本文件之外的其它文件都是二进制文件. 由HelloWorld程序的存储方式可以猜测,信息,包括磁盘文件.内存中运行的程序.内存中储存的用户数据以

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

这一章我阅读下来,个人感觉是对于整本书的整体概括和介绍.从最基本的信息位开始介绍,然后介绍到编译器,计算机硬件以及计算机操作系统和网络通信.其中让我比较印象深刻的就是这本书对于编译器以及不同编译阶段的介绍以及进程.线程并发的一些理念的介绍. 关于编译器,我之前对此知之甚少,因为在学习编程刚开始的时候,都是用集成开发工具来完成的,集成开发工具屏蔽了很多复杂的关于编译器,编辑器的联动操作,并且提供了方便的调试工具,所以作为学习者,我对于程序的编译执行的一些中间过程处于一无所知的状态,在阅读次数之后才

第一章 计算系统漫游

1.文本字符: 使用ASCII标准来表示[以一个唯一的单字节大小的整数值来表示每个字符] 大多数计算机系统中是使用ASCII标准来表示文本字符的,如hello.c程序在系统中以ASCII值序列表示的(这是程序在计算机系统的最初表示形式). 2.操作系统提供的三个基本的抽象概念: 文件:字节序列,对I/O设备抽象为文件这一概念.(包括磁盘.键盘.显示器.网络等都可以视为文件),这一抽象概念向应用程序提供一个统一的视角. 虚拟存储器:是对主存和磁盘的抽象. 进程:是操作系统对一个正在运行的程序的一种