32、系统操作与I/O子系统详解

系统操作与I/O子系统详解

1. 系统启动与进程初始化

系统启动时,通过机器汇编执行 /sbin/init 。相关代码 icode 定义在 misc.s 文件中。执行 /sbin/init 的过程如下:
1. 分配并初始化一个地址空间数据结构,用于保存新进程的用户地址空间(参考 as_alloc() )。
2. 分配一个文本段,并将其映射到进程的地址空间,用于保存代码(参考 as_map() )。
3. 将 icode 从已知的固定虚拟内存地址复制到新创建的文本段。
4. 最后,分配一个栈段并将其分配给进程的地址空间。

当进程 1 下次切换使用 CPU 时,代码将在用户模式下执行。运行时,它首先会构建一个运行时栈,用作 exec 新程序映像的 argv argc envp argv[0] 保存字符串 /etc/init ,该字符串硬编码在 icode 中(在文件系统中, /etc/init 符号链接到 /sbin/init )。然后, icode 调用 exec() ,并使用在运行时栈上构建的参数。从那时起,进程 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值