博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux 0.11 源码学习(六)
阅读量:7174 次
发布时间:2019-06-29

本文共 857 字,大约阅读时间需要 2 分钟。

main.c

main函数其实是内核的初始化,如果把内核功能比作业务软件的话,就相当于是业务的初始化,从该文件的文件夹归属(init文件夹)也可以看出这一点。

main主函数很短,从代码中可以基本看出整个内核的功能模块,如下:

void main(void) {                //略去一部分初值设置    mem_init(main_memory_start,memory_end);//内存管理初始化    trap_init();//陷阱门初始化    blk_dev_init();//块设备驱动初始化    chr_dev_init();//字符驱动初始化    tty_init();//tty初始化    time_init();//时钟初始化,通过读PC的CMOS    sched_init();//调度模块初始化    buffer_init(buffer_memory_end);//文件缓存系统初始化    hd_init();//硬盘初始化    floppy_init();//软盘初始化    sti();//中断开启    move_to_user_mode();    if (!fork()) {        /* we count on this going ok */        init();//fork一个初始化进程,在该初始进程中会另外起一个进程,该进程完成shell功能,循环等待用户输入。开启shell的前提是要能打开设备tty0.    }    for(;;) pause();

注:在linux中fork一个进程和unix是一样的,子进程会拷贝父进程的上下文、代码段。因此虽然代码文件的角度看似乎是顺序执行的,但在内核中如上述中的if(!fork())和init()是在不同的进程中执行的。

转载于:https://www.cnblogs.com/Fredric-2013/archive/2013/05/04/3058936.html

你可能感兴趣的文章
排序 遍历
查看>>
第二次作业
查看>>
Mysql主从复制
查看>>
高斯消元法解非奇异线性方程组的MATLAB程序
查看>>
CSS3 3d环境实现立体 魔方效果代码
查看>>
全面总结sizeof的用法(定义、语法、指针变量、数组、结构体、类、联合体、位域位段)...
查看>>
python2升级到python3
查看>>
做好该做的把未来交给明天
查看>>
脚本里添加crontab的方法
查看>>
configure:error: Package requirements (libffi >= 3.0.0) were not met
查看>>
java 抽象类与接口的区别
查看>>
Linux驱动模块编译模板
查看>>
我的友情链接
查看>>
MySQL 5.6.12 安装
查看>>
MCSA&MCP认证证书
查看>>
我的友情链接
查看>>
进阶篇第五期:UIScrollView的那点事儿
查看>>
CSS系列:CSS中盒子模型
查看>>
2017网络安全产业研究报告学习笔记
查看>>
AES&FEC GPON中的加密与纠错
查看>>