【问题标题】:how can i access my system resources without the operating system intermediation?我如何在没有操作系统中介的情况下访问我的系统资源?
【发布时间】:2012-03-19 04:39:07
【问题描述】:

我想在不使用操作系统系统调用的情况下访问我的系统资源,例如 CPU。 有什么办法可以做到这一点?

【问题讨论】:

  • 访问您的系统资源”对您意味着什么?如果没有系统调用,您将无法启动任何用户应用程序...(至少,execve 的二进制可执行文件)。
  • 我不想要一个完整的独立程序,我不能忽略操作系统上运行的普通程序的系统调用。我的问题是我可以在特殊情况下访问和管理我的程序或其他程序的资源吗?

标签: windows linux unix operating-system native-code


【解决方案1】:

在大多数现代操作系统(包括 Linux 和 Windows)上直接访问硬件的唯一方法是通过内核代码。 Linux Device Drivers 是在 Linux 上编写此类代码的绝佳起点,即使它有点过时。

否则,操作系统会使用系统调用接口提供各种 I/O 设施并控制向用户应用程序分配资源。系统调用接口的基本概念在所有实际上在内核和用户代码之间有某种分离的操作系统中无处不在。使用软件中断是在当前硬件上实现系统调用的标准方式。

您需要一个系统调用来分配最少量的内存,甚至读取或写入单个字符。更不用说即使是一个什么都不做的程序通常也需要一些系统调用才能被加载。

如果您使用DOSexokernel 设计,您可以更直接地访问硬件。

但是为什么你还是要这样做?直接使用现代硬件绝非易事。

【讨论】:

  • 因为一个赌注!我自己的 CPU 时隙中的线程管理呢?
  • 好吧,您当然可以在不使用 OS MT 系统的情况下在自己的时间段中创建自己的线程概念,但它的功能并不那么强大。例如,您不能在不同的 CPU 内核中运行线程 - 没有实际的操作系统线程就不行。
  • @sia:你可能会觉得the GNU Portable Threads library很有趣...
  • 我相信你输了。内核的作用是抽象和管理原始 CPU 和硬件
  • @Basile Starynkevitch:我没有,我有机会管理和访问我自己的资源,这些资源已经被操作系统分配给我的程序。
猜你喜欢
  • 1970-01-01
  • 2010-10-26
  • 2012-02-18
  • 1970-01-01
  • 2011-05-19
  • 2014-03-23
  • 2017-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多