Linux0.11 源码趣读
闪客
低并发编程公号作者
18650 人已学习
赠一得一
课程目录
已完结/共 22 讲
Linux0.11 源码趣读
15
15
1.0x
00:00/00:00
登录|注册

11|main方法:整个操作系统就三十几行代码

你好,我是闪客。
第一部分,我们通过一大堆讨厌的汇编代码,把进入 main 方法前的苦力工作都完成了。
我们的程序终于跳到第一个由 c 语言写的文件 main.c 中,这里有个名字叫做 main 的方法,写得非常精简,把操作系统的整个骨架都勾勒出来了。
第二部分,我们的主题是“大战前期的初始化工作”,学习重点就是 main 方法中的各种初始化函数,这些函数是操作系统各个模块得以运作的基础。
在详细分析这些函数之前,这一讲,我先作为“导游”,结合 main 方法的代码,带你建立初始化过程的整体印象。
// init/main.c
void main(void) {
ROOT_DEV = ORIG_ROOT_DEV;
drive_info = DRIVE_INFO;
memory_end = (1<<20) + (EXT_MEM_K<<10);
memory_end &= 0xfffff000;
if (memory_end > 16*1024*1024)
memory_end = 16*1024*1024;
if (memory_end > 12*1024*1024)
buffer_memory_end = 4*1024*1024;
else if (memory_end > 6*1024*1024)
buffer_memory_end = 2*1024*1024;
else
buffer_memory_end = 1*1024*1024;
main_memory_start = buffer_memory_end;
mem_init(main_memory_start,memory_end);
trap_init();
blk_dev_init();
chr_dev_init();
tty_init();
time_init();
sched_init();
buffer_init(buffer_memory_end);
hd_init();
floppy_init();
sti();
move_to_user_mode();
if (!fork()) {
init();
}
for(;;) pause();
}
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

文章标题为“main方法:整个操作系统就三十几行代码”,主要介绍了操作系统启动过程中的main方法的代码和功能。文章首先通过汇编代码和C语言文件main.c展示了main方法的代码,总共30几行,却包含了操作系统启动流程的全部秘密。主要分为四部分:参数取值与计算、表示初始化的init方法、切换用户态和死循环。其中,参数取值和计算包括根设备、设备信息和内存边界的计算;表示初始化的init方法包括内存初始化、中断初始化、进程调度初始化等;切换用户态部分将操作系统切换到用户态模式,并在新的进程中进行最终的初始化;最后,如果没有任务可以运行,操作系统会陷入死循环。文章强调了这几行代码蕴含着操作系统启动流程的全部秘密,并提到了后续学习的重点,即操作系统在内存中建立各种数据结构来实现管理功能。总体来说,文章通过简洁的代码分析和解释,让读者对操作系统启动过程有了整体印象,为后续深入学习打下基础。

该试读文章来自《Linux0.11 源码趣读》,如需阅读全部文章,
请先通过赠一得一解锁课程
赠一得一
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • 荒岛少年
    好耶,心心念念的第二季终于更新了,而且还是免费的,给作者一个₍₍Ϡ(੭•̀ω•́)੭✧⃛。
    2023-02-15归属地:江苏
    5
  • Dream
    打卡
    2023-02-22归属地:北京
    1
  • 陈国江
    打卡
    2023-02-16归属地:广东
    1
  • 浩仔是程序员
    打卡
    2023-02-15归属地:广东
    1
  • old
    打卡
    2023-10-25归属地:江西
  • Rain
    点赞
    2023-05-22归属地:陕西
  • ileruza
    你们都说打卡,我偏说沙发
    2023-02-26归属地:广东
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部