54操作系统与计算机原理

计算机体系原理

从算术运算1+2开始

汇编语言程序 对应的机器指令 对应的操作
MOV AL, 1 10110000 00000001 将立即数1传送到累加寄存器AL中
ADD AL, 2 00000100 00000010 计算两个数的和,结果存放到AL中
MOV [0008], AL 10100010 00001001 00000000 将AL中的数传送到地址单元0008

类比:跳来跳去的性格测试题

  1. 公交车靠站,车上已经挤满了人, 下一班车要15分钟后才到,你会怎么办呢?
    不想再等下去了,再挤也要上车——请 答第2题
    人太多了,还是等一班吧! ——请答第 4题
  2. 旅行途中的你突然头很疼,这时正 好有热心人拿药给你吃,你会如何抉择呢?
    说声谢谢后马上吃药一请答第6题
    找理由拒绝对方的药——请答第3题

程序的装载与执行

  • 物理和虚拟寻址
    • 每个程序都有自己独立的虚拟地址空间
    • 和其他程序互不干扰
    • 可能方便地放在屋里内存的任何区域
  • 程序的组成
    • 《链接、装载与库》

程序的分时复用调度

  • 每个程序轮流占用CPU的时间片(进程/线程)
  • 何时放弃CPU?
    • 程序的时间片到了
    • 请求慢速设备
    • CPU需要响应中断
  • 上下文切换
    • 上下文context :程序运行的环境(寄存器、PC)
    • 放弃CPU时,保存上下文
    • 拥有CPU时,恢复上下文

什么是操作系统

  • 欺上瞒下:
    • 对上层提供统一的API,简化应用开发逻辑
    • 对下层通过硬件驱动提供兼容性
  • 例如:
    • 通过Windows的CreateProcessA方法创建新的进程
    • 通过Unix的fork系统调用创建新的进程

线程与进程

  • 共同点:
    • 都拥有独立的PC,可以独立地执行程序(性格测试题?)
    • 在Linux上甚至用同一种数据结构处理进程和线程
  • 进程:拥有独立的内存地址空间、文件等资源
  • 线程:和其他线程共享内存地址空间、文件等资源

文件系统与IO

  • 文件的本质是字节流
  • 文件与文件指针
  • 缓存与缓冲区

从源代码到ast (编译器前端)

  • 源代码-〉tokens
  • tokens -> AST
  • 让我们看看AST长什么样子

从AST到目标代码

  • AST ->字节码
  • AST ->平台相关的目标代码
    (编译器后端)
点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注