《计算机系统要素》概述
来源:互联网 发布:门户源码 编辑:程序博客网 时间:2024/05/24 01:11
背景:
我不是科班出身,对于计算机系统底层的知识了解很少,我的PM向我推荐了《计算机系统要素》这本书。是国外的两位学校教授编写,从最简单的与或非逻辑门,编译器,虚拟机,到最后操作系统的搭建,他们还有相应的网站,里面你可以下载到所有资料,还有视频。对于想系统了解计算机系统的同学来说,是个很不错的课程。还有大量的课后习题,当然也给出了参考答案,本文是我读后的一个笔记总结。就像小时候爬山,别人冲我喊了一句,“快上来啊!,这里好漂亮啊!”,然后奋起而上,希望也能给你带来这样的感觉,然后去了解下计算机底层的魅力。
本文目的:
了解计算机操作系统底层原理。
备注:
本书项目作业需动手实验,不方便展开,本文只谈理论知识。
第五章:计算机体系结构
一个最简陋的计算机系统由以下硬件组成: 1.内存:用来存储数据和指令 2.CPU: 核心硬件,用来进行逻辑操作和算术操作 3.输入:和计算机进行 4.输出:和人进行交互
第六章:汇编编译器
什么是汇编编译器? 将汇编指令翻译成计算机能够识别的机器语言。 机器语言分为两类:一种是二进制型,一种是符号型(我觉得其本质还是二进制,只是在硬件层进行封装映射了) 汇编编译器工作流程,编译器要完整解析代码,要进行两个阶段读取解析指令: 第一阶段: 逐行扫描指令代码,将每条命令建立一个相对应的地址 第二阶段: 再次重新扫描整个指令代码,对每一行的语法进行解析
第第七、八章:虚拟机-堆栈
什么是虚拟机? 是一个抽象的计算机,不是真实的硬件平台,可以理解为就是一个软件。 虚拟机有什么用? 让某种高级语言代码,可以在任何硬件平台运行,但是虚拟机也不能直接运行某种高级语言代码,它也需要某种特定的编译器,产生虚拟机能够识别读取的代码才可以运行 那关堆、栈什么事? 我们说到,既然虚拟机是一个抽象的计算机,且高级代码经过编译后要运行在它上面,它就需要进行一系列的算术操作、内存访问等等。这些关于数据的操作值就是保存在堆(heap)栈(stack)这种精良的数据结构中。其中所有数据值是要经过栈(stack)中转的,而堆(heap)是用来存储对象和数组数据。虚拟机的操作除了基于堆、栈还基于函数。从本质来讲,每个对象实例最后都在RAM上被序列化成一串数字,在该章节,开发一个虚拟机,采用软件工程中经典两层编译模型进行开发,在第一层高级代码被翻译为运行在虚拟机上的中间代码;在第二层中间代码被翻译为目标硬件平台的机器语言。本书对Java程序员很友好,因为它提到的VM模型是以JVM为蓝本的,所以上面提到的高级语言可以理解为是Java,虚拟机可以理解为JVM,中间码可以理解为bytecode,通过本章节,了解到Java之所以跨平台正是因为虚拟机的存在。
关于堆栈可以参考这篇博客:什么是堆和栈,它们在哪儿?
第十、十一章:编译器
什么是编译器? 将高级语言程序从源语言编译成目标语言,这个过程就是编译器要做的事情。那它是如果工作的呢? 编译器要将源语言代码编译成目标语言,要经过一系列的规则,算法,但主要可以分为两个步骤: 1.语法分析————经过一系列特定的规则和算法,解析出一定的格式规范; 2.代码生成————对变量、数据、表达式、逻辑运算进行一系列操作;
第十二章:操作系统
作为本书的最后一章,从如何搭建一个最小系统,编写一个汇编编译器,编写一个虚拟机,选择一门高级语言作为开发语言(Jack类似Java),编写一个编译器,设计API类库,内存,I/O,再将前面的内容全部整合,从0到1设计一个计算机系统。
结语
这本书从0到1,从最简单的与或非逻辑门,一步一步手把手教你,不需要任何基础,只需要耐心,细心,相信最后对底层系统了解会更上一层楼。
ELEVEN:
个人转载无须申请版权许可
阅读全文
0 0
- 《计算机系统要素》概述
- 《计算机系统要素》出版!!
- 计算机系统要素 project1
- 计算机系统概述
- 计算机系统概述
- 计算机系统概述
- 计算机系统要素之汇编编译器
- 计算机系统要素:第五章 计算机体系结构
- 计算机系统要素:第十二章 操作系统
- 计算机系统要素:第一章 布尔逻辑
- 计算机系统要素:第四章 机器语言
- 计算机系统概述-计算机系统层次结构
- 计算机系统结构概述
- 第一章计算机系统概述
- 计算机系统的启动概述
- 第一章 计算机系统概述
- 第一章 计算机系统概述
- 一、计算机系统概述
- Java的四种引用方式
- 课程作业
- 字符串总辑
- 类的for循环
- matlab调用Python的.py脚本文件
- 《计算机系统要素》概述
- 通知的基本用法和一些进阶技巧
- C++primer[习题][第四章][11-20]
- 设计模式之代理模式
- linux网络相关的命令
- 野人传教士过河
- 调用天气预报以及接口出现乱码解决方法
- python3 urllib 访问https网站
- ROIPoolingLayer源码解析