自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(154)
  • 资源 (9)
  • 收藏
  • 关注

原创 vim个人配置总结

ctags1.下载:http://sourceforge.net/projects/ctags/files/ctags/5.8/ctags-5.8.tar.gz/download2.编译:./configure -prefix /usr/local/ctags 其中-prefix指定安装目录      make、make install     3.使用:ctags -R .

2015-01-06 19:10:35 1041

原创 网络子系统87_veth实现

//使用veth//1.创建两块虚拟网卡veth1、veth2,然后点对点连接,此后两块网卡的数据会互相发送到对方$ ip link add veth1 type veth peer name veth2//2.创建网络命名空间t1$ ip netns add t1//3.将veth0加入t1,此时veth0便看不到了,因为被加入到其他命名空间中了$ ip link set vet

2014-08-14 17:59:28 5336

原创 cgroup子系统5_cpuset子系统

cpuset子系统为cgroup中的任务分配独立CPU(在多核系统)和内存节点。cpuset_cgroup的cpus_allowed和mems_allowed定义了该cpuset包含的cpu和内存节点,其中进程的task_struct->cpus_allowed与进程所属cpuset的cpus_allowed保持一致,在进程分配物理页框时(alloc_pages系函数),通过cpuset_

2014-08-13 17:05:26 1513

原创 cgroup子系统4_memory子系统

memory子系统设定cgroup中任务使用的内存限制,并自动生成那些任务使用的内存资源报告。memory子系统是通过linux的resource counter机制实现的,在进程进行内存分配、释放时对进程进行charge、uncharge操作。charge操作进行点:1.分配新页框时(请求调页、copy on write),在do_falut,do_anonymous_pag

2014-08-13 15:56:08 1717

原创 cgroup子系统3_freezer子系统

freezer子系统用于挂起和恢复cgroup中的进程。freezer有一个控制文件:freezer.state,将FROZEN写入该文件,可以将cgroup中的进程挂起,将THAWED写入该文件,可以将已挂起的进程恢复。通过遍历cgroup中的进程,对其freeze或者wake_up。freeze操作通过freeze框架实现,设置进程的TIF_SIGPENDING函数(伪信号),唤醒进程,

2014-08-12 20:43:50 2360

原创 cgroup子系统2_devices子系统

devices子系统用于控制cgroup中所有进程可以访问哪些设备,通过维护黑白名单,然后在inode_permission入口点,通过devcgroup_inode_permission函数检查进程是否可以访问该设备。参考博客:1.devices子系统

2014-08-12 20:16:31 1974 1

原创 cgroup子系统1_cpu子系统

cpu子系统用于控制cgroup中所有进程可以使用的cpu时间片,通过组调度(将task_group作为调度实体)来实现。参考博客:1.cpu子系统2.Linux内核之CFS调度和组调度

2014-08-12 19:39:33 1046

原创 graph driver-device mapper-04libdevmapper基本操作

// 创建thin pool// 调用路径:NewDeviceSet->initDevmapper->createPool1.1 func createPool(poolName string, dataFile, metadataFile *os.File, poolBlockSize uint32) error { //通过task封装与libdevmapper的交互 task, er

2014-07-25 14:34:59 1814

原创 graph driver-device mapper-03thin pool基本操作

// 在thin pool中创建一个新thin device// 调用路径:driver.Create()1.1 func (devices *DeviceSet) AddDevice(hash, baseHash string) error { //查找父device baseInfo, err := devices.lookupDevice(baseHash) if err != n

2014-07-25 12:47:22 2619

原创 graph driver-device mapper-02driver基本操作

// 清除thin pool1.1 func (d *Driver) Cleanup() error { // 停止thin pool err := d.DeviceSet.Shutdown() return err}// 当加载新镜像时,添加一个新thin device// id为containerid或imageid1.2 func (d *Driver) Create(i

2014-07-25 11:19:39 1320

原创 graph driver-device mapper-01driver初始化

// thin device数据结构type DevInfo struct { Hash string `json:"-"` DeviceId int `json:"device_id"` Size uint64 `json:"size"` TransactionId uint64 `json:"tran

2014-07-25 10:23:07 2848

转载 SSD入门以及实现一个基于SSD的KV存储

博客地址 :《为SSD变成

2014-07-10 14:21:30 2461

原创 fork与exit、_exit的配合使用

#include "light.h"int main(int argc, char *argv[]){ printf("Hello world\n"); write(STDOUT_FILENO, "Ciao\n", 5); if (fork() == -1) errExit("fork"); /* Both child and parent c

2014-03-07 10:06:11 2232

原创 clock_nanosleep避免过度睡眠

/* * “oversleeping” problem is particularly marked for a process that uses a loop to re start * a sleep that is interrupted by a signal handler. If signals are delivered at a high rate * , th

2014-03-06 19:43:02 7997 1

原创 网络子系统86_inet协议族-l4向下(一)

// l4数据向下l3传递// 步骤:// 1.如果sock->sk_write_queue为空,初始化corking// 1.1 corking信息用于帮助ip层对数据进行分片1.1 int ip_append_data(struct sock *sk, struct flowi4 *fl4, int getfrag(void *from, char *to, int o

2014-02-28 22:13:47 1785

原创 网络子系统85_inet协议族-l3向上

// ip数据报向本地传递// 调用路径:ip_rcv->dst_input->...->ip_local_deliver1.1 int ip_local_deliver(struct sk_buff *skb){ //如果ip数据报被分片,则重组 if (ip_is_fragment(ip_hdr(skb))) { if (ip_defrag(skb, IP_DEFRAG_LOCA

2014-02-28 11:41:23 1492

原创 网络子系统84_sock事件通知进程

// socket初始化// 调用路径:inet_create->sock_init_data1.1 void sock_init_data(struct socket *sock, struct sock *sk){ ... //sock状态改变的回调函数,当sock的状态变迁(如从established到close_wait)就会调用这个函数 sk->sk_state_change

2014-02-28 11:02:07 2011

原创 网络子系统83_inet协议族-SOCK_RAW(四)

// raw sock数据就绪函数// raw sock在raw_recvmsg中阻塞,在raw_local_deliver通过sock->sk_data_ready通知输入数据就绪// 步骤:// 1.过滤感兴趣的事件// 2.唤醒阻塞进程,并将进程从wq上取下1.1 static int receiver_wake_function(wait_queue_t *wait, un

2014-02-28 10:00:43 1371

原创 网络子系统82_inet协议族-SOCK_RAW(三)

// 向raw sock传递skb// 步骤:// 1.根据协议号获取监听指定protocol的sock// 2.向raw sock传递skb1.1 int raw_local_deliver(struct sk_buff *skb, int protocol){ int hash; struct sock *raw_sk; //获取监听指定协议的raw sock hash

2014-02-27 21:36:40 1436

原创 网络子系统81_inet协议族-SOCK_RAW(二)

// struct sock->sk_prot字段// struct proto为插口层到传输层的接口4.1 struct proto raw_prot = { .name = "RAW", .owner = THIS_MODULE, .close = raw_close, .destroy = raw_destroy, .connect = i

2014-02-27 17:00:10 1971

原创 网络子系统80_inet协议族-SOCK_RAW(一)

// SOCK_RAW1.1 static struct inet_protosw inetsw_array[] ={ ... { .type = SOCK_RAW, .protocol = IPPROTO_IP, /* 通配符 */ .prot = &raw_prot, /* Networking protoco

2014-02-27 16:58:35 2974

原创 网络子系统79_inet协议族

// inet协议族默认支持的协议类型// 在inet_init中,通过inet_register_protosw注册到inetsw邻接表1.1 static struct inet_protosw inetsw_array[] ={ //流类型 { .type = SOCK_STREAM, .protocol = IPPROTO_TCP, .prot =

2014-02-27 10:36:09 1469

原创 网络子系统78_inet套接字创建

// inet协议族控制块// 1.在inet_init中,由sock_register(&inet_family_ops)注册给系统// 2.在sys_socket系统调用中,通过协议族号查找对应的协议控制块,然后由// 具体协议控制块的create函数创建套接字1.1 static const struct net_proto_family inet_family_ops

2014-02-27 10:07:40 1254

原创 网络子系统77_套接字接收

// accept系统调用// 步骤:// 1.由内核公共部分创建一个新套接字描述符,并分配其对应的文件描述符// 2.新套接字使用accept之上的套接字相同的套接字类型和操作// 3.交由具体协议完成accept// 4.如果accept调用者要求返回peer地址,通过新套接字获取地址,并复制到用户地址空间// 5.将新套接字的文件描述安装到调用者的进程控制块,返回新套接

2014-02-26 11:25:02 1300

原创 网络子系统76_套接字绑定

// 绑定套接字到地址// 步骤:// 1.根据用户空间的文件描述符查找socket描述符// 2.复制地址信息到内核空间// 3.由具体的协议族完成绑定1.1 SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen){ struct socket *sock; struct

2014-02-26 11:05:25 1065

原创 网络子系统75_套接字创建

// 创建套接字,系统调用sys_socket// 步骤:// 1.分配套接字描述符// 2.创建套接字对应的文件描述符// 参数: // 协议族: 对于TCP/IP协议族,该参数为AF_INET// 套接字类型:流套接字类型为SOCK_STREAM, 数据报套接字类型为SOCK_DGRAM// 通信协议: 单个协议系列中的不同传输协议,在internet通信域中,此

2014-02-26 10:44:45 1082

原创 内存子系统1_分配接口

1.页    struct page; 内核把物理页作为内存管理的基本单位;内存管理单元(MMU)把虚拟地址转换为物理地址,通常以页为单位进行处理。MMU以页大小为单位来管理系统中的也表。   内核struct page管理系统中所有的页.2.区    struct zone;   Linux将内核空间地址划分为三个区:ZONE_DMA、ZONE_NORMAL和ZONE_HIG

2014-02-10 17:03:23 1163

原创 Linux驱动4_NETFILTER

#include #include #include #include #include #include #include #include #include #include // hook函数static unsigned int hook_func(unsigned int hooknum, struct sk_buff * sk

2014-01-14 17:30:28 1011

原创 Linux驱动3_总线设备(二)

#include #include #include "simple.h"// 在虚拟总线simple bus上边添加一个设备,并添加其驱动int probe (struct simple_device *dev){ printk(KERN_ALERT "simple_device probe.\n"); return 0;}// simple bus上的设备struct

2014-01-08 15:14:34 967

原创 Linux驱动2_总线设备(一)

// 参考 Linux设备驱动程序(lld3)// 实现一个简单的虚拟总线 simple bus// simple_bus_type为总线类型// simple_bus为总线设备// // simple.c 实现#include "simple.h"// 增加设备引用计数static struct simple_device *simple_dev_get(struct

2014-01-07 22:05:12 1126

原创 调度子系统8_负载均衡(五)

// 计算group在给定domain中的imbalance// 调用路径:find_busiest_group->calculate_imbalance// 函数参数:// sds:sched domain的统计信息// this_cpu:当前正在运行load balance的cpu// imbalance:保存imbalance值// 函数任务:// 1.计算最忙grou

2013-12-23 22:02:14 1762

原创 调度子系统7_负载均衡(四)

// 寻找sched domain中最忙的group// 函数参数:// sd:待查找的sched domain// this_cpu:当前正在对其执行负载均衡的cpu// imbalance:为达到平衡需要移动的权重// idle:this_cpu当前的状态// sd_idle: sd空闲状态// cpus:可作为源cpu的集合// balance:指示this_c

2013-12-19 22:19:58 2426

原创 调度子系统6_负载均衡(三)

// 负载均衡// 在sched_domain中进行负载均衡,检查是否可以通过最繁忙的组中迁移一些进程到本cpu// 函数参数:// this_cpu, 其上执行负载均衡的cpu// this_rq, 其上执行负载均衡的rq// sd, 其上执行负载均衡的sched domain// idle, this_cpu的状态// CPU_SCHED_IDLE,this_cpu

2013-12-18 16:15:41 1551

原创 调度子系统5_负载均衡(二)

一篇介绍Linux负载均衡的文章:         Linux Load Balancing Mechanism         CSDN资源地址

2013-12-16 10:18:22 1295

原创 调度子系统4_负载均衡(一)

// 参考:http://blog.csdn.net/dog250/article/details/5303561// 负载均衡// 当rq->next_balance到时,触发负载均衡 // 调用路径:scheduler_tick->trigger_load_balance// 注:// nohz.cpu_mask中的cpu表示停用了周期时钟// 函数任务:// 1.如果进

2013-12-11 22:09:41 2293

原创 调度子系统3_周期调度器

// 周期调度器// 调用路径:update_process_times->scheduler_tick// 函数任务:// 1.更新rq的clock// 2.更新队列负载// 3.通知调度器类更新进程运行时间// 4.更新下一次load balance的时间戳// 5.触发load balance1.1 void scheduler_tick(void){ int

2013-12-11 17:18:32 1225

原创 调度子系统2_核心调度器

// 核心调度器// 当进程决定让出cpu时调用// 函数任务:// 1.禁止内核抢占// 2.获取本cpu的rq// 3.取消为当前进程运行的hrtimer// 4.获取队列锁// 5.更新队列时钟// 6.清除当前进程need resched标志// 7.如果当前进程为非运行状态,并且当前非内核抢占路径// 7.1 如果当前进程有信号待处理,设置当前进程

2013-12-10 20:04:09 1432

转载 最牛B的编码套路

转自:http://blog.csdn.net/happydeer/article/details/17023229同样感谢我家帅帅推荐的这篇文章,同与译者共勉^-^最近,我大量阅读了Steve Yegge的文章。其中有一篇叫“Practicing Programming”(练习编程),写成于2005年,读后令我惊讶不已:与你所相信的恰恰相反,单纯地每天埋头于工作并不能算是

2013-12-05 17:09:52 1033

原创 调度子系统1_调度子系统初始化

unsigned int sysctl_sched_rt_period = 1000000;int sysctl_sched_rt_runtime = 950000;// 参考:// SMP负载均衡// http://soft.chinabyte.com/os/22/12359522.shtml// linux组调度浅析// http://hi.baidu.com/_kouu

2013-11-29 19:55:09 2552 1

原创 时间子系统17_hard lockup机制

// 使能hard lockup探测// 调用路径:watchdog_enable->watchdog_nmi_enable// 函数任务:// 1.初始化hard lockup检测事件// 2.hard lockup阈值为10s// 2.向performance monitoring子系统注册hard lockup检测事件// 3.使能hard lockup检测事件//

2013-11-28 14:38:48 2818

Linux Load Balancing Mechanism

介绍Linux NUMA、SMP负载均衡的核心实现

2013-12-16

IA32&64 Architecture Programmer’s Manual Vol1-3

IA32&64 Architecture Programmer’s Manual Vol1-3

2013-11-07

AMD64 Architecture Programmer’s Manual

AMD64 Architecture Programmer’s Manual Vol1-5

2013-11-07

基于gentle adaboost算法的人脸检测研究

基于gentle adaboost算法的人脸检测研究

2013-10-28

An Extended Set of Haar-like Features for Rapid Object Detection

基于adaboost算法,haar like特征的人脸检测

2013-10-28

Robust Real-Time Face Detection

基于adaboost算法,haar like特征的人脸检测

2013-10-28

Rapid Object Detection using a Boosted Cascade of Simple Features

基于adaboost算法,haar like特征的人脸检测

2013-10-28

A Short Introduction to Boosting

机器学习:Ada boost算法简介,推倒,应用

2013-10-27

The Boosting Approach to Machine Learning An Overview

机器学习:Ada boost算法简介,推倒,应用

2013-10-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除