用C语言编写的低级问题的示例解决方案

时间:2011-07-11 19:06:53

标签: c

有谁知道在哪里可以找到用C编写的低级/系统级应用程序的示例解决方案?一个非常好的网站或书籍推荐也很酷。

我已经学习了一些基础知识,但是希望在用C编写的真实解决方案的上下文中看到一些代码,特别是对于较低级别的问题。例如,Id'对如何在OS编程环境中使用C感兴趣。 C用于低级编程的一些领域是什么?

感谢。

4 个答案:

答案 0 :(得分:2)

我建议你学习Tanenbaum的MINIX3:http://www.minix3.org/

它是一个微内核架构,随着他的书(http://vig.prenhall.com/catalog/academic/product/0,1144,0131429388,00.html),它真的很有启发。

据我所知,研究Linux内核对于一个开始来说有点硬核;),从学术观点来看,微内核架构优于单片内核。

此外,与Linux内核不同,只需几千行代码,就可以在实际的时间表中使用它。

这是一个真正认真的项目,就我所知,欧盟赞助了一些百万美元。我想我在他的一次会谈中提醒他说。

你在那里运行了一个X-Server,一个gcc-toolchain etcpp。

玩得开心:)

编辑:当我阅读评论时,有人提到了Ruby解释器。它是用C和Ruby混合编写的,就se-radio.net的一集中提到的而言,它是非常好的源代码。虽然我不得不承认,我自己也没有调查过。如果您对Ruby也有兴趣,可能值得深入研究。

答案 1 :(得分:1)

我建议看一些(用你)用C编写的有趣的开源项目。例如,有busybox,这是一个在嵌入式设备上运行的软件,有许多较小的程序可供学习。例如,您可以在一侧获取telnet client的来源,在另一侧获取corresponding RFC。或者,对于更陡峭的学习曲线,您还可以尝试研究开源操作系统,例如Linux kernel(用于浏览的树here's)或BSD。它比busybox更复杂,但是如果你熟悉上下文,你仍然可以找到一些相当容易理解的部分。

答案 2 :(得分:1)

  • 研究Linux内核,可能与内核或设备驱动程序上的几本书中的一本相结合,将提供丰富的资料。其中大部分都是免费的。
  • W. Richard Stevens中的任何或所有书籍,通过网络堆栈的实现(TCP / IP Illustrated)或使用(UNIX网络编程)或UNIX环境中的高级编程一书。

如果您倾向于Windows,那么有几本好书,即使它们已经很老了,包括:

答案 3 :(得分:1)

我建议以下来源可能有趣r.e.从学习的角度来看操作系统。请注意,现代内核中确实存在许多进步:

其他想法:

  • The current grub stage 1 bootloader并不复杂 - 使用512字节很难复杂化。
  • Linux kernel module guide为您介绍构建内核模块。您可以尝试构建自定义但毫无意义的驱动程序,这些驱动程序可以向/dev/添加单词设备或将设备添加到/proc,并努力实现有趣的功能。人们已经在内核空间中实现了Web服务器......
  • 如果您想试验Windows内核,请使用Native NT applications。我首先打印一个无意义的启动消息,然后向上移动到驱动程序。

除此之外,很难说明你想去哪里。系统级别是一个广阔的空间。

在低级编程的上下文中,C和C ++是便携式汇编程序。在上述许多空间中,标准库部分或完全缺失,并且您正在修改的系统级代码的现有部分可以实现额外的功能,因此您必须了解任何可用的API函数。给定空间以及您需要自己实现的内容,以及您的内存和处理要求。例如,写入MBR的引导加载程序必须使用bios中断并以实际(16位)模式启动。这些都是硬件设计的限制因素。同样,像fopen()这样的函数在内核空间中不可用,因为它们包装了系统调用 - 如果从内核空间编写文件真的有意义,你需要使用特定于内核的结构来实现这一点。