Questions tagged «operating-systems»

有关在硬件和应用程序之间进行接口的软件原理的问题。

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

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


1
在纯需求分页期间交换空间管理
以下是我在进行OS家庭作业时遇到的一个疑问-但是,它似乎比基于概念的问题要多于简单的编码问题,因此恕我直言,我认为作业标签不适合这样做。 在给定固定数量的RAM和交换内存的情况下,针对同时运行的多个进程的纯需求分页方案中,在以下两种情况下,交换空间会发生什么情况: 进程遇到页面错误,RAM中没有可用的空闲帧,因此需要将进程的内核帧块中的一个页面写出以进行交换(为简单起见,我不考虑复制-on-write case)。明确地说,将在交换空间中的哪个位置写入此帧,并且为此需要更新哪些数据结构? 当某个进程需要进入特定页面时,它在交换内存中的位置如何?如何知道该特定页面是否全部存在于交换中? 如您所料,我很难理解在纯需求管理方案中以何种方式管理交换空间,以及什么数据结构必不可少。如果您可以在答案中引用任何链接,那就太好了(我在“操作系统概念-Silberschatz的第8版,我找不到我的问题的明确答案”中进行了搜索)。

5
为什么OS设计能够降低功耗?
我已经读到,像Android和iOS这样的操作系统在某种程度上已经过优化,可以延长电池寿命。 我的理解是,CPU在一定时间内执行一定数量的操作,因此我认为您可以通过减少所需的操作数量来加快应用程序的速度,但是由于CPU仍会在y时间内执行x次操作,因此不应影响力量? 另外,如果一个进程占用更多RAM,是否会消耗更多功率?

4
为什么将自身和父链接(。和..)存储在目录项中?
考虑针对某些嵌入式设备的文件系统,该文件系统只不过在分层目录结构中存储文件而已。该文件系统缺少您可能在诸如UNIX和Windows之类的系统中习惯的许多操作(例如,其访问权限完全不同,并且与存储在目录中的元数据无关)。该文件系统不允许任何类型的硬链接或软链接,因此每个文件在严格的树形结构中均具有唯一的名称。 将指向目录本身及其父目录的链接存储在代表目录的磁盘数据结构中有什么好处? 大多数UNIX文件系统在磁盘上都有.和..条目。我不知道他们为什么不在VFS(通用文件系统驱动程序)层处理这些问题。这是历史文物吗?是否有一个很好的理由,如果是,那么恰恰是哪个理由,因此我可以确定它是否与我的嵌入式系统有关?

3
“地图”是什么意思?
我在各种CS教育材料中已经多次遇到过这个术语: L2 CS162(加州大学伯克利分校): 内存映射的I / O L4 CS162(加州大学伯克利分校): 内存映射文件 L24 CS61(加州大学伯克利分校): “内存映射的I / O”:映射到CPU地址空间的设备控制/数据寄存器 甚至在谷歌搜索“映射”之后,我得到了文章 Map_(higher-order_function),但是对我来说还不是很清楚。 更甚者,尝试bitmap通过阅读Wikipedia文章来理解上下文中的含义: 位数组是从某个域(几乎总是整数范围)到集合{0,1}中的值的映射 我不确定,但是在上面的上下文中,这对我来说是关于数据转换的。 后来,在阅读了CS书籍之后,我只找到了这一段,但没有为我解释“映射”的含义: 内存映射Linux(以及其他形式的Unix)通过将虚拟内存区域与磁盘上的对象相关联来初始化虚拟内存区域的内容,此过程称为内存映射。 我还得到了MapReduce作为搜索结果:where map被解释为“并行计算中的一种习语,其中对序列的所有元素(可能是并行的)应用简单的操作”。 我对这个词仍然感到困惑。在我提到的环境中,谁能解释“地图”的含义?

5
为什么不安全状态不总是导致死锁?
我正在阅读Galvin的《操作系统》,发现以下内容, 但是,并非所有不安全状态都是死锁。不安全的状态可能导致死锁 有人可以解释一下死锁!=不安全状态吗?我在这里也抓住了同一条线 如果不存在安全序列,则系统处于不安全状态,这可能导致死锁。(所有安全状态均无死锁,但并非所有不安全状态都会导致死锁。)

1
端到端原则可以形式化吗?
在1990年代后期,当我还在读研究生时, JH Saltzer;DP芦苇; DD Clark:系统设计中的端到端参数。ACM Trans。计算 Syst。2(4):277-288,1984.DOI = 10.1145 / 357401.357402 在每所大学的每个操作系统课程中,几乎都需要阅读该书,而且它似乎仍然是互联网设计的主要指导原则之一。(例如:参见J Kempf,R Austein编辑)和IAB,“ 中间的兴起和端对端的未来:对Internet体系结构演进的思考 ”,RFC 3724,2004年3月。 ) 端到端原理说明(Saltzer等人,1984): [如果]仅在站在通信系统端点的应用程序的知识和帮助下,才能完全正确地实现所讨论的功能,...,前提是所质疑的功能不是通信系统本身的功能可能。[尽管]有时,通信系统提供的功能的不完整版本可能有助于提高性能。 或更简单地(摘自摘要): 端到端的论点表明,与以较低级别提供功能相比,放置在系统较低级别上的功能可能是多余的或价值很小。 但是以我自己的经验(在计算机体系结构中,而不是在互联网体系结构中)应用端到端原理并没有取得什么成功。由于该原则被说成是“诗”(即,英语散文中有许多数学上没有定义的术语),因此很容易自欺欺人地认为:“所讨论的功能只有通过以下方式才能完全正确地实现:应用程序的知识和帮助。” 但是什么是“所讨论的功能”,更不用说应用程序的“知识和帮助”了? 示例:片上网络(与Internet不同)不允许丢弃数据包,但是缓冲非常有限,因此您需要采取某种措施来避免死锁或从死锁中恢复。另一方面,应用程序也需要使其自身无死锁,对吗?因此,我可能会以为我应该使常见情况(无死锁)变快,并在应用程序上避免死锁。实际上,这就是我们在Alewife和Fugu上尝试过的方法(Mackenzie等人,“ 利用两箱式邮件传递以进行快速保护的消息传递”,《国际Symp高性能复合拱门》(HPCA-4):231-242, 1998年。或约翰·库比亚托维奇(John Kubiatowicz)的论文。“它”有效“(通过在缓冲区已满时使互连中断处理器,并通过软件缓冲使OS扩展),但我在学术界或行业中都没有见过任何人(包括我们中的任何人) HPCA论文)竞相尝试复制该想法。因此,显然,避免网络中的死锁与避免应用程序级死锁是不同的“问题功能”,否则端到端原理是错误的。 可以将端到端原理从“诗”转变为定理吗?或者至少可以用计算机架构师可以理解的术语来表述?

1
两级调度程序仅对管理交换有用吗?
当系统运行的进程超出RAM的容量时,两级调度很有用:较低级的调度程序在驻留的进程之间切换,而较高级的调度程序则将进程组交换进出。 我没有在Andrew Tanenbaum的《操作系统:设计与实现》第一版中提到过两级调度。练习2.22提出了为什么可以使用两级计划的问题。我不知道它是否可以作为阅读理解检查,还是有其他未在正文中突出提及的原因。 二级调度对管理内存以外的其他资源争用是否有用?

2
有人可以解释这张关于平板分配的图吗?
我试图了解Slab分配的工作原理,以及为什么它与普通分页不同或更好。 我发现了该图,如果有更多说明,我认为将对您有所帮助。 一些问题: 3KB和7KB项代表什么?他们必须以某种方式联系起来吗?为什么用这种方式包装? 在缓存列中,缓存是灰色框还是灰色框内的白色/蓝色框?灰色盒子是一堆缓存吗? 这些平板仅仅是蓝框,还是整个“物理连续页面”都是平板? 我真的很感谢您的帮助。谢谢!

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

3
为什么键盘回声会涉及CPU?
我目前正在学习计算机科学考试,并且遇到了一个让我有些困惑的概念。 当您在键盘上键入一个键时,一个ASCII字符将被发送到CPU。接收到此字符后,CPU将相同的字符输出到屏幕。此过程称为回声。为什么不让CPU参与其中,为什么我们不简单地在键盘/屏幕单元内完成此回显过程,以便CPU可以自由地做其他有用的工作? 现在,凭直觉,我觉得这是因为没有定义的键盘/屏幕单元,而CPU是负责通过互连网络在屏幕和键盘之间进行通信的设备。但是,我感觉提到键盘/屏幕单元这一事实可能意味着我错过了一个重要的概念。是这样吗 为什么我们将CPU包含在回声过程中?

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

4
操作系统上下文中的中断是什么意思?
我决定阅读操作系统概念在整个夏天 Silberschatz的,Galvin Gagne(第8版)。我遇到了一个使我感到困惑的话题-中断及其在操作系统中的作用。 文字说,操作系统将开始第一个过程,例如“ init”,然后等待“事件”发生,该事件通常由中断来发出信号。文本还说,中断可以来自硬件或软件。更详细地说,这是如何工作的?操作系统是由中断驱动的吗? 我只是在寻找一些大的了解。

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.