回顾

程序=状态机 但是该模型(c语言模型)不调用库函数都无法终止 系统调用 上帝祈祷 操作系统,整个学期围绕。

  • 一个重塑全人类的prompt:我在做[X],如果你是专业人士,有更好的方法和建议吗?尽可能全面。
  • gdb -tui

硬件视角的操作系统

  • 一句话:硬件根本不知道有没有操作系统,无情的执行指令的状态机。
  • 抽象:下层不需知道上面需要怎么用。
  • 虽然看不见,但是运行了。操作系统就是一个普通的二进制程序。操作系统启动后,操作系统变成了一个中断处理程序

计算机系统的状态机模型

  • 重要:开始状态;得有一个初始状态。

  • 电路里的rest信号。;重置到确定的状态,寄存器的值不定。

  • 补充:硬件连接到外部。特殊指令,in 从外面的线;out;risc-v memory-mapped i/o 内存映射 设备上的寄存器

  • 中断,奠定了os霸主地位。。。写死循环。interrupt线,连一个定时器,每隔一段时间拉一下电平,拉之后。处理器收到这根线,跳转到中断程序,相当于强制跳转

  • reset line 一旦到了正确的电平。。。

例子

GPIO

gpio_set_value(GPIO_23,1); 导弹发射器,点火装置,电容电量释放。

初始状态

早期软硬件不可靠。老式机器经常死机。状态机重置为初始状态。rest

risc-v:百花齐放 百家争鸣 百万碎片

所有寄存器Undefined 除了x0,最小电路。除了少数 csr control state register.软件能做的硬件绝对不会做

  • qemu-system-aarch64 -machine help

状态迁移

硬件 做三件事 执行指令(如果有多个处理器,可以想象成每次选择一个处理器执行一条指令) 响应中断(被动的跳转) 输入输出(load store 特定地址 设备线 与计算机系统外交换数据。类似于系统调用的访问外部机制)。


固件

系统厂商的代码固定在计算机系统里,rom,cpu reset后执行的地方。现在可以直接升级固件了。

它的功能

  • 运行程序前的计算机系统配置:硬件在不在,cpu电压,内存,自定义设置:开机密码

  • 加载os

  • bios:根据用户输入加载os,ibmpc ,dos时代不会退出 常驻,还会提供绘图等功能。

  • uefi:unified extensible firmware interface 更加丰富的支持,指纹锁 山寨网卡pxe网络启动 usb蓝牙转接器连接的蓝牙键盘

  • 理解:一个小的os,复杂的设备;提供硬件的抽象,软件的运行。电竞的主板,,带的bios支持鼠标,炫酷界面。

  • 经典笑话 no keyborad found press enter continue.有键盘才能开机,台式机。

  • 固件更新不当烧成砖,,

  • 写保护打开。历史上影响最大的病毒之一:cih-1.4.asm 破环电脑硬件,打开firmware的写保护,两个字节的跳转写到firmware,开不了机。

  • 破环的另一面,计算机更安全。现在只允许写入信任的固件固件更新。

从固件到操作系统

40年之前

软盘 512字节 MBR master boot record 主引导扇区,如果这512字节最后是0x55,0xAA,就认为这块磁盘是可以引导启动的

两个软盘驱动器,两张软盘,智能识别哪一个是可以启动的。 0101;1010;交错的01, firmware(bios)会加载它到0x7c00.固件和操作系统的合同签订好。 先打出ebfe; 即为 jmp . 死循环 printf"\xeb\xfe"; cat /dev/zero |head -c 508;printf "\x55\xaa") >a.img

“ 用16进制查看器查看它

  • 去反思 习惯 提出更多问题
  • watch point 非常有用 看是谁把7c00它加载了
  • lstblk
  • 挂载 双击分区,efi目录
  • 还可以定制主题 计算机的世界里没有任何魔法open .在文件目录中打开 命令
  • umount /mnt
  • make -nBmakefile 同样是状态机 文件系统上的文件
  • 关于makefile的阅读
  • 把所有的空格替换成换行
  • unix philosophy