2014-11-30 - 主机:Gentoo Linux 11.2 内核版本:Linux 3.0.6 以前在Ubuntu下USB转串口驱动已经编译进内核,而编译的Gentoo内核没有编译进去,这里将内核中PL2303驱动 copy出来单独编译出pl2303.ko然后将其复制进/usr/src/linux/drivers/usb/serial/目录下 然后使用命令 m...
2014-11-30 - Linux内核中创建cache节点由函数kmem_cache_create()实现。 该函数的执行流程: 1,从全局cache_cache中获得cache结构,因为全局cache_cache初始化对象的大小就是kmem_cache结构的大小,所以返回的指针正好可以转换为cache结构;调用 kmem_cache_zalloc(cach...
2014-11-30 - 通过前面所有代码的分析和总结,已经把各个部分熟悉了一遍,在此对Linux内核中slab机制做最后的总结。 伙伴系统算法采用页作为基本内存区,这适合于大块内存的请求。对于小内存区的申请,比如说几十或几百个字节,我们用slab机制。 Slab分配器把对象分组放进...
2014-11-30 - cache的销毁很简单,依次检查和释放本地CPU cache、共享cache、三链以及cache本身。从cache的创建我们看到,创建的cache主要是从cache_cache中获得的,因为cache_cache中对象的大小就是cache结构体的大小,所以这里只是释放到cache_cache就OK了。 static voi...
2014-11-29 - 古语有云:工欲善其事,必先利其器!在进入Linux内核的真正学习之前,我们需要一些准备工作,因为只有达到了一定的知识储备要求,才能事半功倍。 对于一个内核初学者来说,经常遇到:保护模式,分段机制,分页机制,线性地址,中断门,局部描述符等名词,任...
2014-11-29 - 千里之行,始于足下!系统启动往往被认为是正式学习Linux内核的开始,要使用一个系统,无论Windows还是Linux,首先要做的就是将它启动。这里我们就一起学习一下当用户打开计算机电源之后所发生的事。也就是说,我们要研究Linux内核映像是如何被拷贝到内存中...
2014-11-29 - struts2开发环境的搭建主要涉及以下三个步骤: 1.找到开发struts2应用需要的jar文件。 2.编写struts2的配置文件。 3.修改web.xml文件。 具体步骤如下: 1.到http://struts.apache.org/下载struts。下载完成之后将下载的zip文件解压。 2.在MyEclipse中创建一...
2014-11-29 - 工作项、工作队列和工作者线程 把推后执行的任务叫做工作(work),描述它的数据结构为work_struct ,这些工作以队列结构组织成工作队列(workqueue),其数据结构为workqueue_struct ,而工作线程就是负责执行工作队列中的工作。系统默认的工作者线程为even...
2014-11-29 - 一、I/O端口 端口(port)是接口电路中能被CPU直接访问的寄存器的地址。几乎每一种外设都是通过读写设备上的寄存器来进行的。CPU通过这些地址即端口向接口电路中的寄存器发送命令,读取状态和传送数据。外设寄存器也称为I/O端口,通常包括:控制寄存器、状态...
2014-11-29 - Linux的进程管理由进程控制块、进程调度、中断处理、任务队列、定时器、bottom half队列、系统调用、进程通信等等部分组成。 进程调用分为实时进程调度和非实时进程调度两种。前者调度时,可以采用基于动态优先级的轮转法(RR),也可以采用先进现出算法(FI...
2014-11-29 - 原文: Guide for pkg-config http://people.freedesktop.org/~dbn/pkg-config-guide.html Dan Nicholson 概述 为什么? 一些概念 写pkg-config文件 使用pkg-config文件 常见问题 概述 这个文档的目的是从用户和开发者的角度给一个pkg-config工具的使用概述...
2014-11-28 - 首先用两种方法计算1-1/x+1/x*x然后比较其所用时间。本文涉及Linux下测量毫秒级时间精度的问题。 方法1: //Write in Ubuntu11.04 #includestdio.h #includetime.h #includesys/time.h int main() { struct timeval t_start,t_end; double x,sum=1,sumx=1; i...
2014-11-28 - 一、编译 现在的内核编译步骤真是简单极了 # make menuconfig # make # make modules_install # make install 就这么两下,把以前繁杂的操作都包括了 # make modules # make modules_install # make install # cp arch/i386/boot/bzImage /boot/vmlinuz-2.6....
2014-11-28 - 在Windows下是使用 %1 %2 %3 而在Linux下是使用 $1 $2 $3 ------------------- 如: 1.某bat文件 cd ..\data @java -classpath ..\lib\hsqldb.jar org.hsqldb.util.DatabaseManager %1 %2 %3 %4 %5 %6 %7 %8 %9 2.某sh文件 #!/bin/sh cd ../data java -cp .....
2014-11-28 - 帧缓冲(framebuffer)是Linux为显示设备提供的一个接口,把显存抽象后的一种设备,他允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。这种操作是抽象的,统一的。用户不必关心物理显存的位置、换页机制等等具体细节。这些都是由Framebuffer设备...
2014-11-28 - 简单的统计服务器的每个服务的内存使用 CPU 的使用率 内存剩余大...
2014-11-27 - 本来想现在Linux上熟悉下进程的有关概念然后去写windowsSDK的,没想到今天Windows蓝屏了,新升级的3.2.2内核打开虚拟机的时候还要升级内核。升就升吧,没想到还错误了。没办法,看来只好在Linux上面待着了。 这几天自己只是熟悉了下进程的概念,然后简单的写...
2014-11-27 - 1.JDK安装及环境变量配置-基于RHEL6.1 JDK:jdk-6u30-linux-i586-rpm.bin 安装前需先检查系统中是否已经安装默认的OpenJDK,若已安装需先卸载。 (1) 创建目录: su - root mkdir /usr/java (2) 复制JDK: cp /mnt/hgfs/jdk-6u30-linux-i586-rpm.bin /usr/jav...
2014-11-27 - 安装 Maven是一个Java工具,所以你得先把Java运行时环境安装好才能继续。 首先, 下载并安装好Maven,然后按下面的指导一步步执行. 在命令行环境下面输入下面的指令: Windows command代码 mvn --version 你应该能看到类似下面这样的一些关于Maven的版本信息:...
2014-11-27 - 问题为: 4)已知:/etc/hosts的内容为 192.168.1.11 oldboy11.etiantian.org 192.168.1.21 oldboy21.etiantian.org 192.168.1.31 oldboy31.etiantian.org #192.168.1.111 oldboy111.etiantian.org 请用shell脚本实现,怎么才能在输入IP后找到/etc/hosts里对...
2014-11-27 - Unix Korn Shell Scripting Reference Sheet中的一段,关于判断文件是否存在等相关的一些问题 -a file exists. -b file exists and is a block special file. -c file exists and is a character special file. -d file exists and is a directory. -e file...
2014-11-27 - 判断一个变量是否为空。 1. 变量通过 引号引起来 如下所示:,可以得到结果为 IS NULL. #!/bin/sh para1= if [ ! -n $para1 ]; then echo IS NULL else echo NOT NULL fi 2. 直接通过变量判断 如下所示:得到的结果为: IS NULL #!/bin/sh para1= if [ ! $para1...
2014-11-27 - #!/usr/bin/ksh cd 20111203/ echo ===ftpPutStarting=== `date` put.date #记录脚本执行开始时间 ftp -iv -in ! open 192.168.1.43 user username password ascii prompt off cd /ora_arch/tajk/sourcedata/ mput clientpayments_cur.dat mput contractpaym...
2014-11-26 - 1、数值 格式: test num1 opr num2 [ num1 opr num2 ] opr 取值: 相等:-eq 不等:-ne 大于:-gt 小于:-lt 【l是字母L的小写】 小于等于:-le 大于等于:-ge 2、字符串 格式: [ str1 opr str2] [ opr str ] opr取值: 相等:= 不等:!= 空串:-z 非空串...
2014-11-26 - 安装包下载网站:http://213.174.32.130/sles/distribution/11.0-SP1/repo/disk1/suse/x86_64/ RPM包搜索网址:http://rpm.pbone.net/ 查看Linux的版本 linux:~ # cat /etc/issue Welcome to SUSE Linux Enterprise Server 11SP1 (x86_64) - Kernel \r (\l)....
2014-11-26 - #include stdio.h #include string.h #include sys/socket.h #include linux/netlink.h // netlink.h 中定义 //struct sockaddr_nl //{ // sa_family_t nl_family; // AF_NETLINK // unsigned short nl_pad; // zero // __u32 nl_pid; // 进程ID //__u32 nl_...
2014-11-25 - c客户端环境安装 1. 下载 rabbitmq-c 源码包 http://hg.rabbitmq.com/rabbitmq-c/ 2. 下载 rabbitmq-codegen 源码包 http://hg.rabbitmq.com/rabbitmq-codegen/ 3. 将rabbitmq-codegen拷贝到rabbitmq-c的目录下,改名为codegen 4. macro `AM_PROG_LIBTOOL no...
2014-11-25 - connect是一个web server中间件。 使用方法: var connect = require(connect); connect( connect.static(__dirname + /public, { maxAge: 0 }) , function(req, res) { res.setHeader(Content-Type, text/html); res.end(img src=/tobi.jpeg /) } ).listen(...
2014-11-25 - 变量名 含义 ARGC 命令行变元个数 ARGV 命令行变元数组 FILENAME 当前输入文件名 FNR 当前文件中的记录号 FS 输入域分隔符,默认为一个空格 RS 输入记录分隔符 NF 当前记录里域个数 NR 到目前为止记录数 OFS 输出域分隔符 ORS 输出记录分隔符 1,模式匹配 awk...
2014-11-25 - awk的内建函数 1. 字符串函数 sub函数匹配记录中最大、最靠左边的子字符串的正则表达式,并用替换字符串替换这些字符串。如果没有指定目标字符串就默认使用整个记录。替换只发生在第一次匹配的时候。格式如下: sub (regular expression, substitution strin...
2014-11-25 - Linux虚拟文件系统是一个内核软件层,用来处理与UNIX标准文件系统相关的所有系统调用。其健壮性表现在能为各种文件系统提供一个通用的接口。 Linux虚拟文件系统支持的文件系统可以划分为三种主要的类型: 磁盘文件系统 这些文件系统管理在本地磁盘分区中可用...
2014-11-25 - 前面对linux虚拟文件系统的架构以及设计到的数据结构有了一个整体的认识,这里看看linux内核怎么根据给定的文件路径名在内存中找到和建立代表着目标文件或目录的dentry结构和inode结构。文件路径的搜索是文件系统中最基本也是最重要的一部分之一,后面我们会...
2014-11-25 - 大家都知道进程,可是知道linux是怎么管理其进程的吗?每一个进程都有一个进程描述符,具体是task_struct结构体存储相关的信息,在linux/sched.h文件里定义,那么我们先看看linux内核3.0版本的task_struct结构体的定义吧(删除了不必要的字段,只保留了重要...
2014-11-25 - 上次讲了Linux进程描述符,这次我们在讲讲内存描述符,Linux的内存描述符也用一个结构体来表示,具体是mm_struct结构体,在linux/mm_types.h里定义。Linux操作系统就是用这个结构体实现内存的管理,我们先看一下具体的字段情况。 struct mm_struct { //拥有...
2014-11-25 - 关于container_of的用法,可参考相关文章。其实就是解决了如何通过结构中的某个变量的地址获取结构本身的指针这样的问题。container_of实现了根据一个结构体变量中的一个成员变量的指针来获取指向整个结构体变量的指针的功能。 首先container_of出现在linux/...
2014-11-25 - 首先我们先看一下list_head的定义,该结构体在linux/types.h中定义。 struct list_head { struct list_head *next, *prev; }; list_head很简单,其实就是一个双向链表,但是我们也许会奇怪,这样的双向链表能干什么,它里面连最起码的一个泛化指针(void*)...
2014-11-25 - Linux虚拟文件系统在内核初始化的start_kernel()函数中主要调用两个函数来实现。 asmlinkage void __init start_kernel(void) { vfs_caches_init_early(); vfs_caches_init(totalram_pages); } 一、早期初始化 虚拟文件系统的早期初始化有函数vfs_caches_ini...
2014-11-25 - 这部分主要对linux虚拟文件系统内核初始化部分做些补充。 关于shrinker,inode和dentry cache初始化阶段都需要注册自己的shrinker,用于缩减cache。两个操作原理类似。 shrinker数据结构介绍 /* * A callback you can register to apply pressure to ageable...
2014-11-25 - 安装根文件系统式系统初始化的关键部分。Linux内核允许根文件系统放在很多不同的地方,比如硬盘分区、软盘、通过NFS共享的远程文件系统以及保存在ramdisk中。内核要在变量ROOT_DEV中寻找包含根文件系统的磁盘主设备号。当编译内核时,或者像最初的启动装入程...
2014-11-25 - 根目录文件系统的安装中涉及到了mount系统调用的调用,这里我们考虑一个文件系统将被安装在一个已经安装文件系统之上的情形,即调用mount系统调用实现。mount系统调用被用来安装一个普通文件系统,他的服务例程为sys_mount()。 /*sys_mount系统调用*/ /*dev_...