什么语言允许我与操作系统的内核进行交互

我希望在内核编程方面有所作为,主要是为了更好地理解它,而不是试图创build自己的操作系统或任何东西。

但我很困惑,即使我需要编程什么语言来做到这一点,更不用说什么IDE(如果有一个),我可以使用编译器?

我想尝试与Unix内核进行交互(因此Linux内核是正确的,这是一个混合内核?)还是Windows 7内核(这是一个混合内核是不是?,旧版本的Windows是Monolithic? )。

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

我会考虑使用c(我已经做了很多的win32编程,所以我习惯c&c ++)或程序集? 你也知道有任何与其中一个内核交互的教程吗?

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

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

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

  4. 所有这些信息也可以很容易地在Google上找到。

所有这些都取决于“与内核交互”的含义。 UNIX世界中最经常使用的内核用户界面是对文件(包括/dev的设备节点和/proc “特殊文件”和Linux中的/sys上的基本系统调用(打开,读取,写入)以及这些几乎任何语言都可以使用( cat /dev/random是与内核的交互,所以shell是'语言足够和内核交互的')。

而且大多数较低级别的系统调用都可以在大多数语言中直接使用: ioctlfcntl ,套接字API等,但是当使用内部结构(最初用C语言定义)时,使用这些调用可能会变得棘手。

如果你想直接调用系统调用(而不是libc包装器),你的选择通常是C,C ++(甚至不与标准库链接)或汇编器。 但是,除非你想写自己的“libc”或其他东西,否则即使是运动,这样做也没什么意义。

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

Linux设备驱动程序是开始学习内核编程的好处。