从根本上讲,例程的命名没有什么特别的
main()。如上所述,它
main()充当可执行加载模块的入口点。但是,您可以为装入模块定义不同的入口点。实际上,您可以定义多个入口点,例如,引用您喜欢的dll。
从 *** 作系统(OS)的角度来看,它真正需要的只是充当设备驱动程序的代码的入口点的地址。当需要设备驱动程序对设备执行I /
O时, *** 作系统会将控制权传递给该入口点。
系统程序员定义(每个OS都有自己的方法)设备之间的连接,用作设备驱动程序的加载模块以及加载模块中入口点的名称。
每个 *** 作系统都有其自己的内核(显然),并且某些 *** 作系统可能/可能以它开始,
main()但是我很惊讶地发现一个使用
main()了非简单内核(例如UNIX)的内核!在编写内核代码时,您已经远远超出了将每个模块命名为的要求
main()。
希望这可以帮助?
从Unix版本6的内核中找到此代码段。您可以看到,
main()这只是另一个程序,试图开始!
main(){ extern schar; register i, *p; updlock = 0; i = *ka6 + USIZE; UISD->r[0] = 077406; for(;;) { if(fuibyte(0) < 0) break; clearsig(i); maxmem++; mfree(coremap, 1, i); i++; } if(cputype == 70) for(i=0; i<62; i=+2) { UBMAP->r[i] = i<<12; UBMAP->r[i+1] = 0; } // etc. etc. etc.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)