Questions tagged «os-kernel»


2
微内核vs整体内核的性能
微内核将所有驱动程序实现为用户空间程序,并在内核本身中实现IPC之类的核心功能。但是,单片内核将驱动程序实现为内核的一部分(例如,以内核模式运行)。 我已经读过一些说法,微内核比单片内核慢,因为它们需要处理用户空间中驱动程序之间的消息传递。这是真的? 长期以来,大多数内核都是单片的,因为硬件太慢而无法快速运行微内核。但是,现在有许多微内核和混合内核,例如GNU / Hurd,Mac OS X,Windows NT line等。 那么,微内核的性能是否发生了变化?这种对微内核的批评在今天仍然有效吗?

2
拥有运行托管代码的最小内核的潜在陷阱是什么?
假设我要基于一个很小的本机较低层内核构建操作系统,该较低层本地内核充当托管代码解释器/运行时,并基于一个较大的较高层内核编译为非本地机器语言(Java字节码,CIL等)。类似操作系统的示例将是Singularity和Cosmos。 与纯本机解决方案相比,使用这种基础结构编写操作系统存在哪些陷阱和开发挑战?

3
中断后,处理器如何找到内核代码?
发生中断时,处理器会抢占当前进程并调用内核代码来处理中断。处理器如何知道在哪里输入内核? 我知道可以为每条中断线安装中断处理程序。但由于处理器仅执行“硬连线逻辑”,因此必须存在一些预定义的位置,该位置指向中断处理程序本身或在该处理程序之前执行的某些代码(因为一个中断行可以有多个处理程序,因此我假设后者)。

1
所有系统调用是否都阻塞?
我正在阅读一篇文章,描述系统调用时用户空间和内核空间之间的切换。文章说 在恢复用户模式执行之前,应用程序期望系统调用完成。 现在,直到现在,我还假设某些系统调用为blocking,而另一些为non-blocking。有了以上评论,我现在感到困惑。这是否意味着所有系统调用都被阻止,或者我误解了一个概念?


2
什么是文件?
我正在寻找文件的正式定义,该定义不仅包括存储,还包括与存储无关的抽象,例如procfs或/ dev / null(或任何基于保险丝的文件)。 到目前为止,我知道所有文件都是抽象的 可以识别 可以具有名称(通常按层次结构组织) 可以作为字节流访问 通常提供权限和其他(系统特定的)元数据 但是到目前为止,我在任何OS书籍中都找不到有用的正式定义。

1
为没有MMU的处理器编写多任务操作系统
我一直在考虑为某些ARM处理器编写一个业余操作系统。有很多流行的带有ARM MPU的单板计算机,所以我只想购买其中一台(选择一本带有更开放的文档)。当我发现即使内存确实足够的板卡也没有带有内存管理单元的MPU时,我感到很惊讶。 由于我一直在使用i386 +处理器,除其他一些Microchip PIC之外,什么都没有,所以我现在很困惑,不确定是否可以编写一个工作正常的操作系统,与编写的OS相比,其功能不会受到限制。用于带有MMU的MPU。 我可以想到一些“替换”或“模拟” MMU的解决方案,但我有几个问题: 在16位和32位模式的Intel处理器上,存在一种使用段和段选择器通过不同任务使用不同内存块的方法。这意味着在x86上执行任务切换时,可以通过更改段寄存器的内容来更改内存空间。是否有可用于ARM体系结构的内存分段的一般概念? 通过加载链接的目标文件而不是可执行文件,我可以使用重定位(修复程序)或与位置无关的代码来将任务指向存储器中的任务,就像使用分页结构映射存储器一样。这足够有效吗? 我还阅读了有关ARM处理器上的内存保护单元的内容。这些对您有帮助吗? 在没有MMU的系统上是否有任何“常规”方式来管理任务?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.