Linux
文章平均质量分 84
方大锤
学习的过程不再枯燥乏味。
展开
-
Linux中的BIO和NIO
Linux中的BIO和NIO 1. 概念 BIO(阻塞IO) 执行某个操作时,若不能获得资源,则挂起进程知道满足条件获取资源后再执行。挂起进程的唤醒一般发生在中断里,因为硬件资源的获取一般伴随着一个中断 //以阻塞的方式从串口读取一个字符 char buf[20]; fd = open("/dev/ttyS1", O_RDWR); //阻塞读取字符 res = read(fd, &buf, 1); printf("%c\n", buf); NIO(非阻塞IO) 执行某个操作时,若不能获得资原创 2021-09-17 20:00:12 · 539 阅读 · 0 评论 -
Linux并发控制
为了解决多核心竞争临界资源问题,Linux提高多种方式用于处理竞态问题。 1. 整型原子操作 头文件:<linux/atomic-fallback.h> 设置原子变量的值 //设置原子变量的值为i void atomic_set(atomic_t *v, int i); //定义原子变量,并初始化为0 atomic_t v = ATOMIC_INIT(0); 获取原子变量的值 atomic_read(atomic_t *v); 原子变量加、减 void atomic_add(原创 2021-09-16 14:42:28 · 407 阅读 · 0 评论 -
Linux内核模块HelloWorld
内核模块 内核整体架构非常庞大,编译时只把需要的功能编译到内核,其他部分可以编译成模块(.ko文件),在内核运行时,可动态注册模块到内核,也可卸载模块。 本文代码:https://github.com/mxxlei/kernel_demo/tree/master/1-module-hello 1. 内核模块hello world #include <linux/init.h> #include <linux/module.h> static int __init hello_ini原创 2021-09-16 13:09:21 · 914 阅读 · 0 评论 -
Linux内核编译与加载
Linux内核编译与加载 内核目录结构 目录 说明 arch 硬件体系结构代码,每种平台占用一个目录,如I386、arm、mips。板级支持代码 block 块设备驱动程序IO调度 crypto 常用加密散列算法、校验算法 documentation 内核说明文档 drivers 设备驱动程序,各驱动类型占用一个目录,如char、block、net、mtd、i2c等 fs 支持的文件系统,如EXT、FAT、NTFS、JFFS2 include 头文件,系统相关头文原创 2021-09-16 13:06:39 · 412 阅读 · 0 评论