回顾
程序=状态机 但是该模型(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 /mntmake -nBmakefile 同样是状态机 文件系统上的文件- 关于makefile的阅读
把所有的空格替换成换行
- unix philosophy