如何编写不依赖操作系统的程序。就是裸机上可以运行的。汇编或c语言生成文件都是exe啊只能在win下

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何编写不依赖操作系统的程序。就是裸机上可以运行的。汇编或c语言生成文件都是exe啊只能在win下相关的知识,希望对你有一定的参考价值。

其实代码都差不多。
平时做的程序,生产exe是因为在编译的时候,链接了编译器给的入口,然后代码里面以main作为起始运行。
而如果编译的时候,不指定这个入口,而是采用其它的不依赖于操作系统的接口,那么就可以裸机跑了。常见的,包括uboot, ecos,ucosII,eboot等等,这些都是有类似实现的。 感兴趣可以看看uboot源码,spl阶段和uboot阶段都是类似方式处理的。追问

参考技术A 回答这个问题会在操作系统的定义上发生争论:如果说windows,linux,unix......这些才算操作系统的话,那么简单, 首先你向各个硬件厂商拿到各个接口(如果你本身对这些硬件非常了解, 那么自己写硬件接口), 然后你在你的程序上直接对各个硬件接口进行直接控制; 而那些所谓的标准库, 系统库都用不到了;;;;
如果说操作系统的定义是: 硬件的整合; 那么你程序本身就是自带操作系统了;
要知道BOIS本身就是操作系统的一种(basic input output system); 所以关键是怎么定义操作系统;;;;;
楼上那个回答是误人子弟的,不知道为什么会变为最佳答案, 所以我才回答;
参考技术B 不可能。操作系统是软件程序赖以存在的平台,是连接底层硬件和用户应用层之间的桥梁。没有操作系统,你怎么去控制硬件。 参考技术C 参考:orange's 一个操作系统的实现

操作系统

目标

  • 了解操作系统及作用

1. 操作系统(Operation System,OS)

操作系统作为接口的示意图

技术图片

没有安装操作系统的计算机,通常被称为 裸机

  • 如果想在 裸机 上运行自己所编写的程序,就必须用机器语言书写程序
  • 如果计算机上安装了操作系统,就可以在操作系统上安装支持的高级语言环境,用高级语言开发程序

1.1 操作系统的作用

  • 是现代计算机系统中 最基本和最重要 的系统软件
  • 是 配置在计算机硬件上的第一层软件,是对硬件系统的首次扩展
  • 主要作用是管理好硬件设备,并为用户和应用程序提供一个简单的接口,以便于使用
  • 而其他的诸如编译程序、数据库管理系统,以及大量的应用软件,都直接依赖于操作系统的支持

1.2 不同应用领域的主流操作系统

  • 桌面操作系统
  • 服务器操作系统
  • 嵌入式操作系统
  • 移动设备操作系统

1> 桌面操作系统

  • Windows 系列
    • 用户群体大
  • macOS
    • 适合于开发人员
  • Linux
    • 应用软件少

2> 服务器操作系统

  • Linux
    • 安全、稳定、免费
    • 占有率高
  • Windows Server
    • 付费
    • 占有率低

技术图片

3> 嵌入式操作系统

  • Linux

4> 移动设备操作系统

  • iOS
  • Android(基于 Linux

1.3 虚拟机

虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统

  • 虚拟系统通过生成现有操作系统的全新虚拟镜像,具有真实操作系统完全一样的功能
  • 进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软件,保存数据,拥有自己的独立桌面,不会对真正的系统产生任何影响
  • 而且能够在现有系统与虚拟镜像之间灵活切换的一类操作系统

以上是关于如何编写不依赖操作系统的程序。就是裸机上可以运行的。汇编或c语言生成文件都是exe啊只能在win下的主要内容,如果未能解决你的问题,请参考以下文章

软件可以在裸机上执行吗? [复制]

浅谈裸机开发的重要性

操作系统的初步认识(Operation System,OS)

Linux

linux

操作系统