基于操作系统编程与裸机编程的区别

编程知识 行业动态 更新时间:2024-06-13 00:21:08

     因为学的是控制,刚开始的时候玩的单片机比较多,单片机进行开发的一个重要的特点就是裸机编程。也就是说内核跑的完完全全是你的代码。但是在操作系统上编程就完全不一样,因为你的程序大部分都在调用操作系统的接口函数,从而间接的管理硬件。操作系统搭好了框架,实现硬件抽象,文件存储管理,进程管理,本质上就是对cpu,i/o和存储器搭了一个管理框架,这种间接的管理方式使我刚接触ROS开发时产生了极大的不适应,我不知道我应该写什么,不知道函数和硬件之间的关系。就是当时很难理解接口的概念,总是在纠结底层。

   基于操作系统编程理解的第二个难点我觉得是进程,像我们写的应用程序,以windows举例,exe文件并非直接读取执行,而是有一个映射到进程管理空间的过程,windows是由PE装载器完成。

    整个过程我觉得可以分为五步,第一步是通过屏幕鼠标网络,u盘等I/O口将源码写入硬盘,第二部是进行编译,第三步是创建进程,第四步是进行映射,也就是映射到进程空间,第五步调用链接库时进行链接

  暂时先写这么多,有时间再补充,欢迎讨论。

21年7.15更新

 上班一周了,做的偏上层,自动驾驶的规划算法。因此被迫升级自己的C++能力,同时代码也是基于linux系统的。这两天又有了一些新的理解。

   废话不多说。

   人类科技水平发展的过程从另一个角度来看是偷懒的过程,有偷懒的需要,也就有了进步,编程语言也是这么发展的,汇编是针对硬件的语言,是机器语言直接对应过来的,与硬件的关联有个非常重要的问题就是程序不具备移植性,硬件变了代码也就变了。因此,c语言就出现了,目的就是减少与硬件过程的管理性,但是有可以对硬件进行操作,比如说可以管理内存,但是是一种统一的操作方式。

    操作系统也是如此的目的,是对硬件的抽象,因此你就无须直接操作硬件,因此当你需要操作硬件时,你的思维就应该转变了,不是去找相应的寄存器,而是去找相应的接口函数也就是API,即使不同操作系统的API存在差异,但是都会存在。

   这里随便插点题外话,c++相比其它语言对硬件又更加关注,对底层运行的控制更加精准,注重的是效率。

更多推荐

基于操作系统编程与裸机编程的区别

本文发布于:2023-03-31 05:16:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/4c0e3f3c05fb3de60e8c41932af00ec8.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:裸机   区别   操作系统

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!