Blog


深入理解计算机系统(第三版)/ CSAPP 杂谈,第9章:虚拟内存

  • 所有程序共享内存资源,这容易造成很多问题。虚拟内存用于管理内存,协调各程序之间的内存占用和释放,但对程序来说无感知。
  • 物理寻址流程:CPU 执行加载指令时,生成一个物理地址,通过内存总线传递给主存。主存取出物理地址对应的内存,并返回给 CPU,CPU 将其存放在寄存器中
  • 虚拟寻址流程:CPU 执行加载指令时,生成一个虚拟地址,通过内存总线传递给主存,主存将其转换成物理地址。主存取出物理地址对应的内存,并返回给 CPU,CPU 将其存放在寄存器中。转换过程叫做地址翻译 address translation。
  • address translation 需要硬件和操[……]

Read more




深入理解计算机系统(第三版)/ CSAPP 杂谈,第8章:异常控制流

  • 异常控制流(Exceptional Control Flow,ECF)是操作系统为应用提供的一种访问处理器资源之外的能力,对应于嵌入式和CPU等硬件的中断概念。
  • 系统调用,进程管理,并发,IO 访问都属于异常控制流。

  • 异常(exception)是控制流的突变,用来处理处理器状态中的某些变化。异常通过事件(event)触发,有专门的异常表(exception table)用于事件的跳转。

  • 每种类型的异常都有唯一的异常号(exception number),有可能是处理器设计时分配的零除,缺页,内存访问违例,断点和算术运算溢出;也可能是操作系统分配的系统调用,外部IO设备信号。操作系统的异常号是[……]

Read more




深入理解计算机系统(第三版)/ CSAPP 杂谈,第7章:链接

  • 链接器主要完成符号解析和重定位两个任务。
  • 目标文件有三种形式:可重定位目标文件(.so);可执行目标文件(.exe),共享目标文件(.so)。

  • linux x86-64 的可重定位目标文件使用 ELF 格式。ELF 头的前 16 字节描述文件对应系统的字的大小和字节顺序,后面还有头的大小,目标文件类型,机汽类型,各 section header 的文件偏移,以及它们的大小和数量。

  • 一般 ELF 包含以下几种 section:

    • .text:可执行机器码
    • .rodata:只读数据,如字符串常量和 switch 跳转表
    • .data:已初始化的全局和静态变量
    • :bss:未初始化或初始化为 0 的[……]

Read more




深入理解计算机系统(第三版)/ CSAPP 杂谈,第6章:储存器层次结构

  • SRAM 贵,稳定,集成度低,用于高速缓存存储器
  • DRAM 较便宜,不稳定,集成度高,需要定时重新读写和纠错码,用于主存和帧缓冲区

  • DRAM 的存储单元(超单元)以二元阵列排列而不是线性排列,这样可以节省管脚。请求某个超单元先发送行,此时会将行缓存到内部行缓冲区;然后发送列,此时将该行该列的超单元数据返回给请求者。传统的 DRAM 会将剩余的数据丢掉,而 FPM DRAM会缓存整行。这两种DRAM早就已经停产了,现在主流是 DDR3/4 SDRAM。

  • 可擦写编程器 EEPROM 掉电数据不丢失,主要用于存储数据,如闪存(U盘)

  • 一般的程序都具有良好的局部性,即访问的数据都是在一个较密集的区间[……]

Read more




Java右移每32位(64位)循环

  • 2018年11月15日
  • Java

结果:

而如果是int, short, byte:

结果是:

  • 为何出现这样的情况?
  • 猜测是机器码只会截取低8bit/4bit作为移位量。(需反编译,待续)

  • 为何int short boolean和long不一样?

  • Java运算时默认将操作数扩展为int(long位数大于int所以不会变化),所以int,short,bo[……]

Read more




深入理解计算机系统(第三版)/ CSAPP 杂谈,第3章:程序的机器级表示

  • x86-64寄存器起名:8位,%al;16位,%ax;32位,%eax;64位,%rax
  • x86-64寄存器作用:

  • %rax: 返回值
  • %rbx: 被调用者保存
  • %rcx: 第4个参数
  • %rdx: 第3个参数
  • %rsi: 第2个参数
  • %rdi: 第1个参数
  • %rbp: 被调用者保存
  • %rsp: 栈指针
  • %r8: 第5个参数
  • %r9: 第6个参数
  • %r10: 调用者保存
  • %r11: 调用者保存
  • %r12: 被调用者保存
  • %r13: 被调用者保存
  • %r14: 被调用者保存
  • %r15: 被调用者保存

  • 操作数分三种:立即数,寄存器,内存引用

  • 汇编立即数表示:以$开头,跟着标准C表示法,如$-577,[……]

Read more




深入理解计算机系统(第三版)/ CSAPP 杂谈,第2章:信息的表示和处理

  • gcc编译可以用 -std 和-ansi 来选择C语言规范版本,默认-std=c89,外加一些C99,C11特性
  • 大小端可通过 int* 强转为 char* 来判断得出

  • 一般C语言的 char 范围是-128~127,但其实C语言规范只要求最小的可取值范围为-127~127。类似还有 short,int,long,不过它们字节数要求是16位机器的要求。int32_t,int64_t C语言规范要求和C语言实现基本一致。#无用但有趣的冷知识

  • #define INT_MAX 2147483647
    #define INT_MIN (-INT_MAX – 1)
    这里没有简单地[……]

Read more




深入理解计算机系统(第三版)/ CSAPP 杂谈,第1章:计算机系统漫游

本书第1章向我们介绍了信息的定义,以及程序是如何运行在计算机上的。

信息就是位+上下文

信息的本体是一连串的0101010101的bits,但是bits可以被解析为不同的含义,如何被解析就取决于上下文。

举个生活中的例子。“你好烦啊”如果是在一对情侣的温馨时刻中出现,那这句话可以被理解为“你个烦人的小妖精搞得我不要不要的”。而如果出现在母亲指责孩子,并且喋喋不休的情景下孩子的顶嘴,就应该理解为“你不要再说了我听不进去”。这就是上下文的作用,同样的内容,会被解析为不同的信息。

本文用到的例子是一串bits,如果代码想解析你为无符号整数,那这串bits就是正整数的信息;如果想解析为浮点数,[……]

Read more






区块链基础知识介绍ppt

PPT 为公司内部的知识分享而做,从软件和架构的角度介绍了区块链的基本结构和运行方式。因为公司是商业密码公司,所以密码学的相关知识没有在 PPT 中介绍

区块链基础知识-陈浩

版权所有,转载请注明出处:
https://sickworm.com/?p=432