操作系统的由来
- 裸机程序的特点:代码量小,功能简单、所有代码都和直接目的相关,没有服务性代码。
- 随着计算机技术的发展,计算机性能和资源大量增加,这时候代码也要分阶级进行分工。这时候就需要有操作系统,操作系统的代码本身不产生价值,它主要任务时管理所有资源。它主要为直接产生价值、直接劳动的那些应用程序提供服务。(操作系统既是管理者也是服务者)
操作系统的调用通道:API
操作系统负责管理和资源调配,应用程序负责具体的直接劳动,他们之间的接口就是APiece函数。当应用程序需要使用系统资源(譬如内存、CPU、硬件操作)就可以通过API向操作系统发出申请,然后操作系统响应申请帮助应用程序执行功能。
C库函数和API的关系
单纯的API只是提供了既简单没有任何封装的服务函数,可以应用函数可以使用但是不太好用。应用程序为了方便使用,对API进行了二次分装,于是就有了C库函数。所以说库函数是离不开API的。
当我们需要完成一个功能是,有相应的库函数可以完成,也有API可以完成.比如:API的接口open write read close;库函数的接口是fopen fwrite fread fclose.fopen本质上是使用open实现的,只是进行了封装.
不同平台下(windows\linux\裸机)库函数的差异
不同操作系统API是不同的,但是都能完成所有的任务,只是调用的API不同;不同系统下的API也不尽相同.
库函数在不同操作系统下也不同,但是相似性要更高一些;这是人为的,因为人们想要屏蔽不同操作系统的差异,因此在封装API成库函数的时候,尽量使用了同一套接口,所以封装出来的库函数很像.但是还是存在一些差异,所以在一个操作系统上写的应用程序不可能在另一个操作系统上编译运行.于是就出现了可移植行.跨操作系统可移植平台:比如QT\Java语言.
有了操作系统后,我们做一个产品可以先分成两部分:一部分负责做操作系统的(开发驱动的);一部分负责用操作系统实现具体的共能(开发应用);实际上 上层应用的功能杂化后又分了好多层.