深入理解计算机系统(笔记):计算机系统漫游

经典书籍:深入理解计算机系统 的读书笔记


1. 了解编译器如何工作对编程帮助巨大:

1.1 优化程序性能

比如相似语句那种效率高,比如switch和if-then-else语句,while和for循环,循环求和的结果放到本地变量比放到引用传递来的参数速度快,等

1.2 理解链接时错误

链接器无法解析引用,静态变量和全局变量区别,不同源文件定义同名全局变量会发生什么,等

1.3 避免安全漏洞

缓冲区相关知识,如何避免缓冲区溢出等


2. 系统硬件组成

总线、I/O设备、主存、处理器


3. 存储设备层次


4. 虚拟存储器

虚拟存储器是抽象概念,为进程提供了一个假象,让每个进程都以为自己独占主存。进程看到的都是一致的存储器,叫做虚拟地址空间。下图为Linux进程的虚拟地址空间:

程序代码和数据:所有进程的代码都从同一固定地址开始,然后是全局变量数据位置

堆:代码和数据区在进程开始时指定了大小,堆的大小可动态变化

共享库:存放了比如C标准库、数学库的代码和数据区

栈:位于用户虚拟地址空间顶部,向下增长

内核虚拟存储器:内核总驻留在内存中,这段内存就是为它保留的,用户进程不能读取这里的数据,也不能直接调用内核函数


5. 抽象的重要性

指令集结构提供了对实际处理硬件的抽象

文件是对I/O的抽象

虚拟存储器是对程序存储器的抽象

进程是对一个正在运行的程序的抽象


6. 缩写和概念

C语言:又贝尔实验室的Dennis Ritchie于1969年-1973年创建,1989年颁布了ANSI C的标准

ANSI:American National Standards Institute, 美国国家标准学会

GNU:GNU's Not Unix的缩写,由Richard Stallman于1984年发起,是一个开源项目,目标是开发出一个完整的类Unix系统。GNU环境包括EMACS编辑器、GCC编译器、GDB调试器、汇编器、链接器、处理二进制文件的工具等。

Posix: Portable Operating System Interface,可移植操作系统接口,IEEE(电气和电子工程师协会)为防止各大厂商往Unix中加入不兼容的特性,开始标准化Unix的开发,由Richard Stallman命名为Posix

Linux:1991年8月,芬兰研究生Linus Torvalds发布了Linux第一版

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值