什么语言允许我与OS的内核进行交互

时间:2011-08-11 10:40:58

标签: c linux assembly linux-kernel kernel

我想要进行内核编程,主要是为了更多地了解内核编程,而不是尝试创建自己的操作系统或任何东西。

但我很困惑,甚至我需要编程的语言来做这个,更不用说什么IDE(如果有的话)&我可以使用编译器吗?

我想尝试与Unix内核进行交互(以便Linux内核正确并且这是一个混合内核吗?)或Windows 7内核(这是混合内核不是吗?)旧版本的窗户是整体式的?)。

如果我想与上面提到的内核进行交互,我应该使用哪种语言&我可以下载什么编译器(& IDE)来运行我的代码?

我是否会考虑使用c(我已经做了很多win32编程,所以我习惯于c& c ++)或汇编为此?你也知道任何与这些内核之一进行交互的教程吗?

3 个答案:

答案 0 :(得分:11)

  1. 这是内核,而不是内核。

  2. Linux内核用C语言编写。几乎所有流行的操作系统内核都是用C语言编写的。

  3. 您应该从linux内核开始,因为我假设您无法访问Windows内核源代码。转到http://www.kernel.org并下载它们。看看他们。您也可以在包中找到文档。

  4. 所有这些信息也可以在Google上轻松找到。

答案 1 :(得分:3)

所有取决于'与内核交互'的含义。 UNIX世界中最常用的内核用户界面是对文件进行操作的基本系统调用(打开,读取,写入)(包括/dev中的设备节点和/proc中的{特殊文件'和{几乎在任何语言中都可以使用{1}}(/sys是与内核的交互,因此shell的语言非常好,可以与内核进行交互)。

大多数低级系统调用也可以直接在大多数语言中使用:cat /dev/randomioctl,套接字API等,但使用这些系统调用时内部结构(最初定义在内部结构中)可能会变得棘手C语言)正在使用中。

如果要直接调用系统调用(而不是libc包装器),您的选择通常是C,C ++(甚至不与标准库链接)或汇编程序。但是,即使是锻炼,这种方式也没什么意义,除非你想写自己的“libc”或其他东西。

首先确定您的目标是什么以及您想要什么样的“互动”,然后选择最简单的解决方案(您知道的高级语言)。我经常使用Python自己“与内核交互”。

答案 2 :(得分:2)

Linux Device Drivers是开始学习内核编程的好点。