概念: 1> 阻塞操作      是指在执行设备操作时,若不能获得资源,则挂起进程直到满足操作条件后再进行操作.被挂起的进程进入休眠,被从调度器移走,直到条件满足: 2> 非阻塞操作  在不能进行设备操作时,并不挂起,它或者放弃,或者不停地查询,直到可以进行操作.非阻塞应用程序通常使用select系统调用查询是否可以对设备进行无阻塞的访问最终会引发设备驱动中poll函数执行. 1 /* * Theme for understanding the blocking and unblocking…
https://elixir.bootlin.com/linux/latest/source/fs/eventpoll.c#L1120…
Today, some one mention theknowledge of Select Mechanism. It's better to konw something about it ! Ongoing........…
EXPORT_SYMBOL的作用是什么? EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用,即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他模块使用. struct snd_card *snd_cards[SNDRV_CARDS]; EXPORT_SYMBOL(snd_cards); It makes a symbol accessible to dynamically loaded modules (pro…
1.安装基本编译环境 $sudo apt-get install build-essential $sudo apt-get install gdb 2.安装codeblock $sudo apt-get install codeblocks $sudo apt-get install codeblocks-dbg $sudo apt-get install wxformbuilder ($sudo apt-get install contrib,原文作者解释到,这是安装wxSmith,如果不安…
KVM Kernel-based Virtual Machine Internals, code and more http://slides.com/braoru/kvm#/ What behind KVM QEMU and KVM architecture overview KVM internals Very small Introduction to Libvirt KVM in 5 secondes Introduced to make VT-x/AMD-V available to…
原文来自:http://lwn.net/Articles/336224/ 选择感兴趣内容简单翻译了下: 在内核社区一直以来的兴趣是保证质量.我们需要保证和改善质量是显而易见的.但是如何做到却不是那么简单.一个广泛的办法是找到一些成功之处来增加内核在多方面的透明性.这将使得这些方面的质量变得更加明朗,因此将改变内核质量. 采用多种形式增加透明性: checkpatch.pl脚本突出显示了从已接受代码书写风格上的背离.这将鼓励使用此脚本的人去改正格式问题.因此,通过增加风格引导的透明性,我们增加了代…
linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, 驱动开发中设计到的硬件: * 数字电路知识 * ARM硬件知识 * 熟练使用万用表和示波器 * 看懂芯片手册和原理图 4, linux内核源代码目录结构: * arch/: arch子目录包括了所有和体系结构相关的核心代码.它的每一个子目录都代表一种支持的体系结构,例如i386就是关于intel c…
目录 . 引言 . Kill Process By Kill Command && SIGNAL . Kill Process By Resource Limits . Kill Process By Code Injection Into Running Process Via GDB . Kill Process By Using Cross Process Virtual Memory Modify To Crash Process && process_vm_wri…
转载自:http://linux.chinaunix.net/techdoc/install/2009/04/13/1107608.shtml 发信人: armlinux (armlinux), 信区: Embedded 标  题: 关于Embedded Linux启动的经典问题 发信站: 哈工大紫丁香 (Sun Aug 31 20:14:46 2003) On Sat 06 Apr, Arts Thibaut wrote: > due to compiling problem, i try t…
发现大量jdb2进程占用io资源.jdb2进程是一个文件系统的写journal的进程 kthreadd:这种内核线程只有一个,它的作用是管理调度其它的内核线程.它在内核初始化的时候被创建,会循环运行一个叫做kthreadd的函数,该函数的作用是运行kthread_create_list全局链表中维护的kthread.可以调用kthread_create创建一个kthread,它会被加入到kthread_create_list链表中,同时kthread_create会weak up kthread…
https://yq.aliyun.com/articles/11192?spm=0.0.0.0.hq1MsD 随着要维护的服务器增多,遇到的各种稀奇古怪的问题也会增多,要想彻底解决这些“小”问题往往需要更深的Linux方面的知识.越专业.分工越细的工程师,在这方面的要求也就越高.这次,对MySQL Swap的问题的探索过程,就一不小心掉进了Linux Memory Managemant(Linux MM)的研究中去了,爬了很久才出来,这里做一个系列笔记. 笔记中很多内容都是参考<Underst…
转:http://www.linuxforu.com/2012/05/ilinuxbot-designing-botnets-to-manage-linux-clients/ By Nishant Sharma on May 1, 2012 in Coding, Developers · 2 Comments This article is to encourage newbies to use a little creativity to solve real-world problems.…
Linux下Code::Blocks无法编译运行提示 /bin/sh: 1: g++ not found 的解决办法 今天在Ubuntu 12.04 软件中心中选装了Code::Blocks,安装完成后却连最简单的hello world 都无法编译运行. 编译时提示 /bin/sh: 1: g++: not found 运行时总提示 It seems that this file has not been built yet. Do you want to build it now? 因为系统没…
Useful Linux Web reources list Linux die manual Linux Man Pages Archive Linux RPM find Linux RPM Search Linux Source code Linux Kernel mail list archives Linux Kernel Archives Redhat Linux Documents IBM developerWorks - Linux Stackoverflow - Linux…
内核简单介绍 Linux 构成 Linux 为什么被划分为系统空间和内核空间 隔离核心程序和应用程序,实现对核心程序和数据的保护. 什么内核空间,用户空间 内核空间和用户空间是程序执行的两种不同的状态,Linux对自身软件系统进行了划分,一部分核心的软件独立于普通的软件,拥有特权级别,可以訪问平台的全部硬件和资源,称为"内核空间".而普通的软件执行在"用户空间",它仅仅拥有有限的系统资源,不能直接訪问内核空间和硬件资源. 将系统分为"内核空间"和…
本文转自:https://code.visualstudio.com/docs/languages/python Working with Python in Visual Studio Code, using the Microsoft Python extension, is simple, fun, and productive. The extension makes VS Code an excellent IDE, and works on any operating system…
Linux之RTOS学习 RTOS: Real time operating system 系统选型 可选方案 RTLinux - FSMLabs, WindRiver Systems - http://www.rtlinux.org/ ChronOS - Systems Software Research Group - http://chronoslinux.org OSADLinux - Open Source Automation Development Lab - https://ww…
Kernel Modules Versus Applications Kernel modules programming is similar to event driven programming. the task of the module's initialization function is to perpare for later invocation of the module's functions;it's as though the module were saying,…
python之IO多路复用 阅读目录 一 IO模型介绍 二 阻塞IO(blocking IO) 三 非阻塞IO(non-blocking IO) 四 多路复用IO(IO multiplexing) 五 异步IO(Asynchronous I/O) 六 IO模型比较分析 七 selectors模块 一 IO模型介绍 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题…
wc 统计文件的字节数.单词数.行数. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法         wc [选项]  file   2.选项列表 选项 说明 --version 显示命令版本信息 --help 显示帮助文档 -c | --bytes 仅显示字节数 -m | --chars 仅显示字符数 -l | --lines 仅显示行数 -L | --max-line-length 显示文件中最长行的字符数 -w…
paste 将文件以行的方式合并在一起,用tab字符分隔开,将结果送到标准输出.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法 paste [选项]  file   2.选项列表 选项 说明 --version 显示命令版本信息 --help 显示帮助文档 -d | --delimiters=LIST 指定间隔字符 -s | --serial 顺序的合并一个文件的多行到一行   3.实例 1)顺序合并文件,使用间隔符“:…
colrm 从标准输入读取数据,删除指定的列,然后送到标准输出.如果用一个参数调用,则将从指定的列开始删除每一行的列.如果使用两个参数调用,则将删除从第一列到最后一列的列.列编号以第1列开始. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法        colrm [startcol]  [endcol]   2.选项列表 无 3.实例 1)删除第5列之后的列 [root@192 weijie]# cat 1.c   …
join 找出两个文件中相同的字段,根据相同字段合并两个文件,将合并结果显示到标准输出. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法        join [选项]  file1  file2   2.选项列表 选项 说明 --version 显示命令版本信息 --help 显示帮助文档 -a 1或2 将文件中没有相同字段的行显示出来 -e string 如果在文件中找不到指定的字符串,在输出中填入选项中的字符串…
sed sed是一种流编辑器,用来从输入流中读取内容并完成转换,输入流可以来自一个文件,也可以来自一个管道. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法        sed [选项]  file   2.选项列表 选项 说明 --version 显示命令版本信息 --help 显示帮助文档 -n | --quite | --slient 静默模式 -e | --expression=script 给指令添加脚本 -…
ex ex会启动vim编辑器,它的执行效果和vim –E相同.从ex模式回到普通模式,可以在vim中输入:vim. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法         ex [选项]  file   2.选项列表 选项 说明 --version 显示命令版本信息 --help 显示帮助文档 +num 从文本的指定行开始显示 -b 进入二进制模式 -c 第一个文件编辑完成偶执行指定的指令 -d 进入diff模式…
vim vim是unix系统最通用的文本编辑器,它的功能可以说是非常强大了,它是vi的升级版.vim有三种工作模式:编辑模式.命令模式.末行模式,默认打开的时候进入命令模式. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. vim有许多内置命令,可以帮助我们更好的编辑文件 命令 说明 ESC 进入到命令模式 命令模式 a 从光标位置之后添加内容 A 从光标位置之后添加内容 i 从光标位置开始插入内容 I 从光标所在行的行首开始插入…
tac 将指定文件中的行,按照反序方式显示.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法         tac [选项]  file   2.选项列表 选项 说明 --version 显示命令版本信息 --help 显示帮助文档 -b | --before 将分隔符放到文件记录前 -r | --regex 将分隔符当做一般字符处理 -s | --separator=STRING 使用指定的间隔字符取代新建的控制字符…
tail 显示文本文件尾部的部分内容,默认显示最后10行. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法         tail [选项]  file   2.选项列表 选项 说明 --version 显示命令版本信息 --help 显示帮助文档 -c | --bytes=k 显示最后的k个字节 -f 持续读取文本尾部数据,通常用于监控日志文件 -F 等价于--follow=name -n | --lines=k 显…
od 将指定文件的内容以八进制.十进制.十六进制等编码方式显示.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法       od [选项]  file      od [-abcdfilosx]... [FILE]  [[+]OFFSET[.][b]]       od --traditional  [OPTION]... [FILE]  [[+]OFFSET[.][b]  [+][LABEL][.][b]]   2.选…