C语言修行之基础篇(十九) 详解裸机程序与操作系统


裸机程序与操作系统的含义

人类社会发展:人人都干活(没有专业分工,直接做产生价值的事,因为当时生产力低下,人口稀少)。
阶级:一部分人脱离了直接产生价值的体力劳动专职指挥(资源得到了更大限度的使用,优化了配置,提升整体效率)

裸机程序: 代码量小,功能简单、所有代码都和直接目的有关。(类比 人类社会发展最开始)
操作系统: 为了解决计算机性能和资源大量增加,所有代码都参加直接性的工作导致整体系统效率不高的问题。操作系统的代码本身不直接产生价值,它的主要任务是管理所有资源。主要为直接产生价值的程序(各种应用程序)提供服务。(类比 阶级)

这就引发了一个问题:软件系统到底是裸机好还是基于操作系统好?
答: 本质上是基于产品本身的复杂度。只有极简单的功能、使用极简单的CPU(如:单片机)的产品才会选择用裸机开发;一般复杂性产品都会选择基于操作系统来开发。


操作系统的调用通道 —— API函数

操作系统负责管理和资源调配,应用程序负责具体的直接劳动,他们之间的接口就是API函数。
当应用程序需要使用系统资源(如:内存、CPU、硬件操作)时就通过API向操作系统申请,然后操作系统响应申请帮助应用程序执行功能。


C库函数和API的关系

1、单纯的API只是提供了极简单没有任何封装的服务函数,这些函数应用程序是可用的,但是不太好用。应用程序为了好用,就对这个API进行了二次封装,把它变的好用一些,这就成了C库。

2、完成一个功能,有相应的库函数可以完成,也有API可以完成,用哪个都行。(如:读写文件API接口是open write read close ; 库函数的接口是fopen fwrite fread fclose )fopen本质上使用open实现的,只是进行封装。封装的目的:添加缓冲机制


不同平台(windows linux 裸机)下库函数的差异

1、不同操作系统API是不同的,但是都能完成所有的任务,只是完成一个任务调用的API不同

2、库函数在不同操作系统下也不同,但是相似度很高。因为有人下意识想要屏蔽不同屏蔽不同操作系统的差异,因此在封装API成库函数的时候,尽量使用同一套接口。所以封装出来的库函数都很像。但是还是有差异,所以在一个操作系统上写的应用程序不可能直接在另一个操作系统上编译运行。于是就有个可移植性出来了

3、跨操作系统可移植程序:如:QT,Jave

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bazinga bingo

您的鼓励就是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值