-
Fuchsia 用户程序的运行过程?
musl for fuchsia: https://github.com/PanQL/zircon/tree/master/third_party/ulib/musl
-
入口点在哪里?内核怎样传递参数(args,envp,vdso)?
-
在 main 前后,libc 进行哪些初始化/收尾工作?
-
🚧vdso 数据布局什么样?如何进行 syscall?
-
-
用户程序能看到哪些内核对象?
-
内存:section,VMAR,VMO 的关系?
-
进程:Job,Process,Thread 的关系?
-
IPC:Socket,Channel,FIFO 都是啥?
-
同步:Futex,和 Linux 是否一样?
-
信号:Signal,Port?
-
权限:Capability?
-
最好能配合实际程序解释。
-
Zircon 如何启动第一个用户程序?
-
✅userboot 保存在哪里?
源码位于kernel/lib/userabi/userboot
编译时内嵌在内核中,运行时无需解析 ELF 头
-
userboot 的内存布局是怎样的(链接脚本)?
建立了哪些 VMAR,VMO?
-
Bootstrap channel 如何建立?传递了哪些信息?
-
如何进入用户态?
-
-
用户程序如何启动其它程序?
-
如何创建新进程并获得 channel?
-
channel 的工作原理是什么?
-
通过 channel 传给新进程哪些东西?
-
新进程启动后如何处理 channel 传来的对象?
-
-
从 userboot 到 sh,中间经历了哪些过程?
-
bootfs 是什么?存在哪儿?里面有什么?
-
🚧userboot 做了什么事情?
https://github.com/PanQL/zircon/blob/master/kernel/lib/userabi/userboot/start.cc
-
🚧启动了哪些服务进程?它们都干啥的?
devmgr, devhost, svchost, fshost, appmgr, sysmgr?
userboot 根据 kernel 传来的 cmdline 中的
userboot.root
参数,决定下一步启动哪个进程。它在BUILD.gn中被设置为bootsvc
。 -
这些服务进程用到了哪些 syscall?
-
-
驱动程序是如何工作的?
-
谁来完成设备探测和发现?
-
需要用到哪些内核对象?
-
内核如何保证请求映射的物理地址合法?
-
如何向内核注册 IRQ?内核如何处理 IRQ?
-
-
用户程序如何访问文件?
-
都经过哪些服务进程?POSIX API -> VFS -> ?FS -> BlockDriver?
-
各个进程之间的通信接口是什么?
-
内核如何高效调度这些进程?
-
-
ZirCore 的设计方案?
-
rCore 的哪些模块可以重用?
-
需要补充实现哪些内核对象?
-
milestone?时间表?这学期能不能造出来!?
-
x. Zircon中多核是如何协同工作的?boot时的情况?ipi?