![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux/Kernel
文章平均质量分 73
hustyangju
这个作者很懒,什么都没留下…
展开
-
netstate 与 tcpdump
netstat常见参数-a (all)显示所有选项,默认不显示LISTEN相关-t (tcp)仅显示tcp相关选项-u (udp)仅显示udp相关选项-n 拒绝显示别名,能显示数字的全部转化成数字。-l 仅列出有在 Listen (监听) 的服務状态-p 显示建立相关链接的程序名-r 显示路由信息,路由表-e 显示扩展信息,例如uid等-s 按各转载 2015-09-13 22:01:46 · 2082 阅读 · 0 评论 -
Linux系统调用过程分析
参考:《Linux内核设计与实现》0 摘要linux的系统调用过程:层次如下:用户程序------>C库(即API):INT 0x80 ----->system_call------->系统调用服务例程-------->内核程序先说明一下,我们常说的用户API其实就是系统提供的C库。系统调用是通过软中断指令 INT 0x80 实现的,而这条INT 0x80指令就被封装在原创 2014-10-21 10:23:33 · 6346 阅读 · 1 评论 -
Linux 2.6 完全公平调度算法CFS(Completely Fair Scheduler)分析
转自http://www.ibm.com/developerworks/cn/linux/l-completely-fair-scheduler/index.html?ca=drs-cn-0125Linux 调度器简史早期的 Linux 调度器使用了最低的设计,它显然不关注具有很多处理器的大型架构,更不用说是超线程了。1.2 Linux 调度器使用了环形队列用于可运行的任务管理,使用循环调原创 2014-10-21 08:52:45 · 4008 阅读 · 0 评论 -
信号量semaphore解析
1 基础概念信号量在创建时需要设置一个初始值,表示同时可以有几个任务可以访问该信号量保护的共享资源,初始值为1就变成互斥锁(Mutex),即同时只能有一个任务可以访问信号量保护的共享资源。一个任务要想访问共享资源,首先必须得到信号量,获取信号量的操作将把信号量的值减1,若当前信号量的值为负数,表明无法获得信号量,该任务必须挂起在该信号量的等待队列等待该信号量可用;若当前信号量的值为原创 2014-10-23 10:46:00 · 2053 阅读 · 1 评论 -
Linux软连接和硬链接
作者:iTech出处:http://itech.cnblogs.com/ 1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。【硬连接】硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称原创 2014-11-04 09:27:18 · 888 阅读 · 0 评论 -
Linux进程和线程的比较
进程与线程参考:http://www.cnblogs.com/blueclue/archive/2010/07/16/1778855.html首先比较Linux进程和线程的创建的区别,以此展开:创建进程:(1)调用fork(),为子进程新建内核栈、pthread_info和task_struct,复制父进程的大部分的参数,采用写时复制(copy-on-write)辅助父进程原创 2014-10-17 15:26:46 · 1617 阅读 · 0 评论 -
Spin lock 与mutex
POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用就是用Pthreads提供的锁机制(lock)来对多个线程之间共 享的临界区(Critical Section)进行保护(另一种常用的同步机制是barrier)。Pthreads提供了多种转载 2014-10-15 10:58:34 · 981 阅读 · 0 评论 -
Linux内核调试printk()总结
我们在使用printk()函数中使用日志级别为的是使编程人员在编程过程中自定义地进行信息的输出,更加容易地掌握系统当前的状况。对程序的调试起到了很重要的作用。(下文中的日志级别和控制台日志控制级别是一个意思)printk(日志级别 "消息文本");这里的日志级别通俗的说指的是对文本信息的一种输出范围上的指定。日志级别一共有8个级别,printk的日志级别定义如下(在linu原创 2014-10-30 11:27:11 · 1997 阅读 · 0 评论 -
Linux设备驱动:kobject原理与实例分析
1、Sysfs文件系统"sysfsis a ram-based filesystem initially based on ramfs. It provides ameans to export kernel data structures, their attributes, and thelinkages between them to userspace.”Linux2.6内原创 2014-10-30 10:47:51 · 2936 阅读 · 0 评论 -
抢占式内核与非抢占式内核中的自旋锁(spinlock)的区别
一、概括(1)自旋锁适用于SMP系统,UP系统用spinlock是作死。(2)保护模式下禁止内核抢占的方法:1、执行终端服务例程时2、执行软中断和tasklet时3、设置本地CPU计数器preempt_count(3)自旋锁的忙等待的实际意义是:尝试获取自旋锁的另一个进程不断尝试获取被占用的自旋锁,中间只pause一下!(4)在抢占式内核的spin_lock宏中,第一次关抢占,目的原创 2014-11-14 11:18:04 · 2500 阅读 · 0 评论 -
Linux内核中进程上下文和中断上下文的理解
参考:http://www.embedu.org/Column/Column240.htmhttp://www.cnblogs.com/Anker/p/3269106.html用户空间与内核空间 有了用户空间和内核空间,整个linux内部结构可以分为三部分,从最底层到最上层依次是:硬件-->内核空间-->用户空间。如下图所示:原创 2014-10-17 09:37:56 · 3763 阅读 · 0 评论 -
如何使用随机数函数
srand函数是随机数发生器的初始化函数,原型: void srand(unsigned seed); 它需要提供一个种子,如: srand(1); 直接使用1来初始化种子。 不过常常使用系统时间来初始化,即使用 time函数来获得系统时间,它的返回值为从 00:00:00 GMT, January 1, 1970 到现在所持续的秒数,然后将time_t型数原创 2014-11-24 03:24:16 · 1597 阅读 · 0 评论 -
shell脚本 for循环实现文件和目录遍历
一个for循环实现一个目录下的文件和目录遍历,很实用[root@localhost shell_order]# cat test27.sh #!/bin/bash#print the directory and filefor file in /home/hustyangju/*doif [ -d "$file" ]then echo "$file is directory"原创 2015-09-08 09:54:00 · 78793 阅读 · 1 评论 -
ipcs余ipcrm
ipcs 命令用途报告进程间通信设施状态。语法ipcs [ -m] [ -q] [ -s] [ -S] [ -P] [ -l] [ -a | -b -c -o -p -t] [ -T] [ -C CoreFile] [ -N Kernel ]描述ipcs 命令往标准输出写入一些关于活动进程间通信设施的信息。如果没有指定任何标志,ipcs 命令用简短格式写转载 2015-09-13 22:03:23 · 757 阅读 · 0 评论 -
linux中fork()函数详解(原创!!实例讲解)
一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进转载 2015-09-06 16:44:48 · 578 阅读 · 0 评论 -
grep用法详解 grep与正则表达式
正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串。vim、grep、awk 、sed 都支持正则表达式,也正是因为由于它们支持正则,才显得它们强大;在以前上班的公司里,由于公司是基于web的服务型网站(nginx),对正则的需求比 较大,所以也花了点时间研究正则,特与大家分享下: 1基础正则表达式 grep 工具,以前介绍过。 grep转载 2015-08-20 09:34:01 · 488 阅读 · 0 评论 -
linux sed 命令
1. Sed简介sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介转载 2015-09-09 14:39:37 · 651 阅读 · 0 评论 -
linux wc 命令
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。1.命令格式:wc [选项]文件...2.命令功能:统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数。3.命令参数:-c 统计字节数。转载 2015-09-07 19:39:32 · 831 阅读 · 0 评论 -
linux 串口编程
.串口概述 常见数据通信方式:并行通信,串行通信 UART的主要操作: >数据发送及接受 >产生中断 >产生波特率 >Loopback模式 >红外模式 >自动流控模式 串口参数的配置主要包括:波特率、数据位、停止位、流控协议。 linux中的串口设备文件放于/de/目录下,串口一,串口二分别为"/dev/ttyS0","/dev转载 2015-08-10 16:34:44 · 782 阅读 · 0 评论 -
diff命令详解
diff命令参数: diff - 找出两个文件的不同点 总览 diff [选项] 源文件 目标文件 下面是 GNU所接受的 diff 的所有选项的概要. 大多数的选项有两个相同的名字,一个是单个的跟在 - 后面字母, 另一个是由 – 引出的长名字. 多个单字母选项(除非它们产生歧义)能够组合为单行的命令行语法 -ac 是等同于 -a -c. 长命名的选项能被缩短到他们的名字的任何唯一的前缀.原创 2015-07-07 10:05:43 · 2457 阅读 · 0 评论 -
linux中memset的正确用法
【起因】希望对各种类型的数组进行初始化,避免野值 【函数头文件】 提示:在linux中可以在terminal中输入 "man memset"进行查询 #include void *memset(void *s, int c, size_t n); 【使用说明】 The memset() function fills the转载 2015-04-13 20:04:30 · 7972 阅读 · 0 评论 -
Linux进程地址空间的理解
对于Linux的虚拟内存的理解,这个例子算是一个很好的引导了,原文链接:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=26683523&id=3201345《Linux内核设计与实现》15章节给出的例子更详细些。*********************************************************原创 2014-10-28 15:57:40 · 4448 阅读 · 0 评论 -
Linux X86下的TLB机制分析
TLB - translation lookaside buffer快表,直译为翻译后备缓冲器,也可以理解为页表缓冲,地址变换高速缓存。由于页表存放在主存中,因此程序每次访存至少需要两次:一次访存获取物理地址,第二次访存才获得数据。提高访存性能的关键在于依靠页表的访问局部性。当一个转换的虚拟页号被使用时,它可能在不久的将来再次被使用到,。TLB是一种高速缓存,内存管理硬件使原创 2014-10-29 16:17:30 · 2404 阅读 · 0 评论 -
Linux内核中ioremap映射的透彻理解
几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I/O映射方式(I/O-mapped) 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如原创 2014-03-04 16:01:00 · 9083 阅读 · 1 评论 -
readb(), readw(), readl(),writeb(), writew(), writel() 宏函数
readb(), readw(), readl()函数功能:从内存映射的 I/O 空间读取数据。readb 从 I/O 读取 8 位数据 ( 1 字节 );readw 从 I/O 读取 16 位数据 ( 2 字节 );readl 从 I/O 读取 32 位数据 ( 4 字节 )。原型:#include unsigned char readb (unsign原创 2014-03-04 10:44:35 · 17936 阅读 · 0 评论 -
如何编译Linux的内核
内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。本文将以RedHat Linux 6.0(kernel 2.2.5)原创 2014-02-21 16:13:00 · 1030 阅读 · 0 评论 -
Linux下nm和ldd 命令
nm用来列出目标文件的符号清单。下面是nm命令的格式:nm [-a | --debug-syms] [-g | --extern-only] [-B][-C | --demangle] [-D | --dynamic] [-s | --print-armap][-o | --print-file-name] [-n | --numeric-sort][-p | --no-sort] [-r原创 2014-01-15 11:27:55 · 1371 阅读 · 0 评论 -
coredump简介与coredump原因总结
什么是coredump?通常情况下coredmp包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息等。可以理解为把程序工作的当前状态存储成一个文件。许多程序和操作系统出错时会自动生成一个core文件。如何使用coredump?coredump可以用在很多场合,使用Linux,或者solaris的人可能都有过这种经历,系统在跑一些压力测试或者系统负载一大的转载 2013-11-05 20:33:29 · 869 阅读 · 0 评论 -
linux中的hotplug技术实现监控u盘插拔
#include #include #include #include #include #include #include #include #include #include static intinit_hotplug_sock (void){ struct sockaddr_nl snl; const int buff转载 2013-07-01 17:22:57 · 1901 阅读 · 0 评论 -
Linux 热插拔(Hot Plug)处理机制
将可移动设备连入系统时,系统的后台中会依次发生如下事件:内核检测到新硬件插入,然后分别通知hotplug和udev。前者用来装入相应的内核模块(如usb-storage),而后者用来在/dev中创建相应的设备节点(如/dev/sda1)udev创建了相应的设备节点之后,会将这一消息通知hal的守护程序(hald)。当然udev还得保证新创建的设备节点可以被普通用户访问。hotplug装转载 2013-07-02 09:21:55 · 2503 阅读 · 0 评论 -
linux下 /etc/fstab和/etc/mtab是什么关系?
fstab 文件记录了计算机上硬盘分区的相关信息,启动 Linux 的时候,检查分区的 fsck 命令,和挂载分区的 mount 命令,都需要 fstab 中的信息,来正确的检查和挂载硬盘。除了 fstab 文件之外,还有一个 mtab 文件,和 fstab 文件一样在 /etc 文件下,位于 /etc/mtab ,这个文件又是干什么用的呢?我们可以看一下 mtab 文件的内容原创 2013-07-03 17:03:19 · 1644 阅读 · 0 评论 -
linux netlink机制
Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由 daemon(NETLINK_ROUTE),1-wire 子系统(NETLINK_W1),用户态 socket 协议(NETLINK_USERSOCK),防火转载 2013-07-03 16:37:53 · 756 阅读 · 0 评论 -
linux中断处理下文:软中断tasklet机制分析
参考:《Linux内核设计与实现》http://blog.csdn.net/fontlose/article/details/8279113http://blog.chinaunix.net/uid-27212029-id-3386692.htmltasklet是中断处理下半部分最常用的一种方法,驱动程序一般先申请中断,在中断处理函数内完成中断上半部分的工作后调用tas原创 2014-10-21 20:01:54 · 1834 阅读 · 0 评论 -
linux中断处理下文: 工作队列分析
工作队列(work queue)是另外一种将工作推后执行的形式,它和前面讨论的tasklet有所不同。工作队列可以把工作推后,交由一个内核线程去执行,也就是说,这个下半部分可以在进程上下文中执行。这样,通过工作队列执行的代码能占尽进程上下文的所有优势。最重要的就是工作队列允许被重新调度甚至是睡眠。那么,什么情况下使用工作队列,什么情况下使用tasklet。如果推后执行的任务需要睡眠,那么就原创 2014-03-10 15:40:54 · 1559 阅读 · 0 评论 -
linux块设备的IO调度算法和回写机制
**************************************************************************************参考:《Linux内核设计与实现》 http://laokaddk.blog.51cto.com/368606/699028/http://www.cnblogs.com/zhenjing/archive/2原创 2014-10-27 15:08:35 · 6032 阅读 · 0 评论 -
Linux页高速缓存与回写机制分析
参考《Linux内核设计与实现》*******************************************页高速缓存是linux内核实现的一种主要磁盘缓存,它主要用来减少对磁盘的IO操作,具体地讲,是通过把磁盘中的数据缓存到物理内存中,把对磁盘的访问变为对物理内存的访问。为什么要这么做呢?一,速度;二临时局部原理。有关这两个概念,相信熟悉操作系统的我们不会太陌生原创 2014-10-27 19:31:19 · 3015 阅读 · 1 评论 -
浅析Linux的软中断的实现
参考:http://bbs.chinaunix.net/thread-2333484-1-1.htmlhttp://liu1227787871.blog.163.com/blog/static/20536319720129210112658/1、软中断一般来说,一次中断服务的过程通常可以分为两个部分。开头的 部分往往必须在关中断的条件下执行,这样才能在不受干扰的原创 2014-11-13 10:42:58 · 2131 阅读 · 0 评论 -
Linux虚拟文件系统VFS解析
参考《Linux内核设计与实现》虚拟文件系统(VFS)是linux内核和具体I/O设备之间的封装的一层共通访问接口,通过这层接口,linux内核可以以同一的方式访问各种I/O设备。虚拟文件系统本身是linux内核的一部分,是纯软件的东西,并不需要任何硬件的支持。1. 虚拟文件系统的作用虚拟文件系统(VFS)是linux内核和存储设备之间的抽象层,主要有以下好处。原创 2014-10-27 10:00:27 · 2896 阅读 · 0 评论 -
Linux内核的idle进程分析
1. idle是什么 简单的说idle是一个进程,其pid号为 0。其前身是系统创建的第一个进程,也是唯一一个没有通过fork()产生的进程。在smp系统中,每个处理器单元有独立的一个运行队列,而每个运行队列上又有一个idle进程,即有多少处理器单元,就有多少idle进程。系统的空闲时间,其实就是指idle进程的"运行时间"。既然是idle是进程,那我们来看看idle是如何被创建,又具体做了原创 2014-11-12 09:33:51 · 1214 阅读 · 0 评论 -
Linux内核时间管理和定时器
转自:http://blog.csdn.net/zhenwenxian/article/details/7643742转载 2014-10-23 15:29:00 · 2764 阅读 · 0 评论