LJ

Results 12 comments of LJ

不会收费。

@ResolveWang 中篇正在创作中。已经完成了一大半。最近几天能够发布。

各位稍安勿躁啊,近期一定会更新上来,就差最后两节一直没收尾。。。

👍👍 只是时间比较紧张。

中篇写了80%,一直搁置了,抽时间补完了发出来。 当时是3.6版本,现在已经出了3.9了,得看看有没有差异更新一下内容。

嗯。昨天刚忙完 PyCon,争取最近一两周之内会将中篇更新上来。

@howie6879 《以史为鉴: 30分钟理解 Web 核心技术体系》

@SummerVibes SBI 是 RISC-V Supervisor Binary Interface 规范的缩写,OpenSBI 是RISC-V官方用C语言开发的SBI参考实现;RustSBI 是用Rust语言实现的SBI。 BIOS 是 Basic Input/Output System,作用是引导计算机系统的启动以及硬件测试,并向OS提供硬件抽象层。 机器上电之后,会从ROM中读取引导代码,引导整个计算机软硬件系统的启动。而整个启动过程是分为多个阶段的,现行通用的多阶段引导模型为: ROM -> LOADER -> RUNTIME -> BOOTLOADER -> OS Loader 要干的事情,就是内存初始化,以及加载 Runtime 和 BootLoader...

@wangzhankun > 特权级的机制应该是操作系统实现的吧?对CPU而言,它看到的是源源不断的指令。如果是实现了特权级转换的话,那么一些系统调用应该也是已经实现了吧?那么再这种情况下直接调用系统函数也是可以的呀。据原文所述: > > > 但目前我们所选的目标平台不存在任何操作系统支持,于是 Rust 并没有为这个目标平台支持完整的标准库 std。类似这样的平台通常被我们称为 裸机平台 (bare-metal)。 > > 那么既然没有操作系统的支持,也就不存在特权级的转换吧? 请阅读一下CPU手册吧。特权级别是CPU内置的实现,它通过识别指定寄存器上的标志位,来确定当前应该处于何种特权级别,而从硬件电路的实现上,就可以使某些机器指令失效或生效。 在某级别发生的异常、中断,只可以在该级别,或该级别更高的级别中去处理,比如U-mode的异常和中断可以在U-mode下自己解决,自己解决不了就可以交给S-mode下的操作系统去解决。而操作系统级别发生的异常和中断,只可以在S-mode和M-mode中解决。 -------------------------------------------- 再回答一下你更前面的疑问: > 想问一下,程序不是可以直接编译成汇编语言吗?直接根据目标平台生成对应的汇编不可以吗?即使是调用了系统函数也是可以直接在裸机上运行吧? 既然是裸机,那根本不存在操作系统,也就不存在系统函数,所以也就没有“即使调用了系统函数也可以在裸机上直接运行”的说法。 Rust、C等编程语言的编译器,是可以把源代码经过编译、汇编、链接然后生成目标平台的机器码的(注意,是机器码,不是汇编程序)。只有01二进制的纯机器码才可以直接被高低电平表示,然后输入CPU,CPU内的电路就根据这些高低电平开始工作了。 真正从0编写操作系统,是少不了要写汇编代码的,要把系统的启动引导过程都实现(就不止是CPU自己上电了这么单一的事情),然后才是把控制权移交到OS层。