1.1Linux系统框架
什么是linux?
可以将Linux看做是由C语言编写的一个大的程序或者函数库;可以分为应用层(关注业务逻辑)和驱动层(提供函数接口),Linux系统大部分使用C语言编写只在系统的启动部分含有汇编代码。Linux提供了大量的资源比如网络协议栈,多任务处理,内存管理和设备管理等。
Linux框架:
应用程序通过系统调用来使用内核资源,系统调用一般通过软中断的方式。
系统调用:Linux内核中提供的一组用于实现各种系统功能的子程序,由操作系统核心提供,运行于内核态。
C库函数:由函数库或用户自己提供,运行于用户态。
软中断:由ARM对应的软件指令触发,不同于外部中断。
ARM处理器在硬件层面就已经支持了用户态(用户模式)和内核态(系统模式)。应用程序不能直接调用硬件。
ARM处理器的工作模式:
1、用户模式
2、系统模式
3、中断模式
Linux的文件系统
Linux启动后一定会挂接一个文件系统,文件系统可大可小,通过构造不同的文件系统可以衍生QT系统等其他系统,但其内核是相同的只是挂接的文件系统不同
Linux思想:一切皆文件都可以理解为write,open,read,close等
-
可挂载的文件系统:
1.2Linux应用程序编程
三个文件:
uboot.bin-->内核镜像文件-->文件系统镜像
![](https://img-blog.csdnimg.cn/fabd7d58a23246e7bcf5e8badd51449b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAd2VpeGluXzQ0NzY3ODkw,size_13,color_FFFFFF,t_70,g_se,x_16)
1.2.1、文件I/O:文件I/O(input/output)实际上就是对文件的读或者写操作如write()、read()、open()、close()、ioctl()等或者是文件描述符(文件句柄fd=open("目标文件")fd是打开目标文件返回的一个非负的整数 ,用来表示打开的文件后期可直接作为参数对打开的目标文件进行操作)
1.2.2、标准I/O:使用标准C库调用内核资源如fopen、fclose、fwrite等,特性是可移植性好
1.2.3、五种I/O模型:阻塞、非阻塞.、信号、多路复用、异步
1.2.4Linux多进程:多进程是多任务在Linux上的具体实现,多任务是操作系统的基本功能
进程的三种状态:就绪、阻塞(在等待IO或其他任务)、运行。
Fork(),分岔,子进程复制父进程的所有“资源”这里的资源是指父进程中的变量,堆栈等
进程之间的通信可以通过:管道(匿名管道和命名管道)、信号、信号量、消息队列、共享内存、套接字
单进程里可以运行多个线程,线程是操作系统时间片调度的最小单位,每个线程可以使用进程的全局变量。
线程生成函数:pthread_create()
线程同步:当多个线程公用一个资源时需要合理分配资源的方式其中有:互斥锁(使用时将设备锁起来别的线程就无法使用,使用完后再解锁释放设备)、条件变量、读写锁、信号量
1.2.5网络通信(socket编程)