问题标签 [kernel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3644 浏览

windows - 单元测试内核驱动程序

我正在寻找适用于 Windows 内核环境的测试框架。到目前为止,我已经找到了 cfix。有人试过吗?有替代品吗?

0 投票
12 回答
5527 浏览

linux - 了解 linux 或 BSD 内核内部的最佳方式是什么?

我想更好地了解操作系统内部。进程管理、内存管理和类似的东西。
我正在考虑通过了解 linux 或 BSD 内核来学习。
哪一个内核更适合学习目的?
最好的起点是什么?
能推荐一些好书吗?

0 投票
28 回答
122873 浏览

operating-system - 操作系统开发入门有哪些资源?

我一直想做的一件事是开发自己的操作系统(不一定像 Linux 或 Windows 那样花哨,但比我已经做过的简单引导加载程序更好)。

我很难找到资源/指南来帮助您完成编写简单的“Hello World”操作系统。

我知道很多人可能会建议我看一下 Linux 或 BSD;但是像这样的系统的代码库(大概)太大了,我不知道从哪里开始。

有什么建议么?

更新:为了让通过谷歌登陆这篇文章的人更容易,这里有一些操作系统开发资源:

其他资源:

我找到了一个名为MikeOS的好资源,“MikeOS 是一个学习工具,用于演示简单操作系统的工作原理。它使用 16 位实模式进行 BIOS 访问,因此不需要复杂的驱动程序”

2008 年 11 月 14 日更新

我在Freebyte's Guide to...Free and non-free Operating Systems中找到了一些资源,这些资源链接到诸如 OSKit 和 ExOS 库之类的工具包。这些似乎对开始操作系统开发非常有用。

2009 年 2 月 23 日更新

Ric Tokyo在这个问题中推荐了 nanoos。Nanoos 是一个用 C++ 编写的操作系统。

2009 年 3 月 9 日更新

Dinah 为有抱负的 OS 开发人员提供了一些有用的 Stack Overflow 讨论:创建自定义操作系统的路障讨论了您在开发 OS 时可能遇到的陷阱,而OS 开发是一个更普遍的讨论。

2009 年 7 月 9 日更新

LB 提供了Pintos Project的链接,这是一个为学生学习操作系统开发而设计的教育操作系统。

2009 年 7 月 27 日更新(依然强劲!)

我偶然发现了来自伯克利的一门在线操作系统课程,其中有 23 节课。

TomOSMikeOS的一个分支,其中包括一个小内存管理器和鼠标支持。作为 MikeOS,它被设计成一个教育项目。它是用 NASM 汇编程序编写的。

2009 年 8 月 4 日更新

我发现幻灯片和其他材料与上面列出的在线伯克利讲座一起使用。

2009 年 8 月 23 日更新

stackoverflow 上所有标记为 osdev 的问题

OS/161是一个用 c 语言编写的、在模拟硬件上运行的学术操作系统。这个操作系统在 Nachos 中是类似的。谢谢小说家!

tangurena 推荐http://en.wikipedia.org/wiki/MicroC/OS-II,一个为嵌入式系统设计的操作系统。还有一本配套书

Anders 建议 Robert Love 的Linux Kernel Development 。这是“广受好评的内部人士对 Linux 内核的看法”。

2009 年 9 月 18 日更新

感谢 Tim S. Van Haren 向我们介绍了Cosmos,这是一个完全用 c# 编写的操作系统。

tgiphil 向我们介绍了托管操作系统联盟 (MOSA) 框架,“一套工具、规范和源代码,用于促进基于通用中间语言的托管操作系统的开发。”

2009 年 9 月 24 日更新

Steve 找到了一些使用 Visual Studio 在 Windows 上进行开发的资源,请查看BrokenThorn 的 VS 2005 指南设置OSDev 的 VS 部分

2012 年 9 月 5 日更新

kerneltrap.org 不再可用。linux 内核 v0.01 可从kernel.org获得

更新于 2012年 12 月 21 日 一个基本的操作系统开发教程,设计为一个学期的项目。它指导您构建具有基本组件的操作系统。对初学者来说非常好的开始。相关论文。谢谢斯鲁扬!

2013 年 11 月 15 日更新

从零开始编写一个简单的操作系统。谢谢詹姆斯摩尔!

2013 年 12 月 8 日更新

如何制作电脑操作系统 谢谢ddtoni!

2014 年 3 月 18 日更新

ToAruOS 一个主要从头开始构建的操作系统,包括 GUI

2016 年 9 月 12 日更新

编写自己的玩具操作系统

2016 年 12 月 10 日更新

编写一个简单的操作系统——从零开始(谢谢@Tyler C)

0 投票
2 回答
808 浏览

operating-system - 任务计划程序

与一些同事就实时任务的最佳调度策略进行了有趣的讨论,但并不是每个人都对常见或有用的调度策略有很好的理解。

对于您的答案,请选择一种策略并详细介绍它,而不是提供有关几种策略的一些信息。如果您有一些内容要添加到别人的描述中并且很短,请添加评论而不是新答案(如果它很长或有用,或者只是一个更好的描述,那么请使用答案)

  • 策略是什么 - 描述一般情况(假设人们知道任务队列是什么、信号量、锁和调度程序本身之外的其他操作系统基础)
  • 该策略针对什么进行了优化(任务延迟、效率、实时、抖动、资源共享等)
  • 是实时的,还是可以实时的

当前策略:

-亚当

0 投票
2 回答
1099 浏览

linux - Linux TCP/IP 黑客“生活”在哪里?

在过去一年左右的时间里,我的生产平台一直受到一个奇怪的 TCP/IP 问题的困扰。我花了无数个小时与有能力和知识渊博的系统管理员一起工作,搜索网络,阅读源代码,被 RH 可怜的支持拉扯着,流下了血泪!无济于事。(谷歌“unkn-4”,你会看到很多帖子都写着我的名字。)

轮换工作已经到位,所以这个问题不是优先事项。但我内心的极客真的很想了解和解决这个问题。

那么,一个中等能力的系统程序员可以去哪里询问详细的问题并从 TCP/IP 堆栈之王那里获得详细的答案呢? 我假设他们的世界如此接近裸机,他们的人口如此之少,与我的世界不同。那,他们不想回复“我的调制解调器不工作”的电子邮件,所以他们躲在阴影里。

任何指针将不胜感激。

0 投票
3 回答
393 浏览

linux - 开发没有信息的驱动程序

开源/自由软件社区如何为不提供文档的产品开发驱动程序?

0 投票
4 回答
2210 浏览

windows-xp - Windows XP 中用户启动的内核转储

我记得看过 Mark Russinovich 的网络广播,展示了用户启动的内核转储的键盘按键顺序。有人可以按键的确切顺序刷新我的记忆吗?

请注意,这是针对 XP 的。

0 投票
6 回答
8261 浏览

linux - 在家学习内核黑客和嵌入式开发?

我总是被内核黑客和嵌入式系统的世界所吸引。
有没有人有关于开始弄乱这些东西的好教程(+容易获得的硬件)?
诸如用于编写驱动程序的工具包之类的东西,它们带有良好的文档并且价格合理?

谢谢!

0 投票
3 回答
7296 浏览

c - 来自 copy_to_user 的“错误地址”错误

我正在尝试将自定义结构从内核空间复制到用户空间。在用户空间 errno 内部返回“错误地址”。错误地址错误的常见原因是什么?

0 投票
8 回答
25640 浏览

c# - C#驱动程序开发?

在我一头扎进 C# 之前...

我一直觉得 C 或者 C++ 最适合在 Windows 上开发驱动程序。我不热衷于在 .NET 机器上开发驱动程序的想法。

但是 .NET 似乎是 MS 走向应用程序开发的方式,所以我现在想知道:

  • 人们是否在使用 C# 开发驱动程序?
  • 您是否必须做很多 API 挂钩,或者 C# 是否具有与内核交互而无需大量黑客的设施?
  • 谁能比通常情况下更接近 Ring 0 运行 C# 程序的可靠性和安全性?

我希望我的设备可以在 C# 中使用,如果 C# 中的驱动程序开发很成熟,那显然是要走的路,但如果不推荐的话,我不想在那里花很多精力。

  • 有哪些很好的入门资源,比如开发一个简单的虚拟串行端口驱动程序?

-亚当