这可能是徒劳的,因为我知道编写一个操作系统是无法忍受的复杂(尤其是自己).
我不希望构建下一个linux或Windows.
我知道这将是可怕的,而且越野车,并且不会起作用,但那很好.
我想在Assembly,C和(某些)C++中自己编写所有内容.
这是一个未来的项目,因为我现在忙于其他一些事情并且没有立即的时间,但我想我现在会问它,所以也许我可以得到很多答案,它可以构建并成为这种方法的有用资源(我所见过的其他一切都涉及构建minix,使用现有的引导程序,在虚拟引导程序中构建它等).
我想用显示器,键盘和鼠标设置一个旧的桌面,然后开始使用空白硬盘.
我想学习如何编写我自己的bootloader(我已经找到了很多有关这方面的资源,但为了完整性,请仍然添加一些好的),我自己的USB驱动程序(如果有必要),CD驱动程序(如果有必要的话) )等等,从头开始.
如何将代码放入计算机?用软盘做它最好吗?大多数计算机可以通过USB记忆棒完成吗?
我需要哪些司机,你能建议任何建议吗?
启动序列之后 - 然后是什么?我如何进入保护模式等
如何在没有操作系统帮助的情况下管理内存?我只是使用我想要的任何地址吗?无需初始化?
毫无疑问,我会遇到什么会让我困惑?
我怎样才能使命令行O/S和图形命令行?
什么是图形操作系统?比如,我怎么做一些命令行,一个字体,一个顶部的图片?
我在哪里可以阅读有关设置多任务环境的信息?(即,有两个并行运行的图形命令行).
我该如何设置一种窗口系统?设置简单的多任务处理后,如何在屏幕上显示图形?
相信我,我知道这是一个非常复杂的项目,我可能永远无法完成它或在任何用途上写任何东西.
还有很多其他的部分我还没有提到过,如果你想到的话,也可以自由添加.
请为每个答案添加一个"主题" - 例如,USB驱动程序,然后可能是资源列表,需要注意的事项等.
此外,请不要建议建立另一个操作系统或预先存在的代码.我知道我将阅读许多预先存在的代码(例如Linux内核,或示例资源,现有驱动程序等),但最终我想自己完成所有的写作.我知道我应该建立其他的东西,而且还有很多其他的问题,如果我改变主意并走那条路,我就可以读到这些问题.但这一切都是关于从头开始做整件事.
关于如何获得图形的任何建议?不同的视频模式以及如何使用它们等?
我打算编写一个操作系统,我对操作系统知之甚少.是否有任何好的资源或书籍可供我学习?你有什么建议?
有意义的是像操作系统这样的东西会用C编写.但它有多少,以及什么样的C?我的意思是,在C中,如果你需要一些堆内存,你可以调用malloc.但是,操作系统甚至有堆吗?据我所知,malloc 向操作系统询问内存,然后将其添加到链表,二叉树或其他内容.调用堆栈怎么样?操作系统负责设置其他应用程序使用的所有内容,但它是如何做到的?如果要在C中打开或创建文件,相应的函数会向操作系统询问该文件.所以...那个电话的另一边有什么样的C?或者在内存分配的另一端?
另外,实际上用C编写了多少操作系统?所有的?架构相关代码怎么样?那些更高级别的抽象怎么样?是否用高级语言编写,比如C++?
我的意思是,我只是出于纯粹的好奇而问这个问题.我现在正在下载最新的Linux内核,但这需要永远.我不确定我是否能够遵循代码 - 或者我是否会陷入一个我从未见过的不可避免的复杂网络中.
创建操作系统似乎是一个庞大的项目.怎么会有人开始?
例如,当我将Ubuntu弹出到我的驱动器中时,我的计算机如何才能运行它? (我想,这是我真正想知道的.)
或者,从另一个角度来看,磁盘上可能存在的字节数最少,仍然可以作为操作系统"运行"?
(我很抱歉,如果这是模糊的.我只是不知道这个主题,所以我不能非常具体.我假装知道关于计算机如何工作的相当数量,但我对这个主题完全无能为力. )
我计划为x86架构开发一个操作系统.
有什么建议?
我最近开始深入研究低级OS编程.我(非常慢)目前正在编写两本较旧的书籍,XINU和构建自己的32位操作系统,以及我之前的问题,如何开始操作系统开发中的优秀SO人员建议的一些资源.
它可能只是我还没有在任何这些资源中遇到它,但可能是因为大多数这些资源是在无处不在的多核系统之前编写的,但我想知道的是中断如何在多核/多处理器系统中工作.
例如,假设DMA想要发出文件读取操作完成的信号.哪个处理器/内核确认发出中断信号?它是启动文件读取的处理器/核心吗?它是首先获得它的处理器/核心?
我主要是ac#/ .NET程序员,但我将要采取的业余爱好项目将涉及c编码.
我知道那里有很多c代码,但是如果你没有用这种语言"成长"的话,很难将结构良好的c项目与结构糟糕的项目分开.任何人都可以指向一个更新的,非平凡的(但不是巨大的)项目,它被认为是如何构建c代码的一个很好的例子吗?
编辑
如果您找不到项目,请随意用文字讨论您认为交流项目的结构.
在我看来,程序员(尤其是Comp.Sci.grads)试图解决的最常见的过于雄心勃勃的项目是构建自己的操作系统.(尝试创建自己的编程语言+编译器可能更常见,但不是那么雄心勃勃.)
对于那些(像我一样)愚蠢的尝试:除了庞大的规模,你在尝试从头开始创建自己的操作系统时遇到的最大问题或意想不到的障碍是什么?
编辑:一个很棒的操作系统问题:在操作系统开发中有哪些资源?
我正在寻找一些指导,以了解Linux内核如何实现各种硬件时钟的设置.这主要涉及设置各种时钟,如LCD,UART等硬件功能将使用.例如,当Linux引导它如何处理为UART或USB设置时钟时.也许像时钟经理之类的东西.
我基本上试图在我正在使用的新硬件上为不同的操作系统实现类似的功能.任何帮助将非常感激.
[编辑]
感谢您的回复和链接.所以这是我迄今为止所实施的内容.这应该可以让你了解我的目标.
我查看了硬件参考手册,了解了我所针对的特定系统,并编写了一些代码来监控/修改我感兴趣的外设的信号/引脚,即从命令行打开/关闭它们.现在收集这些时钟/信号一起控制外设.HRM会说如果你想打开UART或其他东西,那么打开这样的信号/引脚.和@BjoernD是的,我正在使用类似mmap()函数的东西与外围设备通信.
我的问题是,我想了解使用我已编写的实用程序的时钟/外围设备管理器的设计和实现.这个时钟/外设管理器可以让我控制启用/禁用我想要的外设.基本上这个管理器可以让我对正在运行的init代码进行更改.此外,在运行时,进程可以调用此Manager来打开/关闭设备,以便优化功耗.它可能没有完美的意义,但我自己试图绕过这个.
现在我确信这样的事情会在Linux中实现,或者就任何操作系统的性能问题而言都是如此(没有人希望通过在启动时打开所有外设来浪费电源).我想了解它的软件架构.任何操作系统的参考资料至今都可以实现至少获得一个先机.此外,我不是在编写自己的操作系统,有一个操作系统,但我正在寻找更多的板级软件,也就是BSP.但是,无论如何,感谢OS链接,它们真的很棒.欣赏它.
谢谢!
什么样的C++(重新编程)我必须学会制作自己的操作系统内核?(我知道我也必须学习装配.)编辑***像中断,键盘驱动程序,输入.***
好的,我做了一个真正的*3基本操作系统并希望分享它.
干得好. http://bcsy.hostzi.com/BytOS.zip
在linux上编译
我想开发一个简单的操作系统.一个通过输入用户名和密码要求用户登录.登录后,用户可以看到他们的桌面,并可以创建一些文本文件.
我没有任何OS开发经验.我知道C和C++和Java.
我不知道从哪里开始.我想使用Linux内核,但我不知道如何使用它,修改它并按照我的要求使用它.
我怎样才能做到这一点?
过去几周我一直在寻找有关如何制作操作系统的信息。
我还阅读了有关如何制作这样的操作系统的问题,有哪些资源可以帮助您开始操作系统开发?。
我想制作一个使用 #Linux 内核的操作系统,它启动后仅以全屏视图显示浏览器。基本上我想做一些类似#firefox OS 的东西。
有一些操作系统具有类似的概念,例如 #justbrowsing http://justbrowsing.info/ 和 #browserlinux
我还研究了 #Linux From Scratch http://www.linuxfromscratch.org/index.html。但#LFS 不是我想要的。
我不想要一个可以处理所有环境、情况和错误的完整操作系统。为了开始我的项目,我想制作一个带有 #Linux 内核的浏览器操作系统。
browser operating-system linux-from-scratch linux-kernel firefox-os
I'm trying to understand how you set about writing an OS in something like C.
I've always used C to write applications - using commands like malloc and fork and so on to request things from the OS. If these methods don't exist when you're programming the OS itself (or perhaps the Kernel in particular), how do you write them?
How do you implement memory and process management and so on, specifically what functions are available and what is exposed …
operating-system ×11
osdev ×5
c ×4
kernel ×3
assembly ×2
linux-kernel ×2
bios ×1
browser ×1
c++ ×1
clock ×1
firefox-os ×1
linux ×1
low-level ×1
multicore ×1
x86 ×1