计组、操作系统、编译原理在奕行智能二面的时候被问烂了,几乎是完全答不上来
计划是看CSAPP,短期内临时补充薄弱的体系结构基础知识,避免再次被问烂掉,长期上作为ics基础为学习os和编译原理,搓riscV cpu和编译器提供知识储备。
指令集的计划选riscV,毕竟趋势摆在这里。
至于编译方面,暂时还很难确定要做什么,还得再看看,等快速的补完基础再说。
因为是个人笔记,仅给自己复习用,所以我只记比较生疏/不常见的定义,熟悉的完全不会提及。
总线,字(word)。字节数(字长) 32/64
I/O设备 通过控制器/适配器与IO总线相连。
主存 由一组动态随机存取存储器(DRAM)构成。
处理器
- 大小为一个字(word)的寄存器,程序计数器pc,指向主存中的某条机器语言指令。
- 加载、存储、运算(ALU)、跳转
- cache(/kæʃ/),高速缓存,使用静态随机访问存储器(SRAM)
存储器层次结构:寄存器,L1高速缓存,L2,L3,主存,本地二级存储,
虚拟内存是对主存和磁盘I/O设备(文件)的抽象表示,进程是对处理器+虚拟内存的抽象表示。(面试被问到,p都没学过的我还以为是相对于本地二级存储空间的虚拟内存,给面试官整无语了)
进程是操作系统对一个正在运行的程序的抽象。单CPU通过处理器在进程间切换保证多个进程同时执行:上下文切换。
保持跟踪进程状态的信息即上下文。包括PC、CPU寄存器、主存中的内容。
进程间的转换由内核控制。
一个进程由多个线程作为执行单元组成。每个线程运行在进程的上下文中,共享同样的代码和数据。线程比进程更容易共享数据。
虚拟内存使得每一个进程使用同样的内存,成为虚拟地址空间,地址从低到高分别为
- 程序代码和数据
- 只读
- 读写
- 运行时堆(运行时由malloc创建)
- 共享库,例如C标准库,数学库
- 用户栈,编译器用它实现函数调用,调用函数时增长,返回时收缩。
- 内核虚拟内存,不允许应用程序操作,必须调用内核。
文件就是字节序列,是对I/O设备的抽象