Linux
文章平均质量分 84
方大锤
学习的过程不再枯燥乏味。
展开
-
Linux中的BIO和NIO
Linux中的BIO和NIO1. 概念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 · 521 阅读 · 0 评论 -
Linux并发控制
为了解决多核心竞争临界资源问题,Linux提高多种方式用于处理竞态问题。1. 整型原子操作头文件:<linux/atomic-fallback.h>设置原子变量的值//设置原子变量的值为ivoid atomic_set(atomic_t *v, int i);//定义原子变量,并初始化为0atomic_t v = ATOMIC_INIT(0);获取原子变量的值atomic_read(atomic_t *v);原子变量加、减void atomic_add(原创 2021-09-16 14:42:28 · 390 阅读 · 0 评论 -
Linux内核模块HelloWorld
内核模块内核整体架构非常庞大,编译时只把需要的功能编译到内核,其他部分可以编译成模块(.ko文件),在内核运行时,可动态注册模块到内核,也可卸载模块。本文代码:https://github.com/mxxlei/kernel_demo/tree/master/1-module-hello1. 内核模块hello world#include <linux/init.h>#include <linux/module.h>static int __init hello_ini原创 2021-09-16 13:09:21 · 896 阅读 · 0 评论 -
Linux内核编译与加载
Linux内核编译与加载内核目录结构目录说明arch硬件体系结构代码,每种平台占用一个目录,如I386、arm、mips。板级支持代码block块设备驱动程序IO调度crypto常用加密散列算法、校验算法documentation内核说明文档drivers设备驱动程序,各驱动类型占用一个目录,如char、block、net、mtd、i2c等fs支持的文件系统,如EXT、FAT、NTFS、JFFS2include头文件,系统相关头文原创 2021-09-16 13:06:39 · 399 阅读 · 0 评论