关于写操作系统很迷惑的问题,请大家指教!
1.Linux操作系统大部分是用C 语言写的(对不对?),那C语言库函数哪些可以调用,哪些不可以调用?我认为像open打开一个文件这样的函数是不能调用的,因为调用open打开一个文件会发生系统调用,除非自己写这个函数,对吗?2.当我用一个编辑器在编辑一段Linux汇编代码时,这段代码有需要在Kernel mode运行的指令,那我想运行一下这段代码那该怎么办?因为我便记者段代码时肯定在User mode。
3.读Linux的汇编源码时需要汇编知识,请问我在那儿能找到这些知识?比如arch\i386\kernel\head.s中有ENTRY(gdt_table)、.org 0x5000等是什么意思?哪儿有讲这些汇编知识的资料?
谢谢各位!!! 1,C语言库函数正常情况下都可以使用.open不是库函数,是系统调用.系统调用本来就是提供给用户程序的,为什么不可以调用?
2,写成module
3,gas文档,有汇编语法的说明
http://www.gnu.org/software/binutils/manual/gas-2.9.1/html_mono/as.html 楼上误解了他的意思了,他意思是说:写操作系统的时候能否使用open这样的函数。我认为这样:你写的操作系统本身应该是提供open这样的系统调用的,可你的操作系统要在完全初始化后(驱动加载)其他程序才能调用open这样的函数。当然open是要你自己写的,内核代码中不应该有open! 呵呵 :mrgreen: _z_, _z_, 我是新手,不要笑话我呦!我读代码的时候看到了printf,差点没吓死我。往哪输出啊!。后来我看到了的实现,才缓过气来。 区分user mode 还是 kernel mode不是看你编辑代码是在什么模式的。
是看你的代码运行时状态标志时kernel mode 还是 user mode。
你可以通过自陷指令进入内核态的。
2.当我用一个编辑器在编辑一段Linux汇编代码时,这段代码有需要在Kernel mode运行的指令,那我想运行一下这段代码那该怎么办?因为我便记者段代码时肯定在User mode。
页:
[1]