我的作业中有这些选项。我会解释我的理由,希望有人能批评他们吗?
指示以下CPU指令是仅用户还是仅用于操作系统?或
执行暂停CPU执行的'sleep'指令
仅限用户,因为我只看过编写睡眠的程序员
使用新的存储器地址加载'程序计数器'PC寄存器
我认为这只是O / S.
读取磁盘控制器寄存器
仅限O / S.
'陷阱'产生中断
根据我的理解
trap
通常是用户程序错误,因为O / S是一个软件应用程序,所以可能两个
将闹钟超时值加载到时钟寄存器
仅限O / S
读取处理器状态字PSW寄存器
仅限O / S.
加载内存下限寄存器
仅限O / S
添加两个内存位置的内容
两者。 O / S也需要进行计算。
我真的不明白如何区分用户和操作系统特定指令。它们本质上都是“用户”程序..
有人可以验证这些答案,告诉我为什么我错了,以及如何解决这些问题?
答案 0 :(得分:3)
我真的不明白如何区分用户和操作系统特定指令。它们本质上都是“用户”程序。
区别在于:您是否开始执行任务,或者是否自行完成?
您是否开始从硬盘读取任务,或者您只是指示操作系统这样做? (大多数设备访问都是OS指令)
有时教授希望你说“读取硬盘驱动器是用户启动的”,但“操作系统的抢占式多任务处理始终是操作系统启动”或“用户操作可能会在等待设备完成响应时保持有限状态”操作系统在先发制人的多任务操作系统中返回控制“
这些是我如何解释答案,但如果你在课程中找不到这些答案,那么采用我的答案对你没有任何帮助。请注意,我在每个之后给出了一个简短的模糊来解释我为什么选择这些东西。我不是你的教授,也无法知道他/她的意图,所以请确保你能理解我的回答。此外,在ASM编程有助于回答其中的一些......
执行暂停CPU执行的'sleep'指令
O / S。 Sleep实际上只是一个计数器,表示跳过执行一个或多个周期,并且通常由API调用建模。这可以允许调度程序访问延迟重新加载预占任务,直到稍后多轮。再一次,许多非常基本的平台都需要一个NOP循环计数器才能接近模拟睡眠命令。
使用新的存储器地址加载'程序计数器'PC寄存器
O / S。程序计数器寄存器旨在供系统用于跟踪程序的当前执行,并且在多进程抢占期间可用于保存程序的当前执行点。
读取磁盘控制器寄存器
O / S。通常,用户命令不会连接磁盘子系统,但在较旧的系统上,通常可以通过直接寄存器访问来访问 。在更现代的系统中,磁盘只能由O / S访问,并且只能由用户通过API访问。
'陷阱'产生中断
用户,操作系统。这是当我们为O / S生成请求以处理我们的情况时,所以我们放弃对内部内核的控制。它也可能导致某些事情返回故障状态。
将闹钟超时值加载到时钟寄存器
O / S。这些计时器通常被视为具有系统级别访问权限,因为它们用于监视系统的其余部分。通常会在支持此类保护的CPU中受到保护(例如支持环级执行保护的CPU)。
读取处理器状态字PSW寄存器
用户,操作系统。值得注意的是,PSW寄存器仅受系统级控制。在极少数情况下,可以找到允许用户读取一个,两个或仅仅一些PSW寄存器的系统。由于这些是程序执行的状态字段,因此通常不需要用户可读。
加载内存下限寄存器
用户,操作系统。所有存储器寄存器分配都是通过CPU命令完成的,CPU命令直接从加载到CPU寄存器中的二进制可执行文件中接收。除了在参与的处理器中更改执行环级别之外,没有任何限制,特别是在应用程序级别发生了这种限制。某些设备交互可能允许也可能不允许,并且通常寄存器是设备在旧硬件上的交互方式。请注意,基本内存地址可能不是
0
,并且O / S可能会拦截内存调用,专门用于沙箱应用程序。
添加两个内存位置的内容
用户,操作系统。这是算法设计的基本要求,通常是设计到CPU单元中的第一个也是最基本的命令之一。