嵌入式linuxC语言开发概述

1、和嵌入式C语言开发的区别

        是否有操作系统(Linux大名写的很清楚,不能忘)

2、操作系统作用?

        操作系统用来管理计算机软硬件资源

内容:文件管理 进程管理内存管理 设备管理 网络协议栈管理

3、操作系统的构成

       内存上分为用户空间和内核空间(为了更好地保护内核不被随意修改和访问,防止内核数据或空间受到破坏,计算机无法运行),逻辑上是隔离的,实际是相邻的

4、系统调用 API C库函数

        系统调用(过程) API  (操作系统提供的接口,用来访问内核) C库函数(对系统提供的功能函数进行封装)

        API=系统调用(个人方便理解,实际不等)

 下面的定义相当冗长,斟酌阅读(别怪我没提醒你)

        系统调用

        操作系统提供给用户的一组特殊接口,用户程序可以通过这组特殊接口来获得操作系统内核提供的服务,系统调用是一种中断服务机制,需要提出申请占用CPU或某些资源来对硬件访问与操做,如I/O操作,文件的读取更新等(个人理解:是一个过程)

        API(接口)

        应用程序接口,是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定。  用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。由操作系统实现提供的所有系统调用所构成的集合即程序接口或应用编程接口API。是应用程序同系统之间的接口。(个人理解:连接内核函数,发生系统调用,进行功能的实现)

        操作系统是用户与计算机硬件系统之间的接口,用户通过操作系统的帮助,可以快速、有效和安全、可靠地操纵计算机系统中的各类资源,以处理自己的程序。为使用户能方便地使用操作系统,OS 又向用户提供了如下两类接口:
(1) 用户接口:操作系统专门为用户提供了“用户与操作系统的接口” ,通常称为用户接口。该接口支持用户与 OS 之间进行交互,即由用户向 OS 请求提供特定的服务,而系统则把服务的结果返回给用户。
(2) 程序接口:操作系统向编程人员提供了“程序与操作系统的接口” ,简称程序接口,又称应用程序接口 API(Application Programming Interface)。 该接口是为程序员在编程时使用的,系统和应用程序通过这个接口,可在执行中访问系统中的资源和取得 OS 的服务,它也是程序能取得操作系统服务的唯一途径。大多数操作系统的程序接口是由一组系统调用(system call)组成,每一个系统调用都是一个能完成特定功能的子程序 [2]  。
应用程序接口又称为应用编程接口,是一组定义、程序及协议的集合,通过 API接口实现计算机软件之间的相互通信。API 的一个主要功能是提供通用功能集。API同时也是一种中间件,为各种不同平台提供数据共享。程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的可维护性和可扩展性。(百度词条)

API和系统调用的区别?
           API,win32API也就是MicrosoftWindows32位平台的应用程序编程接口。windows规定一切的应用程序优先级为3,为windows自己的为0(0最高,3最低)。windows不允许应用程序直接访问硬件,但是会提供API函数让用户间接地访问,这样就会调用系统级API。平时出现的“…非法操作”就是因为应用程序非法访问硬件造成的。

API分为两种:

           第一:用户级API;替用户写好函数,方便调用,使程序员可以将焦点放在设计程序逻辑上面,而不必再编写繁琐、重复的程序,不必关注技术的细节。例如VC++,MFC,VB等都是类库和各种控件,它代替了API的神秘功能。

           第二:系统级API;如果应用程序想要和硬件交互,必须调用此类函数。程序员调用的是API(api函数),然后通过与系统调用共同完成函数的功能。因此,API是一个提供给应用程序的接口,一组函数,是与程序猿直接进行交互的。系统调用则不与程序员进行交互,它是根据API函数,通过一个软件中断机制向内核提交请求(trap指令类似于一个系统中断,系统也会有一个特殊的中断处理函数(interrupt handler)来处理用户的请求),以获得内核服务的接口。并不是所有的API函数都一一对应一个系统的调用,有时,一个API函数会需要几个系统调用共同来完成函数的功能,甚至一些API函数不需要调用相应的系统调用,不需要内核提供的服务。

        C库函数(成品):对系统提供的一个或多个函数进行封装,更能满足程序员的需求,更人性化。(个人理解:人性化功能的组合应用)

         系统调用和库函数之间的联系与区别:

           事实上,系统调用所提供给用户的是直接而纯碎的高级服务,如果想要更加人性化,具有更符合特定情况的功能,那么就要我们用户自己定义,因此衍生了库函数,它把部分系统调用包装起来。比如当我们要用C语言打印一句话的时候,如果没有用到库函数printf,那么我们就需要自己实现就需要调用putc()和write()等这样一些系统函数。显得比较麻烦,所以系统调用是为了方便使用操作系统的接口,而库函数则是为了人们编程的方便。库函数的调用是语言或者应用程序的一部分,而系统调用则是操作系统的一部分。系统调用是应用程序与内核交互的接口。人们在长期的编程中发现使用系统函数有个重大的缺点,那就是程序的移植性。例如linux提供的系统调用的函数和windows就不一样。但是大部分的系统调用函数的速度库函数调用的速度要快。

5、C库函数和API对比

      C库函数   库函数调用则是面向应用开发的,相当于应用程序的API

(1)有缓冲区     相比API处理普通文件更快,频繁操作大文件时,节约时间,读写效率高
(2)移植性好,可跨平台windows 和 Linux都能用

     API

(1)无缓冲区

(2)是操作系统提供,移植性差

(3)可以用来处理特殊文件 设备文件等

6、用户安全访问内核的方式(发生中断)

        (1)软件中断                          API 、C库函数(相当于在软件和操作系统之间的中间件)

        (2)硬件中断

7、为什么要学习嵌入式Linux C开发

        嵌入式上层软件开发

        嵌入式底层软件测试程序

8、学习目标

        1.实战OS下的应用开发

        2.熟悉操作系统原理: 文件编程 进程管理 内存管理

        3.熟悉网络协议栈

        4.应对面试

9、就业前景

        服务器开发

        数据库处理

10、如何学习

1.学习内容:C语言(基础)、操作系统、计算机网络        这是真的,不开玩笑

2.学习资料(我不是托,这是老师推荐给我们的)

        Linux程序设计、Linux C库函数手册、再找两个计算机的操作系统和网络的书没必要去买
3.学会阅读文档(官话)

4.分析解决问题(学啥都要)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

碳水生活

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值