嵌入式linux入门应用
文章平均质量分 87
介绍linux的操作入门:工具链的使用、进程、线程开发、之间的通讯
数贾电子科技
目前是上海电子信息职业技术学院的一名专任教师。专注嵌入式系统应用等课程教学。曾指导学生参加大学生电子设计大赛、职业技能国赛和世界技能大赛等赛项获奖。最近这几年与公司合作开发产品:智能充电柜、车载氛围灯、数据采集盒、智能压力传感器和车载数据检测仪等嵌入式产品。
展开
-
Linux 基础入门操作 第十章 多线程实现
线程是进程的一条执行路径。每个线程共享其所附属的进程的所有的资源,包括打开的文件、页表(因此也就共享整个用户态地址空间)、信号标识及动态分配的内存等等。线程和进程的关系是:线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一物理内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。线程技术早在 60 年代就被提出,但真正应用多线程到操作系统中去,是在 80 年代中期。传统的 Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。原创 2024-09-25 15:51:39 · 1094 阅读 · 0 评论 -
Linux 基础入门操作 第九章 进程之间通讯消息队列
msg_ptr 是一个指向准备发送消息的指针,但是消息的数据结构却有一定的要求,指针 msg_ptr 所指向的消息结构一定要是以一个长整型成员变量开始的结构体,接收函数将用这个成员来确定消息的类型。msg_sz 是 msg_ptr 指向的消息的长度,注意是消息的长度,而不是整个结构体的长度,也就是说 msg_sz是不包括长整型消息类型成员变量的长度。调用成功时,该函数返回放到接收缓存区中的字节数,消息被复制到由 msg_ptr 指向的用户分配的缓存区中,然后删除消息队列中的对应消息。原创 2024-09-19 21:04:33 · 510 阅读 · 0 评论 -
Linux 基础入门操作 第九章 进程之间通讯共享内存
不相关的进程可以通过该函数的返回值访问同一共享内存,它代表程序可能要使用的某个资源,程序对所有共享内存的访问都是间接的,程序先通过调用 shmget 函数并提供一个键,再由系统生成一个相应的共享内存标识符(shmget 函数的返回值),只有 shmget 函数才直接使用信号量键,所有其他的信号量函数使用由semget 函数返回的信号量标识符。第一次创建完共享内存时,它还不能被任何进程访问,shmat 函数的作用就是用来启动对该共享内存的访问,并把共享内存连接到当前进程的地址空间。原创 2024-09-19 20:46:25 · 581 阅读 · 0 评论 -
Linux 基础入门操作 第九章 进程之间通讯信号量
信号量与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。信号量有以下两种类型:二值信号量:最简单的信号量形式,信号灯的值只能取 0 或 1,类似于互斥锁。原创 2024-09-19 15:53:20 · 1757 阅读 · 0 评论 -
Linux 基础入门操作 第九章 进程间通信之管道
进程通信有如下一些目的:A、数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几 M 字节之间B、共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程,应该立刻看到。C、通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。D、资源共享:多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁和同步机制。原创 2024-09-19 13:51:12 · 1095 阅读 · 0 评论 -
Linux 基础入门操作-实验八 信号处理
信号 signal 处理是 Linux 程序的一个特色,用信号处理来模拟操作系统的中断功能,对于系统程序员来说是最好的一个选择了。原创 2024-09-19 11:16:18 · 967 阅读 · 0 评论 -
Linux 基础入门操作-实验七 进程的介绍
码段、堆栈段和数据段。代码段存放了程序的代码。代码段可以为机器中运行同一程序的数个进程共享。堆栈段存放的是子程序的返回地址、子程序的参数及程序的局部变量。而数据段则存放程序的全局变量、常数以及动态数据分配的数据空间,如用malloc函数申请的内存。与代码段不同,如果系统中同时运行多个相同的程序,它们不能使用同一堆栈段和数据段。1用户状态:用户状态下运行的状态;2内核状态:进程在内核状态下运行的状态;3内存中就绪:进程没有执行,但处于就绪状态,只要内核调度它,就可以执行;原创 2024-10-06 15:29:23 · 995 阅读 · 0 评论 -
Linux 基础入门操作 - 第六章时间操作
c语言的头文件位置常见的api的函数。原创 2024-10-06 14:42:40 · 809 阅读 · 0 评论 -
Linux 基础入门操作 - 第5章 基础文件操作
off_set:参数用来指定位置,偏移量,表示从whence指定的位置开始移动的字节数。将字符串buf中前nbytes个字节的数据写入与文件描述符fd关联的文件中,返回实际写入的字节数。从文件描述符fd相关的文件中读取nbytes个字节的数据到buf中,返回实际读入的字节数。size_t:返回值,返回成功读取的字符数,它可能会小于请求的字节数。对文件描述符fd指定文件的读写指针进行设置,也就是说,它可以设置文件的下一个读写位置。返回一个小于0的值,则出现错误,可以从错误errno中获取错误的状态。原创 2024-10-02 18:05:05 · 1154 阅读 · 0 评论 -
Linux 基础入门操作 - 第四章 GDB调试器调试程序
插入断点,就可以利用run指令来运行程序。list: 查看代码。break : 插入代码。next: 下一个插入。run : 运行程序。原创 2024-10-02 17:18:41 · 303 阅读 · 0 评论 -
Linux 基础入门操作-实验二 makefile使用介绍 和 实验三 hello 输出
Makefile 是 linux 下的项目管理工具,想象一下当有很多源文件需要编译、链接时,你只需执行 make命令即可完成编译操作,这样是不是很方便呢。make 命令执行时,需要一个 Makefile 文件,用来告诉 make命令需要怎么样的去编译和链接程序,下面详细介绍 Makefile 的使用与书写规则。原创 2024-09-16 14:44:21 · 726 阅读 · 0 评论 -
Linux 基础入门操作-实验一 GCC使用
源代码就是程序员写出来的一个个代码文件,包括头文件和源文件。机器码是 CPU 可以直接解读的数据,由 0、1 组成,跟平台相关,ARM 平台跟 x86 平台的机器码是不一样的。程序语言是为了方便程序员的开发而产生的,用机器码开发程序是不可能的,于是出现了汇编、c、c++、c#、java 等程序语言,它们都需要经过编译器的编译生成可执行程序(由机器码组成)。原创 2024-09-16 14:27:50 · 759 阅读 · 0 评论