Operating system 进程和线程

1a)MS Word和MS PowerPoint是不同的流程还是单个流程的线程 b) 如何使用拼写检查例程(word和PowerPoint都通用)?我的意思是,对于主内存中的每个进程,代码复制了2次 如果它们是不同的过程 如果它们是线程 这个问题并不特定于Windows操作系统。它们是不同的进程,恰好在[某些]功能上有重叠。1a)通常不同的进程,尽管可能存在一些程序,如果您将其视为O/S类情况下的O/S,它们可以尝试在同一进程中同时运行 1b)拼写检查器可能只是对现有输入的数据进行检查,确认

Operating system 有界缓冲区(生产者-消费者)

在共享缓冲区内存问题中,为什么我们可以同时在缓冲区中最多有(n-1)个项目 其中“n”是缓冲区的大小 谢谢 理论上,有界缓冲区可以容纳大小不超过其大小的元素。但您所说的可能与某些实现怪癖有关,比如一种确定缓冲区何时为空/满的干净方法。这个问题->处理类似的事情。看看是否有帮助 但是,您当然可以使用所有n个插槽都已填满的实现。有界缓冲区问题就是这样定义的 理论上,有界缓冲区可以容纳大小不超过其大小的元素。但您所说的可能与某些实现怪癖有关,比如一种确定缓冲区何时为空/满的干净方法。这个问题->处理类

Operating system 同时使用64位操作系统和32位应用程序的优势? 我正处于混乱之中。假设我安装了64位操作系统,安装的应用程序是32位的。作为一个用户,我的优势和劣势是什么?我最好切换到32位操作系统吗?谢谢

32位Windows应用程序将能够在64位Windows上分配比在32位Windows上更多的内存。此外,64位Windows能够使用(并允许应用程序使用)比32位Windows更多的物理内存。所以,如果你有很多内存(4 +GB),并希望能够使用更多的内存,考虑使用64位OS.< /P>,如果我没有那么多内存?比如说1-4GB,我应该坚持使用32位操作系统吗?如果您有3GB或更高,请使用64位操作系统。如果小于等于2 GB,则使用32位。

Operating system 如何在虚拟机中处理系统调用?

我想知道在虚拟机中使用系统调用时如何处理。它是否通过虚拟化内核发送某种信号,然后再发送到(物理机器的)“真实”内核 我用谷歌搜索了这个主题,但似乎什么也找不到。提前感谢。在虚拟机中,所有硬件都是虚拟化的,它的工作原理与在真实硬件上的工作原理相同。它通过体系结构拥有的任何syscall指令,这些指令由虚拟机监控程序读取,虚拟机监控程序在其虚拟处理器上执行这些指令 但是,在Wine之类的仿真层中,PE可执行文件中的系统调用映射到Linux内核API上的系统调用。有3种常见的策略来处理此问题: 1。H

Operating system 虚拟地址到物理地址

我正在为我的操作系统类编写一个地址转换器。我知道我读的虚拟地址是正确的,我得到的页码是正确的(我访问了正确的数据),但当我试图找出物理地址时,我得到了错误的物理地址 规格: 页面表中的2^8个条目 页面大小=2^8字节 帧大小=2^8字节 256帧 物理内存=65536字节(256帧×256字节帧大小) 以下是正确的输出: 虚拟地址:12107物理地址:2635值:-46 以下是我得到的: 虚拟地址:12107物理地址:12107值:-46 据我所知,物理地址等于(pageNumber*pa

Operating system “基本CPU调度”;“等待准备就绪”;

在调度中等待就绪算是抢占还是非抢占 起初我认为它是非抢占式的,因为它涉及IO或事件,在它可以切换之前要完成,然而我的朋友告诉我它是抢占式的,因为它需要在切换到就绪时返回资源 那么,在这种情况下,哪一种解释是正确的呢?每个流程都有责任在事件/任务完成后释放资源,即使没有其他流程需要该特定资源。这与先发制人无关 一般来说,这取决于所计划进程的优先级 决定是否先发制人。特定阶段并非如此 定义为先发制人/非先发制人 这取决于——如果进程是抢先的,它不会等待任何消息 计划时间更长。它将从其他人那里夺取机会

Operating system 与fork返回值相关的混淆

我正在阅读有关fork()系统调用的内容,其中指出fork()的返回值对于子进程是0 我的问题是,如果在代码中有多个fork()系统调用,该怎么办。然后肯定会创建多个子进程,它们的pid都为0 但是pid应该是唯一的,不是吗?父进程中的fork的输出是新创建的进程(子进程)的进程ID,假设没有错误,子进程中的是0。如果出现错误fork返回-1,并且没有子级。这很容易指示fork后面的进程是子进程还是父进程,因为只有零表示子进程(请参见下面的代码)。但是,子进程ID不是零。子进程可以通过函数获取其

Operating system 当存在虚拟内存时,为什么需要页缓存

关于操作系统的简单问题。我知道虚拟内存为我们处理内存映射。当我们需要的某些数据不在内存中时,VM将分页并将数据复制到主内存中,如果内存不足,它也会将一些过时的内存分页到磁盘中。我的问题是,既然虚拟内存已经处理了这个问题,为什么我们需要一个页面缓存?在我看来,虚拟机已经把主存变成了磁盘的缓存 虚拟内存:将所有地址空间(ram)视为我自己的,并且比实际内存大(根据需要交换到磁盘) 页面缓存:打开存储在某个驱动器中的文件(文件系统)虚拟内存:将所有地址空间(ram)视为我自己的,并且比实际内存大(必要

Operating system 我们能有一个无限的0页错误率,或是一个荒谬的错误率吗?

我有一个操作系统课程的作业。其中一个问题要求我解释为什么可能/不可能有0页错误率。一个真正的系统是否有足够的RAM,这样它就不会出现任何页面错误 我在想,如果我们有无限量的RAM,可能就不需要虚拟内存,因此就不会出现页面错误。我得出这一结论是因为当进程请求虚拟内存中的内存页而不是物理内存中的内存页时,会发生页面错误。也许有了无限量的RAM,进程所需的所有内存都在物理内存上,不需要分页。是的,可以。有时我们不能容忍页面错误,任何页面错误都是注定的。对于初学者,中断处理程序可能不会出现页面错误,因为

Operating system 为什么虚拟到物理内存地址转换需要专用硬件,但文件路径解码等不需要?

我目前正在为我的操作系统课程解决一个实践考试,偶然发现了一个我找不到答案的问题(我们没有提供答案) 问题是:“为什么使用硬件在虚拟地址和物理地址之间进行转换很重要,但不需要硬件进行转换,例如文件名及其在磁盘上的位置”(如果在转换过程中丢失了任何内容,请道歉) 我会接受你能给我的任何帮助 我会尽可能完整地回答这个问题,不要太详细 文件路径解码不需要专用硬件,因为 文件通常很少被打开 并非每个进程都会打开任何文件 只需对文件路径解码一次即可访问该文件 文件访问通常非常慢,并且已经成为性能瓶颈,因此

Operating system 过程部分的空白部分是什么?[操作系统]

我想知道空白部分是什么意思,箭头是什么意思。如果有人能帮忙的话。非常感谢。该区域通常由堆栈部分使用,因为堆栈可以根据当前调用堆栈的深度增长/收缩。正如您的链接所述 进程堆栈包含临时数据,如方法/函数 参数、返回地址和局部变量 调用堆栈的深度是如何增长的? 要真正理解这一点,您必须了解assembler如何处理函数调用。但我将尝试提供一个简单的解释。因此,当您的代码调用一个函数时,它的相关数据会被推送到堆栈中,而堆栈会向下增长,当函数的执行完成时,不再需要它的本地数据,因此堆栈会缩回。 但是当代码

Operating system 如何存储代码和文件以供跨机器使用

我很想知道人们在多台机器上保持代码和工作版本的策略。例如,我有一台运行XP的台式PC,一台运行OSX的macbook和一台运行XP的VMWare,还有一台用于运行产品演示的销售笔记本电脑。我想知道我怎样才能始终保持这些同步。Subversion是一种可能性,但我发现它在处理二进制文件时用处不大——也许我忽略了一些东西。其他人使用什么,因为他们必须有类似的问题?他们是否将所有文件保存在USB驱动器上,而从不保存在本地文件系统上。我并不总是在线,所以远程存储不是一个真正的选择。Subversion在

Operating system 内核开发中使用的堆栈大小

我正在开发一个操作系统,而不是编写内核,我正在设计内核。这个操作系统的目标是x86体系结构,我的目标是现代计算机。所需RAM的估计数量为256Mb或更多 使每个线程的堆栈在系统上运行的合适大小是什么?我是否应该尝试将系统设计为在达到最大长度时可以自动扩展堆栈 我想如果我没记错的话,RAM中的一个页面是4k或4096字节,这对我来说似乎并不多。我可以肯定地看到,我希望RAM中同时有1000多个整数,特别是在使用大量递归时。现在,真正的解决方案是让程序通过使用malloc来实现这一点,并管理自己的内

Operating system 关于线程的术语

如果线程中的函数要返回,我们如何描述这种行为 线程返回 线快断了 “线程死了”是什么意思?在我的理解中,线程基本上是内核数据结构。您可以通过系统API创建和销毁线程。如果您只是创建一个线程,开始执行它,并且它的代码用完了,那么内核可能会将它置于非执行状态。在非托管代码中,您仍然必须释放该资源 然后是线程池。在这种情况下,您排队等待线程池完成的工作,平台负责挑选一个线程并执行您的工作。工作完成后,线程将返回到线程池。平台负责创建和销毁线程,以平衡可用线程与工作负载和系统资源之间的关系。大多数线程A

Operating system 操作系统、协议书

我对深入学习操作系统感兴趣,尤其是嵌入式操作系统和它们支持的协议栈,如以太网、蓝牙、串行、IRDA等 是否有一本综合性的书或在线资源可以指导我朝这个方向发展?我建议从两本书开始 标题:嵌入式系统编程:使用C和GNU开发工具,第2版 作者:M.巴尔 出版人:奥赖利传媒,;第二版(2006年10月1日) 语言:英语 ISBN-10:0596009836 ISBN-13:978-0596009830 及 标题:MicroC OS II:实时内核(带CD-ROM) 作者:J.J.拉布罗斯 出版商:

Operating system 移动文件与剪切/复制/粘贴?

只是一个一般性问题,移动文件和剪切/复制/粘贴操作之间有什么区别?我的意思是至少就底层操作系统而言。在每个操作中,文件的属性会发生什么变化?我只是好奇。你说的是用户界面隐喻的不同。在后台,这两个操作都将使用相同的机制来实现。如果您的意思是在文件管理器中剪切和粘贴整个文件,那(在任何合理的文件管理器中)只是一个移动操作,即一个操作,或者,如果操作失败,则是一个拷贝,然后是一个复制 如果可能,将保留属性。(例如,将文件从Unix卷移动到已装载的Windows FAT卷可能不会保留所有属性,因为FAT

Operating system 共享内存IPC机制与API/系统调用调用的区别

我正在学习操作系统(Silberscatz、Galvin等人)。我的编程经验仅限于偶尔对编程文本或算法文本中给出的练习问题进行编码。换句话说,我没有适当的应用程序编程或系统编程经验。我认为我下面的问题是由于缺乏上述经验,因此缺乏背景 我专门研究IPC机制。在阅读有关共享内存(SM)的文章时,我无法想象进程使用SM进行通信的真实场景。在我的linux(ubuntu)机器上(在一个小shell脚本中使用“ipcs”)上传了对连接到同一SM段的进程的检查 应用程序共享的大部分内容似乎都与X deamo

Operating system 虚拟内存?

我对这些问题感到非常困惑 在32位处理器上,每个进程都有4 GB虚拟内存。但是,若每个进程都有4gb的空间,那个么在运行100个进程的情况下,每一个进程的空间都将是巨大的——这比交换区域要大。有人能解释一下吗;我很困惑 操作系统如何将内存分配给进程?假设一个进程有a=malloc(2)。谁将把这个内存分配给进程?操作系统将为进程提供这2个字节的内存。 (我们访问a[2],它会生成分割错误) 进程的不同部分(代码、数据、堆栈、堆)保留在主内存或辅助内存中的什么位置 请给我一些好的链接,这样我也可以

Operating system 无法在qemu中启动xv6

我使用Debian Wheezy,我想在qemu中运行xv6。 我已经安装了libsdl1.2-dev,然后开始运行makeqemu。但是发生了一个错误:无法初始化SDL(找不到设备)退出。这是因为qemu在默认情况下试图启动X。 使用 make qemu nox 或者,如果您正在SSHing到远程计算机,请使用ssh-X 资料来源:

Operating system 对直接内存访问的需求

DMA的需求是什么?。使用DMA比正常传输有什么好处?。我搜索了一下,但没有弄清楚。 任何帮助,提前谢谢。看看DMA是从什么开始的 http://en.wikipedia.org/wiki/Direct_memory_access 您可以将DMA传输想象为硬件直接从内存中提取数据,而不是让CPU从内存中提取数据并将其推送到硬件 这就像是让一个商人直接从你的钱包里取钱,而不是你从钱包里取钱给商人 显然,这样做的好处是CPU上的负载更少,这意味着它可以在传输过程中做其他事情

Operating system 用户模式和内核模式是否提供来自用户的保护?

就我个人而言,我认为用户模式允许受限访问,因此不能更改任何不应该更改的内容,因此是内核模式 尽管自以为是还不够好。有人知道他们为什么或者如何提供用户保护吗。将用户模式与内核模式分离的想法是,无论在用户模式下运行什么,都不会干扰系统的其余部分,因此需要较低的权限。例如,您不希望用户模式应用程序能够写入另一个进程或内核 保护通过硬件完成。通常,处理器具有特权模式、MMU和访问控制选项。在x86中,您拥有特权环;在ARM中,您有用户模式和主管模式

Operating system 需要DMA支持来实现设备类型的中断驱动?

据我所知,中断驱动I/O和DMA是两种独立的机制,但我需要回答这个问题。我认为答案是否定的,因为如果设备使用DMA(直接内存访问),它可以直接从主内存读取或/或写入主内存,这是不必要的。 如果设备可以产生中断,它可以通知CPU需要注意。 因此,DMA和中断基本上是完全独立的。 它们当然可以组合在一起,例如,设备可以通知CPU它已经完成DMA。 因此,你是对的,答案是否定的。@fedegovo:如果你觉得答案是正确的,你应该接受它,只是为了结束这个问题。如果没有:缺少什么?

Operating system 操作系统如何允许用户空间程序与内核空间程序交互?

这不是一个关于特定操作系统的问题,但让我们以Windows为例。用户空间程序使用Windows API与内核空间通信。然而,我不明白这怎么可能。据微软网站称,API存在于用户空间中。为了访问kernelspace,它必须在kernelspace中,如果我理解正确的话。那么,windows API获得与内核空间对话的额外特权的机制是什么呢?该机构在哪个空间工作?这类东西对所有现代PC操作系统都通用吗 它是CPU,充当通过CPU寄存器在用户内存空间(在用户模式下可访问)到受保护内存空间(在内核模式下

Operating system 关于操作系统的进程定义

以下哪项构成流程 程序代码、处理器寄存器内容、堆栈、PCB、就绪队列 我目前正在阅读Silberschatz的《操作系统概念》,这本书没有给出一个清晰的过程定义 我强烈建议再买一本书。这里关于操作系统的90%的问题似乎都来自于读那本书时的困惑。你可以便宜地买一本VAX/VMS内部和数据结构的书 进程由其寄存器定义。这包括通用寄存器和某些系统寄存器 程序代码: 存在于由寄存器值定义的地址空间中 处理器寄存器的内容: 定义了流程 堆栈: 只是进程地址空间中的一个内存区域 印刷电路板: 进程上下文块是

Operating system 帧号实际上是分页中存储页面的内存基址吗?

我的问题与内存管理的分页系统有关。 我对帧号有点困惑。 帧号实际上是存储页面的内存的基址吗? 如果是基址,那么为什么操作系统要用帧号×页面大小(页码×帧大小+偏移量)相乘来查找物理地址。 难道不能用帧号添加偏移量来查找物理地址吗?物理内存被划分为页帧 进程逻辑地址空间被划分为多个页 页面表将页面映射到页面框架 帧号实际上是存储页面的内存的基址吗 没有 如果是基址,那么为什么操作系统要用帧号×页面大小(页码×帧大小+偏移量)相乘来查找物理地址。它不能仅仅用帧号添加偏移量来查找物理地址吗 不是

Operating system 操作系统中断

假设硬件间隔计时器在发出中断信号之前只向下计数到零。操作系统如何使用间隔计时器来跟踪一天中的时间 硬件间隔计时器计数为零,触发和中断,并重置为特定值(由操作系统设置) 由于定时器频率是已知的,并且起始值是可设置的,并且会自动重置,因此操作系统可以将其设置为每秒触发中断18次,然后使用计数器保持时间 现代机器通常使用一个实时时钟(RTC)芯片,在主板上有一点电池作为后盾——这消除了计算机断电时产生的错误,实际上相当准确。这些RTC通常具有警报,可在BIOS中设置警报,以打开计算机,用于各种用途

Operating system 是否可以检测硬件显示器是否已完成显示模式之间的切换过程?

我问这个问题的原因是因为我刚买了一个新的LCD,在显示模式之间切换大约需要5秒钟,例如从1920x1080x32bpp切换到1280x800x32bpp。是否存在一种编程解决方案来检测显示器是否已准备好进行视频输出?我认为答案是“否”。一旦显示适配器开始以新的刷新率等传输新信号,它绝对无法知道显示器内部处理更改并开始显示图像需要多长时间。这是DVI和VGA信号的硬件限制,而不是软件限制

Operating system 跨操作系统的环境变量的有效字符

在尝试根据系统属性和环境变量为不同的应用程序创建可靠的应用程序配置策略时,我问自己是否存在可以跨所有操作系统工作的已知字符和特殊字符 例如,在我的Mac OS X上,点不能轻松地用于环境变量,因为在我的配置文件中无法以设置其他环境变量的方式设置它们 # configuration for myapp grails.myapp.config=/some/directory/and/file.groovy; export grails.myapp.config 据我所知,环境变量通常有一个带有大写

Operating system 多核多读

如何通过在每个进程中使用多线程来实现基于进程的多任务处理 例如,考虑操作系统运行时有两个后台进程。每个进程都支持内部多线程功能。现在,时间切片是如何在这些进程之间和内部发生的,以及时间切片是如何在线程之间发生的 调度程序通常在线程级别工作。最简单的说,调度程序依次为每个可运行线程提供时间片 因此,具有两个线程的进程将获得比具有一个线程的进程两倍的CPU时间。来源: “多任务操作系统将可用处理器时间分配给需要它的进程或线程。该系统设计用于抢占式多任务处理;它为执行的每个线程分配处理器时间片。当前

Operating system 一个程序能覆盖另一个程序的命令吗?

例如,一个程序可以阻止另一个程序打开一个网站,或者打印一条消息。或者程序是否可以覆盖操作系统并更改所有内容的名称(例如,关闭将是再见) 编辑: 谢谢你的澄清,我认为足够低的语言可以让计算机做任何事情(比如机器代码)。是的,调试器就是这么做的。您可能需要一些内核调试的特殊支持来“覆盖操作系统”(通常是第二台机器),但一般来说,软件中的任何东西都是可能的。您有更具体的问题吗?是的,调试器就是这样做的。您可能需要一些内核调试的特殊支持来“覆盖操作系统”(通常是第二台机器),但一般来说,软件中的任何东西

Operating system 内存映射IO-如何完成?

我读过端口映射IO和内存映射IO之间的区别,但我不知道内存映射IO在现代操作系统(windows或linux)中是如何实现的 我所知道的是,物理内存的一部分被保留用于与硬件通信,还有一个MMIO单元负责总线通信和其他与内存相关的东西 驱动程序如何与底层硬件通信?驾驶员将使用哪些功能?与视频卡通信的地址是固定的还是在使用它们之前有某种“协议” 我仍然很困惑您是在询问内存映射文件还是内存映射端口IO 内存映射文件是通过分页并截获这些地址的页面错误来完成的。这一切都是由操作系统通过文件系统管理器和页面

Operating system 如何分页虚拟地址空间?

当我阅读这篇维基百科文章时,我发现将虚拟地址空间(处理器使用的地址范围)划分为页面。但我已经了解到,只有物理内存(RAM)被划分为页面。那么,如何划分进程的虚拟地址空间呢 此外,这里虚拟地址空间的定义是处理器使用的地址范围。处理器使用的地址范围是指处理器中地址总线的长度,对吗?所以,如果我有一个32位的地址总线处理器和一个4GB(2^32)的RAM,我的物理地址空间和虚拟地址空间是一样的吗 如果这些问题太天真,请容忍我。。我仍然没有得到一个非常清晰的地址空间可视化。提前感谢。答案是针对每个操作系

Operating system 可用于保护关键截面的技术

在我这学期学习的一门操作系统课程中,我们被问到了这个问题 可用于保护关键截面的技术有哪些 我试着在网上搜索,但什么也找不到 有人能简要解释一下关键部分以及保护它们的技术吗?a)流程必须首先声明其进入的意图 通过升起一面旗帜来确定关键部分 b) 下一步,进入关键部分,然后打开 离开时,旗帜降下 c) 如果进程在升旗后暂停 但在它进入关键区域之前, 另一个进程将看到升起的标志,而不是 输入直到标志降低。首先,关键部分仅适用于并行执行,并且它是一段在给定时间不能由多个线程/进程执行的代码。 当两个或多

Operating system 一个程序如何在一个特定的位置上运行?

在编写程序时,程序运行在一个特定的目录中,该目录是当前的工作目录 我正试图更多地了解cwd的概念。程序如何知道其cwd是什么?这些信息存储在哪里 我非常清楚如何在python中使用os模块,但我并不真正理解拥有cwd意味着什么。它仅仅是一个数据属性,“我们就在这里”,我们可以任意改变吗?我们只是在HD的特定部分寻找和创造东西?或者,当我们改变cwd时,是否有某种路径在主动地打开和关闭,比如一扇门关上,另一扇门打开 当我在程序中更改cwd时,计算机上会发生什么 这可能与语言无关,我不确定。当前工作

Operating system 系统常数如_SIG_MAXSIG的含义定义在哪里?

在FreeBSD中,我们在中定义了常量\u SIG\u MAXSIG。我想知道这个常数的含义是怎么定义的。显然,这有点像最大信号值。然而,我正在寻找一个明确的标准,这是所有开发人员在解释该值时应该考虑的共同点。其他常量的含义也是如此——定义其含义的确切来源是什么?这不会直接回答您的问题,因为我不知道有一个标准指定了\u SIG\u MAXSIG(我认为它不是标准化的),但您所寻找的大部分内容是由定义的。注意:您必须在网站注册才能下载规范 第XSH 2.4节解释了与信号相关的概念。但是,除了用于实

Operating system 在安装Pint OS并尝试运行多个报警后,我遇到以下错误。我使用bochs作为模拟器。有什么可行的办法吗?

有解决办法吗?我已经安装了build essentials和bochs simulator。您只需访问文件/home/abhijay/pintos os/pintos/src/utils/pintos并注释掉整个函数SIGVTALRM()。它应该可以正常工作。您解决了这个问题吗?您是如何解决这个问题的?解决方案是什么?? Prototype mismatch: sub main::SIGVTALRM () vs none at /home/abhijay/pintos-os/pintos/src

Operating system 简单的系统调用实现示例?

有趣的是,我在网上找不到任何简单的例子。你能分享一个简单的例子吗?我试图通过分析一个例子来理解下面的内容 ⦁ Typically, ⦁ a number associated with each system call ⦁ Number used as an index to a table: System Call table ⦁ Table keeps addresses of system calls (routines) ⦁ System call runs and

Operating system 未分配寄存器地址

问题是: 没有一个控制器(例如PCI和内存控制器)在内存或I/O地址空间中具有其HCI的寄存器地址。但是,操作系统仍然能够与这些控制器通信。描述操作系统必须做什么,如何做,何时做。如果操作系统必须与计算机的某个部分通信才能实现这一点,请说明原因、原因和时间

Operating system Debian 8支持安全引导吗?

所以我读过Debian'stretch'支持安全引导,但Debian 8(“jessie”)呢? 此外,在安装操作系统时,您通常会关闭secureboot吗? 你能列出关闭它的优点和缺点吗?那么你什么时候读到的?Debian 8,代号“jessie”,已于2015年4月底发布;在此之前,它是“测试”。所以很有可能你的阅读测试实际上是杰西·阿卡·德比安8。除此之外,这个问题是离题的,应该迁移到你是对的,我可能应该在超级用户上发布这个问题。但我所说的测试版本是从“jessie”的副本开始的,它的代号

Operating system 中断处理期间禁用中断

当内核当前正在处理中断时,为什么会禁用中断 如果丢失了包含重要消息的中断怎么办?这可以防止可能溢出内核堆栈的“堆叠中断”。它还可以防止死锁和/或“钉住” 大多数硬件不会“丢失”中断。在中断期间,CPU的“中断标志”被清除,但中断控制器[一个单独的beast]仍然可用/启用,以记录新的中断。如果CPU正在处理硬件_A的中断(在“中断服务例程”ISR_A中),则仍然可以断言硬件_B的中断。它会被[中断控制器]记住,只是不会在那个时候中断CPU。当ISR_A返回时,中断标志将在退出时重新启用,现在,I

Operating system 是否每个程序都在运行时环境中运行?

我知道一些程序,如Java或.NET程序,使用广泛的运行时系统来执行。但我在一本关于操作系统的书中读到了一些东西(这里没有更详细的解释),听起来像是用户编写的任何程序都是在运行时系统中运行的,而不是直接在操作系统上运行的 举个例子,当你读取一个文件时,你不会为你读取的每一位调用一个操作系统函数,而是将这些位或字节读入一个由运行时系统管理的缓冲区,当缓冲区为空时,你会再次调用一个系统函数 那么这是否意味着严格来说,任何程序都是在某种运行时环境中运行的(除了用汇编语言编写的程序…)正确的想法是,操作

Operating system 内核如何一直运行?

当CPU一次只能执行一个进程时,内核如何一直运行? 也就是说,如果内核一直占用CPU,那么其他进程如何运行呢 请解释一下 谢谢就像您可以同时运行多个用户空间进程一样:在任何给定的时间,只有一个进程在实际使用CPU。你有一些干扰,迫使他们放弃 作为操作系统一部分的代码在这里没有什么不同(除了它首先控制设置此调度) 您还必须区分操作系统在后台运行的进程(我想这就是您在这里讨论的)和系统调用(作为临时切换到主管模式的“正常”进程的一部分运行)。它不会一直运行。内核为CPU设置一个报警中断,以便每隔一段

Operating system USB上的可引导Linuxmint不工作

我试图在我的新硬盘上安装linuxmint,但每次我试图从USB启动它时,我的显示器上只会显示“重新启动并选择正确的启动设备”。我尝试在我的笔记本电脑上启动USB,但在我的电脑上无法启动。您可能想尝试的内容: 1) 目标计算机上的不同USB插槽 2) 不同的U盘 3) 检查斗杆的访问设置 4) 不同版本的造币厂

Operating system 操作系统如何存储加密数据的密钥

我想知道操作系统如何存储用于加密网站密码等内容的密钥。在网上搜索后,我只找到了两个答案,但它们只涉及服务提供商应该如何存储密码(他们应该存储哈希和salt),或者应用程序应该如何存储密码(他们应该使用提供加密的系统api) 但我想知道的是系统本身是如何保护加密密钥的。我知道有些设备有特殊的硬件来存储一些重要的密钥(比如苹果芯片中的安全飞地)。但我想知道在普通的电脑里是怎么做到的 我的意思是,他们可能会将其存储在磁盘上的某个位置,但他们如何安全地执行此操作,使您不能仅读取它?几乎所有“安全凭据存储

Operating system 操作系统中有哪些新的技术发展?

我需要调查操作系统中的一些新技术发展。有什么有趣的发展可以写 在过去的5年里,我一直在关注任何有趣的发展,并且只接触过Azure Sphere 我希望写3到4个操作系统新技术发展的例子我花了将近20年的时间寻找真正新的东西(操作系统);我唯一能想到的是最近发生的幽灵(和熔毁)安全灾难和相关的缓解措施 几乎所有其他东西都是用新的营销炒作重复/重新实施的旧想法。举个例子(你的例子)考虑Azure球-一个低预算/低努力尝试回收现有的内核(Linux,这本身是一个硬性的块纪念物从20世纪60年代后期重新

Operating system 如何创建可引导的x86_64程序?

一些背景: 我现在是一名计算机工程专业的学生,我刚刚完成了一个项目,用一个在FPGA上运行的超简单指令集创建了一个微处理器。我选择实现一个简单的文件存储方案、一个VGA纯文本显示输出和一个PS/2键盘输入。我编写了两个主程序,一个固件位于处理器的ROM中,另一个内核提供了一系列库类型函数,能够从文件系统加载和执行文件。这个项目很有挑战性,总体来说很有趣 我的问题: 我想在现代计算机上做一些超低级编程,但我似乎找不到任何资源或文档来帮助我开始。为了清楚起见,我想找到合适的文档,帮助我用C、x86或

Operating system 临界截面

下面的解决方案如何不满足临界截面问题的解决标准 三种情况中哪一种不令人满意? 1.互斥 2.进展 3.有界等待 我知道这是一种令人满意的互斥,但是2和3呢? 请注意,这不是家庭作业。我想了很多,但仍然不清楚 [编辑] 删除图片并添加代码 Pi’s Algorithm Var flag : array [ i…j] of boolean repeat flag [i] = true; While ( flag [j] == “ true ”)

Operating system Type2虚拟机监控程序-忽略用户程序的敏感指令

我正在阅读Tanenbaum的《现代操作系统》,在描述Type2虚拟机监控程序的章节中,使用二进制翻译,但没有硬件虚拟化技术,我无法理解以下短语: 第8.3.3章: 而且,不需要替换用户程序中的敏感指令;硬件只会忽略它们 1用户程序难道不能发出指令,导致系统管理程序被内核杀死吗 2同样,为什么忽略用户程序的敏感指令是好的? 虚拟机监控程序不应该捕获并处理它们吗?用户程序的敏感指令通常会被硬件忽略。用户程序不应该期望处于内核模式,因此实际上不应该编译任何敏感指令,而是应该对操作系统进行API调用

  1    2   3   4   5   6  ... 下一页 最后一页 共 49 页