嵌入式工程师自我修养-Linux系统编程系列课程介绍:
该课程由具有6年嵌入式软件、Linux驱动一线开发经验,系统软件工程师研发编写。 该老师擅长Linux、USB、C语言、Python语言编程。熟悉芯片设计及产品方案开发流程。课程包含从入门到实战共计10期。
本合集包含:
第00期:Linux系统编程入门
第01期:揭开文件系统的神秘面纱
第02期:文件I/O编程实战
第03期:I/O缓存与内存映射
第04期:打通进程与终端的任督二脉
第05期:进程间通信
第06期:从零实现一个shell解释器
第07期:多线程编程入门
第08期:时间管理和定时器编程
练手项目:使用C语言实现协程
课程目录:
Linux系统编程 ├─ 第00期:入门篇 │ ├─ 0.1 什么是系统编程t?_ev.mp4 │ ├─ 0.10 GNU编码风格.mp4 │ ├─ 0.11 Linux哲学:一切皆文件.mp4 │ ├─ 0.12 编程实战:音频播放器(上).mp4 │ ├─ 0.13 编程实战:音频播放器(下)t.mp4 │ ├─ 0.14 后续课程学习路线t.mp4 │ ├─ 0.2 一个系统编程的例子(上)t.mp4 │ ├─ 0.3 一个系统编程的例子(下)t.mp4 │ ├─ 0.4 系统调用与C标准库.mp4 │ ├─ 0.5 POSIX标准.mp4 │ ├─ 0.6 系统编程必备技能(上):man命令.mp4 │ ├─ 0.7 系统编程必备技能(中):info命令.mp4 │ ├─ 0.8 系统编程必备技能(下):strace命令.mp4 │ ├─ 0.9 系统调用错误处理.mp4 │ ├─ Linux系统编程第00期.zip │ └─ 第00期:Linux系统编程入门 │ ├─ Linux系统编程00期:入门篇.pdf │ ├─ fruit.wav │ └─ linux_program_00.tar.gz ├─ 第01期:揭开文件系统的神秘面纱 │ ├─ 1.1 本期课程规划t_ev.mp4 │ ├─ 1.10 文件系统的挂载.mp4 │ ├─ 1.11 文件系统类型.mp4 │ ├─ 1.12 虚拟文件系统:VFS.mp4 │ ├─ 1.13 文件描述符.mp4 │ ├─ 1.14 文件指针.mp4 │ ├─ 1.15 硬链接和软链接.mp4 │ ├─ 1.16 一些命令.mp4 │ ├─ 1.17 实验:磁盘格式化及挂载.mp4 │ ├─ 1.18 实验:恢复删除的文件t.mp4 │ ├─ 1.2 文件在磁盘上的存储(上)t.mp4 │ ├─ 1.3 文件在磁盘上的存储(下).mp4 │ ├─ 1.4 文件在Flash上的存储(上).mp4 │ ├─ 1.5 文件在Flash上的存储(下).mp4 │ ├─ 1.6 文件系统索引节点:inode.mp4 │ ├─ 1.7 超级块:superblock.mp4 │ ├─ 1.8 目录和目录项.mp4 │ ├─ 1.9 文件路径解析.mp4 │ └─ 第01期:揭开文件系统神秘的面纱 │ └─ 第01期:揭开文件系统的神秘面纱.pdf ├─ 第02期:文件IO编程实战 │ ├─ 2.1 本期课程简介t_ev.mp4 │ ├─ 2.10 实现ls命令:支持-c参数.mp4 │ ├─ 2.11 音频播放器:实现循环列表播放.mp4 │ ├─ 2.12 实现ls命令:支持-l参数.mp4 │ ├─ 2.13 有关目录的其它操作.mp4 │ ├─ 2.14 相对路径转绝对路径.mp4 │ ├─ 2.15 编程实战:实现 wc 命令(上).mp4 │ ├─ 2.16 编程实战:实现 wc 命令(中).mp4 │ ├─ 2.17 编程实战:实现 wc 命令(下).mp4 │ ├─ 2.2 文件的打开模式t.mp4 │ ├─ 2.3 文件的读写权限t_ev.mp4 │ ├─ 2.4 文件的读写函数.mp4 │ ├─ 2.5 文件读写位置与定位.mp4 │ ├─ 2.6 获取文件的属性信息.mp4 │ ├─ 2.7 实现shell命令:ll.mp4 │ ├─ 2.8 读取目录文件内容.mp4 │ ├─ 2.9 实现ls命令:支持多个目录.mp4 │ └─ 第02期:文件IO编程实战 │ ├─ char2.tar │ └─ 第02期:文件IO编程实战.pdf ├─ 第03期:文件IO缓存与内存映射 │ ├─ 3.1 缓存的基本概念t_ev.mp4 │ ├─ 3.10 文件映射内存的实现.mp4 │ ├─ 3.11 将设备映射到内存.mp4 │ ├─ 3.2 页高速缓存(上)t.mp4 │ ├─ 3.3 页高速缓存(中)_ev.mp4 │ ├─ 3.4 页高速缓存(下).mp4 │ ├─ 3.5 块设备驱动架构.mp4 │ ├─ 3.6 用户空间的IO缓存.mp4 │ ├─ 3.7 Scatter_Gather IO.mp4 │ ├─ 3.8 直接IO.mp4 │ ├─ 3.9 将文件映射到内存.mp4 │ └─ 第03期:IO缓存与内存映射 │ ├─ chap3.tar │ └─ 第03期:IO缓存与内存映射.pdf ├─ 第04期:打通进程与终端的任督二脉 │ ├─ 4.1 进程:程序运行的“牌照”t_ev.mp4 │ ├─ 4.10 进程状态.mp4 │ ├─ 4.11 进程的UID和GID.mp4 │ ├─ 4.12 通过proc查看进程资源.mp4 │ ├─ 4.13 与进程通信:信号.mp4 │ ├─ 4.14 终端与控制台.mp4 │ ├─ 4.15 进程组与会话.mp4 │ ├─ 4.16 前台进程和后台进程.mp4 │ ├─ 4.17 守护进程.mp4 │ ├─ 4.18 僵尸进程.mp4 │ ├─ 4.19 孤儿进程.mp4 │ ├─ 4.2 创建一个进程:fork t.mp4 │ ├─ 4.20 0号进程和1号进程.mp4 │ ├─ 4.21 小结:Linux进程全景图.mp4 │ ├─ 4.3 子进程的运行:借壳上市_ev.mp4 │ ├─ 4.4 写时复制与vfork.mp4 │ ├─ 4.5 进程的退出:exit.mp4 │ ├─ 4.6 进程的退出:exit与_exit.mp4 │ ├─ 4.7 进程的退出:vfork与exit.mp4 │ ├─ 4.8 等待子进程终止:wait.mp4 │ ├─ 4.9 进程调度.mp4 │ └─ 第04期资料 │ ├─ Linux系统编程第04期:打通进程与终端的任督二脉.pdf │ └─ chap4.tar.gz ├─ 第05期:进程间通信 │ ├─ 5.1 什么是IPC?t_ev.mp4 │ ├─ 5.10 system V 消息队列.mp4 │ ├─ 5.11 消息队列应用:点对点通信.mp4 │ ├─ 5.12 消息队列应用:多人聊天室.mp4 │ ├─ 5.13 system V 共享内存.mp4 │ ├─ 5.14 system V 信号量.mp4 │ ├─ 5.15 信号量编程应用:对共享内存的同步访问.mp4 │ ├─ 5.16 信号量编程应用:生产者-消费者模型.mp4 │ ├─ 5.17 POSIX IPC简介.mp4 │ ├─ 5.18 消息队列(上):API编程实例.mp4 │ ├─ 5.19 消息队列(中):异步通知.mp4 │ ├─ 5.2 无名管道(1):PIPE编程实例5.mp4 │ ├─ 5.20 消息队列(下):内核实现.mp4 │ ├─ 5.21 POSIX 信号量.mp4 │ ├─ 5.22 POSIX 共享内存.mp4 │ ├─ 5.23 文件锁.mp4 │ ├─ 5.24 信号机制:signal.mp4 │ ├─ 5.25 编写安全的信号处理函数.mp4 │ ├─ 5.26 信号底层API:sigaction函数.mp4 │ ├─ 5.27 Linux新增API:signalfd.mp4 │ ├─ 5.28 Linux新增API:timerfd.mp4 │ ├─ 5.29 Linux新增API:eventfd.mp4 │ ├─ 5.3 无名管道(2):shell中的管道实现_ev.mp4 │ ├─ 5.30 D-BUS总线简介及小结.mp4 │ ├─ 5.4 无名管道(3):通过管道与shell命令进行通信.mp4 │ ├─ 5.5 无名管道(4):通过管道同步进程.mp4 │ ├─ 5.6 命名管道:FIFO.mp4 │ ├─ 5.7 FIFO应用:LOG日志系统的实现.mp4 │ ├─ 5.8 FIFO应用:服务端与客户端通信.mp4 │ ├─ 5.9 IPC 对象和 IPC key.mp4 │ └─ 第05期:进程间通信 │ ├─ Linux_ipc_programing_chap5 │ └─ chap5:Linux_ipc_programing.pdf ├─ 第06期:从零实现一个shell解释器 │ ├─ 6.1 什么是shell解释器t_ev.mp4 │ ├─ 6.10 支持进程的后台运行.mp4 │ ├─ 6.11 实现shell的管道命令(上):思路分析.mp4 │ ├─ 6.12 实现shell的管道命令(下):编码实现.mp4 │ ├─ 6.13 实现脚本的解析和运行.mp4 │ ├─ 6.14 实现shell脚本语法:if-else流程控制.mp4 │ ├─ 6.15 shell变量的实现.mp4 │ ├─ 6.16 设置shell的环境变量.mp4 │ ├─ 6.17 实现shell的export命令.mp4 │ ├─ 6.18 代码优化及小结.mp4 │ ├─ 6.2 shell命令的执行过程t.mp4 │ ├─ 6.3 在子进程中运行shell命令_ev.mp4 │ ├─ 6.4 解析用户输入的命令并执行.mp4 │ ├─ 6.5 代码优化及封装.mp4 │ ├─ 6.6 打印彩色命令提示符.mp4 │ ├─ 6.7 实现shell内建命令:cd.mp4 │ ├─ 6.8 实现shell内建命令:exit.mp4 │ ├─ 6.9 增加对信号的处理操作.mp4 │ └─ 第06期:从零实现一个shell解释器 │ └─ shell.tar.gz ├─ 第07期:多线程编程入门 │ ├─ 7.1 多线程编程的概念t_ev.mp4 │ ├─ 7.10 线程同步:条件变量(上).mp4 │ ├─ 7.11 线程同步:条件变量(下).mp4 │ ├─ 7.12 线程同步:读写锁.mp4 │ ├─ 7.13 线程池的概念.mp4 │ ├─ 7.14 超线程技术.mp4 │ ├─ 7.15 线程的概念.mp4 │ ├─ 7.2 多线程学习准备工作t.mp4 │ ├─ 7.3 创建一个新线程:pthread_create_ev.mp4 │ ├─ 7.4 线程的终止.mp4 │ ├─ 7.5 等待线程的终止.mp4 │ ├─ 7.6 线程属性.mp4 │ ├─ 7.7 线程的调度与运行.mp4 │ ├─ 7.8 线程安全.mp4 │ ├─ 7.9 线程同步:互斥锁.mp4 │ └─ 第07期:多线程编程入门 │ ├─ pthread.tar.gz │ └─ 第07期:多线程编程入门.pdf ├─ 第08期:时间管理和定时器编程 │ ├─ 8.1 时间的概念5_ev.mp4 │ ├─ 8.10 Linux中的定时器:alarm.mp4 │ ├─ 8.11 Linux中的定时器:interval timer.mp4 │ ├─ 8.12 Linux中的定时器:POSIX timer(上).mp4 │ ├─ 8.13 Linux中的定时器:POSIX timer(下).mp4 │ ├─ 8.2 时间的计量.mp4 │ ├─ 8.3 Linux系统中的时间管理_ev.mp4 │ ├─ 8.4 获取当前的时间.mp4 │ ├─ 8.5 时间格式转换.mp4 │ ├─ 8.6 将时间转换为字符串.mp4 │ ├─ 8.7 用户指定格式的字符串.mp4 │ ├─ 8.8 获取高精度时间:微秒.mp4 │ ├─ 8.9 获取高精度时间:纳秒.mp4 │ └─ 第08期:时间管理和定时器编程 │ ├─ 第08期:时间管理和定时器编程.tar.gz │ └─ 第08期:时间管理和定时器编程.pdf └─ 练手项目:使用C语言实现协程 ├─ 1. 什么是协程?t_ev.mp4 ├─ 10. 实现协程的API:coroutine_create.mp4 ├─ 11. 实现协程的API:coroutine_yield.mp4 ├─ 12. 实现协程的API:coroutine_resume.mp4 ├─ 13. 优化coroutine_yield的参数.mp4 ├─ 14. 支持给协程传递参数.mp4 ├─ 15. 修改协程栈为动态内存.mp4 ├─ 16. 支持用户指定协程栈大小.mp4 ├─ 17. 一个测试应用程序.mp4 ├─ 2.协程的实现原理t.mp4 ├─ 3. 保存和设置当前函数上下文_ev.mp4 ├─ 4.添加项目的Makefile.mp4 ├─ 5. 继续完善我们的API.mp4 ├─ 6. 使用POSIX API:getcontext.mp4 ├─ 7. 使用POSIX API:makecontext.mp4 ├─ 8. 使用POSIX API:swapcontext.mp4 ├─ 9. 使用swapcontext切换func1和func2.mp4 └─ 练手项目:使用C语言实现协程 └─ coroutine.tar.gz