我想要进行内核编程,主要是为了更多地了解内核编程,而不是尝试创建自己的操作系统或任何东西。
但我很困惑,甚至我需要编程的语言来做这个,更不用说什么IDE(如果有的话)&我可以使用编译器吗?
我想尝试与Unix内核进行交互(以便Linux内核正确并且这是一个混合内核吗?)或Windows 7内核(这是混合内核不是吗?)旧版本的窗户是整体式的?)。
如果我想与上面提到的内核进行交互,我应该使用哪种语言&我可以下载什么编译器(& IDE)来运行我的代码?
我是否会考虑使用c(我已经做了很多win32编程,所以我习惯于c& c ++)或汇编为此?你也知道任何与这些内核之一进行交互的教程吗?
答案 0 :(得分:11)
这是内核,而不是内核。
Linux内核用C语言编写。几乎所有流行的操作系统内核都是用C语言编写的。
您应该从linux内核开始,因为我假设您无法访问Windows内核源代码。转到http://www.kernel.org并下载它们。看看他们。您也可以在包中找到文档。
所有这些信息也可以在Google上轻松找到。
答案 1 :(得分:3)
所有取决于'与内核交互'的含义。 UNIX世界中最常用的内核用户界面是对文件进行操作的基本系统调用(打开,读取,写入)(包括/dev
中的设备节点和/proc
中的{特殊文件'和{几乎在任何语言中都可以使用{1}}(/sys
是与内核的交互,因此shell的语言非常好,可以与内核进行交互)。
大多数低级系统调用也可以直接在大多数语言中使用:cat /dev/random
,ioctl
,套接字API等,但使用这些系统调用时内部结构(最初定义在内部结构中)可能会变得棘手C语言)正在使用中。
如果要直接调用系统调用(而不是libc包装器),您的选择通常是C,C ++(甚至不与标准库链接)或汇编程序。但是,即使是锻炼,这种方式也没什么意义,除非你想写自己的“libc”或其他东西。
首先确定您的目标是什么以及您想要什么样的“互动”,然后选择最简单的解决方案(您知道的高级语言)。我经常使用Python自己“与内核交互”。
答案 2 :(得分:2)
Linux Device Drivers是开始学习内核编程的好点。