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