天天看点

苏嵌实训-嵌入式linuxC第7天

项目名称 【苏嵌实训-嵌入式linuxC第7天】
今日进度以及任务 Linux下文件的创建、读写,线程
本日任务完成情况 基本掌握了文件的创建、读写,线程函数
本日开发中出现的问题汇总
本日未解决的问题
本日开发收获 学习了一些基本知识
其他

嵌入式Linux C编程:在Linux上使用C语言调用操作系统功能接口开发应用程序

  • 嵌入式为什么要移植操作系统?

    1、提供软件的一致性

    2、操作系统提供了多任务操作

    3、操作系统提供了丰富的网络协议栈

    4、操作系统将所有设备抽象成文件,方便访问设备

    嵌入式Linux C编程:文件、多任务、网络编程

  • Linux系统构成/划分;用户空间、内核空间

    <为什么将系统划分为用户空间、内核空间?保护内核的安全>

    <用户该如何访问内核空间?通过系统调用(内核提供安全的访问内核的数据及服务的接口)>

    <用户如何发生系统调用?调用系统提供的编程函数接口–API(用户编程接口)>

文件编程:

  • 文件描述符;系统给的文件ID号(无符号整型)

    <知道一个文件描述符、操作这个文件描述符,相当于在操作这个文件>

    <文件描述符的分配方式:动态分配(只有当你操作这个文件、系统才会给你分配文件描述符,使用完毕之后回收)>

    <0、1、2这三个文件描述符已经被系统占用,有特殊作用,所以说系统的普通文件id是从3开始的>

  • 文件API(记住头文件,记住函数原型(形参和返回值的作用),写测试,应用)

    creat\open\read\write\lseek\close

作业:

向文件中写入三行代码,再读出来

嵌入式Linux多任务编程

  • 什么是多任务?

    单任务:在一个任务执行期间,其他任务不能被调度

    多任务:

    <当前CPU单核,存在任务并发,不存在并行>

    <当前CPU多核,即存在并发,也存在并行>

  • 实现多任务的方式:进程、线程
  • 进程:实现多任务的开销较大,因为每个进程都有独立的地址空间,导致进程间的通信效率不高,优点:安全
  • 线程:实现多任务的开销小,因为每个线程共享地址空间,通信效率高,缺点:不安全
  • 进程切换计算机资源开销大, 进程间数据共享的开销也很大
  • 线程是进程的一个执行单元,是进程的一个调度实体
  • 同一进程的线程共享本进程的地址空间,进程之间是独立的共享空间
  • 进程退出后,进程中所有的线程全部退出
  • 一个进程崩溃后不会对其他进程产生影响,但一个线程崩溃,整个进程都要死掉 线程不可能完全替代进程
  • 多线程体现的就是函数的切换