免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2413 | 回复: 2
打印 上一主题 下一主题

问一哈子,我粗略阅览了一下linux 2.6内核,发现有好几个main.c 这是咋回事呢? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-07 21:20 |只看该作者 |倒序浏览
并且我发现 很多main.c里并没有 main()函数,这又是咋回事呢?

linux 在运行时,是从哪个地方开始的呢?不是从main()开始的么?

论坛徽章:
0
2 [报告]
发表于 2008-05-14 19:29 |只看该作者
linux的内核,不同于应用程序,内核执行一些核心的任务如进程调度,内存管理,文件系统管理等。通常我们所说的main函数,其实也并不是最终的程序开始的地方,在执行main函数之前,先要初始化c运行库,然后由c运行库调用main函数,在linux下就是kernel首先装载glibc,然后由glibc调用main函数。这是我个人的理解,如果不正确,还请高手指正。

论坛徽章:
0
3 [报告]
发表于 2008-05-20 16:13 |只看该作者
我看了 陈莉君的 一本书《深入linux内核》

其中第十三章介绍了,linux是如何启动的,在“进入操作系统” 一节中,计算机进行的步骤如下:

1. Setup.s 用来对已经调入内存的操作系统代码进行检查;获取内存信息,设置键盘响应速度;设置显示器基本模式;获取硬盘信息,检测是否有PS/2鼠标。然后由实模式进入保护模式;

2.Head.s 用来 页初始化,中断向量表,全局描述符表等,最后将堆栈中的main 程序的地址弹出,调用main.c;

3.main.c
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP