java 与操作系统底层交互_编译的程序如何与操作系统交互?

这是一个非常好的问题(比你知道的要好),还有很多东西需要学习 . 很多 .

我会尽量保持简短 . 操作系统充当软件和硬件之间的抽象层次:

Software

.

/|\

| communicates with

\|/

'

Operating System

.

/|\

| communicates with

\|/

'

Hardware

OS通过名为 drivers (广泛使用的术语)的程序与硬件通信,并且OS通过称为 system calls (不太广泛使用的术语)的过程与软件通信 .

基本上,当您进行系统调用时,您将离开程序并输入操作系统的代码 . 系统调用是允许程序员与资源通信的唯一方式 .

现在我会停在那里,但你也说:

对我来说,似乎机器代码应该在比操作系统更低的级别运行,因此,我无法理解操作系统如何充当编译应用程序和硬件之间的中介 .

一旦你理解了一些基础知识,这很棘手,但很简单 .

首先,所有代码都只是在CPU上运行的机器代码 . 没有代码高于或低于其他代码(除了一些只能在特权内核模式下运行的命令) . 所以问题是,即使它放弃了对用户的CPU控制,操作系统如何才能控制?

当代码在CPU上运行时,有一个名为 interrupt 的概念 . 这是一个发送到CPU的信号,导致当前运行的代码停止并被另一段代码(称为 interrupt handler )切换出来 .

中断的示例包括键盘,鼠标,最重要的是时钟 .

定时引发时钟中断会导致操作系统的时钟中断处理程序运行 . 在此时钟中,中断处理程序是操作系统的代码,用于检查当前正在运行的代码,以确定接下来需要运行的代码 . 这可以是更多操作系统代码或更多用户代码 .

因为时钟总是在滴答作响,并且因为操作系统总能获得在CPU上运行的这种周期性机会,所以它能够协调计算机内的所有内容,即使它使用与任何普通程序相同的CPU命令集运行 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值