2017/5/15--计算机系统基础课堂笔记

  1. 字长
    等于寄存器的大小。
    等于CPU一次处理的二进制数位数。
    等于数据总线(DB)的大小

    • 一次性处理事务的一个固定的位组。 这个位组的长度就是上面的字长。
    • 字是单位,通常,送往了控制器的字就是指令。送往了运算器的字是数。
    • ARM中的字一般是32位。 x86中的字一般是16位。
  2. 数据总线和地址总线
    • 数据总线一次取数据的大小,也就是上面的字长。
    • 地址总线,由虚拟地址空间的大小决定,若是4G的虚拟地址空间,那么就有32位的地址总线。
  3. 数据总线和地址总线不一样大带来的问题
    x86下: 数据总线是16位。地址总线是20位。那么寄存器要如何放下地址?
    寄存器中的是有16位,左移4位,加上原来的16位。
    老师说:
    216×24+216
    216×24 段基址
    216 偏移

  4. 虚拟地址的处理
    虚拟地址分为逻辑地址、线性地址。
    逻辑地址是在分段情况下,对虚拟地址的称呼。
    逻辑地址在分段后,转成了线性地址。
    线性地址在分页后,转成了物理地址。

    2017/5/15--计算机系统基础课堂笔记_第1张图片

  5. ARM和x86的虚拟地址处理
    ARM:
    CPU出来32位的虚拟地址。
    2017/5/15--计算机系统基础课堂笔记_第2张图片
    x86:
    采用的是段页式的管理模式。
    虚拟地址出来的是48位的。
    前面的16位是段内偏移,加上段基址=> 页表基址
    页表基址和32位的虚拟地址 转换 物理地址 的过程和上面是一样的。

  6. TLB和cache

    • TLB中缓存的是物理地址,目的是减少访存次数,加速地址的转换。
    • cache中存放最近使用的数据和指令。
    • TLB的数据具有时间和空间的局部性。
    • cache中的指令只有时间上的局部性。
    • TLB存放物理地址,cache存放数据。
    • 一个物理地址根据映射模式来判断在cache的tag。
      cache格式
    • cache前置到TLB之前,缓存虚拟地址的数据。(讲道理,可以做,但老师不知道如何实现)
  7. CPU与核
    • 一个cpu有多个核。
    • 并行实现需要多核,当然也多CPU也可以满足。
    • 单CPU单核机 实现多任务,要通过os来实现,采用时间片的策略。
  8. 进程的创建过程
    一、分配进程空间
    继承父进程的空间,还有os上的copy-on-write等细节。
    一个进程的虚拟空间最上面是内核空间。
    2017/5/15--计算机系统基础课堂笔记_第3张图片
    二、修改页表
  9. 进程的切换
    1)老进程的PC等寄存器保存到PCB中。
    2)新进程的寄存器从PCB中加载
    3)新进程的CS(段址寄存器)从PCB的段基中取得。
    4)新进程的PS(页址寄存器)从PCB的页基中取得。

    中断处理就是进程切换的一种特例。
    中断:256个
    0~31:系统级中断
    32~255:用户级中断

    异常中断:不会回来继续执行,不需要保存现场操作。

  10. 习题一:
    问:x=96,y=33(均使用8位保存)。写出下列的计算结果(二进制、十进制)(注意计算时补码)。
    1)x+y
    2)-x-y
    答:1) 0110 0000 + 0010 0001 = 1000 0001(溢出、-127)
    2) 1010 0000 + 1101 1111 = 0111 1111(溢出、+127)

    扩展:计算机存在一种机制 (注意是存在)
    使用两位来表示符号、这样做的目的是便于判断是否溢出。
    使用00表示正、11表示负。在进行运算 的时候10表示负溢出。01表示正溢出。
    还是用上面的例子:
    1)0 0110 0000 + 0 0010 0001 = 0 1000 0001(正溢出)
    2)1 1010 0000 + 1 1101 1111 = 1 0111 1111(负溢出)

  11. 习题二:
    问:浮点数 (8FEFC000)16 (大端存储),采用IEEE754编码格式,转成10进制形式。
    答:先转成二进制格式1000 1111 1000 1111 1100 0000 0000 0000
    IEEE754中规定,高到低依次是:1位符号(s)、8位阶码(e)、其余的为尾数(f)。
    注意:

    • 阶码是移码,阶码要减去127。
    • 尾数被规格化,个位上非零的1没有存。
      公式 float=(1)s×(2)e127×(1+f)

      扩展:浮点数加减运算过程:
      1、对阶
      2、尾数加减
      3、规格化

  12. 习题三:unsigned int 和 int作比较
    unsigned int x = 10;
    int y = 11;
    if(x//do something 
    }

结果:在编译时,编译器会发出无符号和有符号比较的警告。
2017/5/15--计算机系统基础课堂笔记_第4张图片
且会把int向unsigned int 进行转化,符号位看作是数值位。

unsigned int x = 0;
int y = -1;

结果是y>x,哈哈~~

你可能感兴趣的:(课堂笔记,计算机基础知识)