深入理解计算机系统

系统的硬件组成

总线
贯穿整个操作系统的是一组电子管道,总线,他携带信息字节并负责在各个部件间传递。

通常总线被设计成传输定长的字节块,也就是字(word)。字中的字节数是一个基本的系统参数,现在大多数机器要么4个字节(32位)要么8个字节(64)位。

I/O设备
主存
主存是一个临时存储设备,在处理器执行程序时,存储程序和程序处理的数据。
处理器(TODO:如何利用高速缓存将程序性能提高一个数量级?)
解释或处理存储在主存中指令的引擎。

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

  • 加载:从主存复制一个字或者字节到寄存器,覆盖原来的寄存器内容
  • 存储:从寄存器复制一个字或者一个字节到主存,覆盖原来的内容
  • 操作:把两个寄存器的内容复制到ALU,ALU对这两个字做算数运算,并将结果放到一个寄存器中,覆盖原来的内容。
  • 跳转:从指令本身抽取一个字,并将这个字复制到程序计数器中,并覆盖PC 中原来的值。

操作系统管理硬件

文件是对I/O 设备的抽象,虚拟内存是对主存和磁盘I/O的抽象,进程则是对处理器、主存、I/O的抽象。
进程
进程是操作系统对一个正在运行的程序的一种抽象,并发是指一个进程的指令和另一个进程的指令是交错执行的

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

线程
虚拟内存
虚拟内存是一个抽象概念,它为每个进程都提供了一个假象,即每个进程都在独占地使用主存。

file

  • 程序代码和数据:对所有进程来说,代码是从同一固定地址开始,紧接着的是和C全局变量相对应的数据位置。
  • 堆:运行时堆,代码和数据区一开始就被指定了大小,堆可以在运行是动态的扩展和收缩。
  • 共享库
  • 栈:位于用户虚拟地址空间顶部的是用户栈,编译器用来实现系统调用,每次我们调用一个函数,栈就会增长,每一个函数返回时,栈就会收缩。
  • 内核虚拟内存:为内核保留。

    Amdahl 定律

    当我们对系统某个部分加速时,其对整个系统的影响取决于该部分的重要程度和加速程度。
    file
    系统某部分所需执行时间与该时间的比例为阿尔法,而该部分性能提升比例为k

    并发和并行

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

    线程级并发
    指令级并发
    单指令、多数据并行

    程序结构和执行

    信息的处理和表示

    大小端

    某些机器选择在内存中按照最低有效字节到最高有效字节的存储顺序,最低有效字节在最前面的称为小端(little endian).另外一些机器选择在内存中按照最高字节到最低有效字节的顺序存储,最低有效字节在后面的称为大端(big endian)
    假设一个类型为 int 的变量 x 的地址为 ox100 ,它的值为 ox01234567.
    ox100 0x101 0x102 ox103
    大端法: 01 23 45 67
    小端法: 67 45 23 01
    大多数 Intel 兼容机都只使用小端模式, IBM 和 Oracle 大多数机器使用大端模式。需要机器支持双端法。

从某个文件中摘出了下面针对 Inter x86-64 处理器的机器级代码的文本表示:

4004d3: 01 05 54 0b 20 00 add %eax,ox200b43(%rip)
十六进制串 01 05 54 0b 20 00 是一条指定的字节级表示,这条指定是把 一个字长的数据追加到另一个值上,该值的存储地址由 ox200b43 加上当前 程序计数器的值得到,当前程序计数器的值即为下一条将要执行指令的地址,

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 4

太过简单了,比如讲讲CPU、内核啥的

5年前 评论

你这是把关键字拿出来复制了一遍吗?
深入理解计算机系统是一本事无巨细的计算机字典,想听的是你自己的讲解,如果是照搬其实不必要贴出来的.

5年前 评论

楼主看这里

http://notes.lzis.me/books/2

哈哈~~

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!