《深入理解计算机系统-程序结构》读书笔记
时间:2019-09-03
本文章向大家介绍《深入理解计算机系统-程序结构》读书笔记,主要包括《深入理解计算机系统-程序结构》读书笔记使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
计算机系统是由硬件和系统软件组成的,他们共同工作来运行应用程序。在《深入理解计算机系统》一书中将会学到很多实践的技巧。例如:了解编译器是如何实现过程调用的、避免缓冲区溢出错误带来的安全漏洞、理解并发带来的希望和陷阱等。
1.1 信息就是位+上下文
-
源程序的组成:
-
源程序是由值0和1组成的位序列,8个位被组织成一组,称为字节。
-
每个字节表示程序中的某些文本字符。
-
-
文本文件:
-
大部分系统都使用ASCII标准来表示文本字符,只由ASCII字符构成的文件称为文本文件。
-
所有其他文件都称为二进制文件。
-
1.2 程序被其他程序翻译成不同格式
-
目标程序:
-
目标程序也称为可执行目标文件,目标文件是由编译器驱动程序将源程序转化得到的。
-
-
翻译过程分为4个阶段
-
预处理阶段:将源程序修改位另一种能够编译的程序文件。
-
编译阶段:将预处理的源程序翻译成汇编语言程序。
-
汇编阶段:将汇编语言程序翻译成机器语言指令。
-
-
-
了解编译系统如何工作是大有益处的
-
优化程序性能:一个函数调用的开销有多大?本地变量和引用变量哪个更快?简单的排列括号函数就运行的快很多是什么原因?等等
-
理解链接时出现的错误:连接器无法解析引用是什么意思?静态变量和全局变量的区别是什么?为什么有些链接直到运行时才出现错误?
-
避免安全漏洞:缓冲区溢出错误、理解数据和控制信息存储在程序栈中的方式会引起的后果。
-
1.3 处理器读并解释储存在内存中的指令
原文地址:https://www.cnblogs.com/wuchangliang/p/11456491.html
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(56)-插件---单文件上传与easyui使用fancybox
- xml-rpc(2)-first demo_v2
- xml-rpc(1)-first demo
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(55)-工作流设计-表单布局
- 网站源文件被注入了iframe代码—ARP欺骗的木马病毒攻击
- ASP.NET MVC5+EF6+EasyUI 后台管理系统--工作流演示截图
- 基于CPPN与GAN+VAE生成高分辨率图像
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(54)-工作流设计-所有流程监控
- (收藏)搭建.NET Framework 3.0开发环境 及SharePoint 2007/WSS 3环境
- WCF技术剖析之八:ClientBase<T>中对ChannelFactory<T>的缓存机制
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(48)-工作流设计-起草新申请
- 把windows2003“搬”到手机上。
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(53)-工作流设计-我的批阅
- ASP.NET MVC5+EF6+EasyUI 后台管理系统--任务调度系统解析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Centos7的Firewalld防火墙基础命令详解
- Linux下安装或升级Python 2.7的操作方法
- Linux中git用https连接时不用每次输入密码的方法
- Centos7.3 RabbitMQ分布式集群搭建示例
- Ubuntu16.04环境下搭建FTP服务器的教程
- Linux 查看空间使用情况的实例详解
- CentOS 6.8 安装vsftpd的方法步骤
- centos7下搭建ZooKeeper3.4中间件常用命令小结
- Linux性能测试 pmap命令详解
- Linux7.7设置交换分区SWAP的方法
- 在Linux里安装和启动nginx的方法
- Linux下如何对ISO文件编辑的方法示例
- Linux中创建新用户并赋予指定目录的相关权限
- Linux服务器下安装配置Nginx的教程
- Linux文件目录结构(小白版)