dylanin1999

导航

2022年8月13日 #

Linux的并发控制

摘要: 目录 中断屏蔽 原子操作 自旋锁 信号量 互斥体(Mutex) 访问共享资源的代码区域称为临界区(Critical Sections) 解决编译乱序问题, 需要通过barrier() 编译屏障进行 #define barrier() __asm__ __vol... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(143) 评论(0) 推荐(0)

Linux中断

摘要: 目录 中断 根据中断来源 内部中断 外部中断 根据中断是否可屏蔽 可屏蔽中断 不可屏蔽中断 中断入口跳转方法 向量中断 非向量中断 GIC(Generic Interrupt Controller) SGI(Software Generated Interru... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(423) 评论(0) 推荐(0)

Linux定时器

摘要: 目录 timer_list结构体: 初始化定时器以及初始化绑定参数 增加定时器 删除定时器 修改定时器 内核延时 短延迟 长延迟 睡着延迟 ​​​​​​​ 在Linux设备驱动编程中, 可以利用Linux内核中提供的一组函数和数据结构来完成定时触发工作或者完成... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(365) 评论(0) 推荐(0)

Linux 内存与I/O访问

摘要: 目录 内存空间与I/O空间 内存管理单元(MMU) TLB(Translation Lookaside Buffer) TTW(Translation Table walk) Linux内存管理 内存存取 内核空间内存动态申请 内存池 I/O 访问 I/O 内... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(532) 评论(0) 推荐(0)

Linux异步通知

摘要: 异步通知 作用:一旦设备就绪, 则主动通知应用程序, 这样应用程序根本就不需要查询设备状态, 这一点非常类似于硬件上“中断”的概念, 比较准确的称谓是“信号驱动的异步I/O”。 阻塞I/O意味着一直等待设备可访问后再访问, 非阻塞I/O中使用poll() ... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(102) 评论(0) 推荐(0)

Linux内核模块

摘要: 目录 模块(Module) 加载模块 卸载模块 查看模块信息 Linux内核模块程序结构 1、模块加载函数 2、模块卸载函数 3、模块许可证声明 4、模块参数(可选) 5、模块导出符号(可选) 6、模块作者等信息声明(可选) 模块使用计数 7、模块的编译 模块... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(126) 评论(0) 推荐(0)

Linux文件系统与设备文件

摘要: 打开 int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode); 读写 int read(int fd, const ... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(36) 评论(0) 推荐(0)

spinlock、mutex的使用与休眠

摘要: 最近在工作中遇到了一些关于锁的问题,遇到了一些困扰,记录一下 spinlock 自旋锁,会一直阻塞,直到能够获取到锁位置。 mutex 互斥量,如果拿不到锁,就会进行休眠,引起进程调度。 但是我们在做内核驱动的时候,总会遇到在某些场景下,不能使用某些锁的情况... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(196) 评论(0) 推荐(0)

Tensorflow导入训练模型进行识别(附代码)

摘要: 最近在做李宏毅的深度学习的作业,导入模型的时候,发现,我在导入模型进行预测时,需要重新手动构建网络进行检测,这样显得十分不“智能”。之前在比赛中一直是使用这种方法,但是由于当初比较忙,并没有深究这个问题。现在,学习了一下,发现使用Tensorflow 可以用两... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(204) 评论(0) 推荐(0)

Effective C++条款10~12

摘要: 条款10:令operator=返回一个reference to *this 这里的原因其实很好理解,一般来讲,我们都是通过重载‘=’来构建拷贝赋值函数。那没为什么一定要返回*this 的reference呢?因为我们可能赋值一般都会使用 obj1=obj2的... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(22) 评论(0) 推荐(0)