自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TODD911的专栏

夯实基础,循序渐进

  • 博客(376)
  • 资源 (2)
  • 收藏
  • 关注

原创 11.定时器和时间管理

目录内核中的时间概念节拍率:HZ(每秒执行中断次数)Jiffies时钟中断处理程序定时器延迟执行内核中的时间概念节拍率:HZ(每秒执行中断次数)Jiffies但是如果时间间隔超过jiffies的最大取值,依然会出现无法判断的错误。时钟中断处理程序定时器延迟执行...

2021-07-15 12:41:53 232

原创 10.内核的同步方法

目录原子操作自旋锁读写自旋锁信号量互斥体完成变量顺序锁禁止抢占顺序和屏障原子操作自旋锁自旋锁和下半部读写自旋锁信号量互斥体对于信号量和互斥体,功能很类似,优先使用互斥体。完成变量顺序锁禁止抢占顺序和屏障...

2021-07-13 22:09:19 229

原创 8.下半部和推后执行的工作

下半部软中断和taskletsTasklets就是通过软中断实现的,所以这两部分可以放在一起说明:如下图所示是系统自带的tasklet(软中断实现):如果要添加一个软中断,就是在以上表格中增加一项。软中断执行时机:软中断和tasklet的区别:由于软中断必须使用可重入函数,这就导致设计上的复杂度变高,作为设备驱动程序的开发者来说,增加了负担。而如果某种应用并不需要在多个CPU上并行执行,那么软中断其...

2021-07-10 21:19:28 269 1

原创 7.中断和中断处理

中断中断处理程序上半部和下半部的对比注册中断处理程序中断上下文中断处理机制的实现Cat /rpc/interrupts小结

2021-07-09 13:19:52 252

原创 5.系统调用

与内核通信系统调用系统调用处理程序系统调用的实现系统调用上下文

2021-07-06 22:42:49 98

原创 4、进程调度

一、多任务以及策略二、Linux调度算法三、Linux调度的实现时间记账:2、进程选择:3、调度器入口4、睡眠和唤醒四、抢占和上下文切换用户抢占:内核抢占:五、实时调度策略 其中,SCHED_FIFO和SCHED_RR调度策略是给实时进程使用的,而SCHED_NORMAL调度策略是给普通进程使用的,通过n..

2021-07-06 13:31:30 114

原创 3、进程管理

1、进程描述符及其结构内核在创建进程的时候,在创建两个栈,一个用户栈,存在于用户空间,一个内核栈,存 在于内核空间。当进程在用户空间运行时,cpu堆栈指针寄存器里面的内容是用户堆栈地址,使用用户栈;当进程在内核空间时,cpu堆栈指针寄存器里面的内 容是内核栈空间地址,使用内核栈。什么是进程的内核栈:在每一个进程的生命周期中,必然会通过到系统调用陷入内核。在执行系统调用陷入内核之后,这些内核代码所使用的栈并不是原先用户空间中的栈,而是一个内核空间的栈,这个称作进程的“内核栈”。 内核栈是内核固有的

2021-07-03 10:35:21 123

原创 2、从内核出发

内核源码树由以下目录组成:内核开发的特点:

2021-06-28 20:41:12 208 2

原创 1、内核简介

每个处理器在任何指定时间点上的活动必然概括为下列三者之一:

2021-06-28 20:32:41 136

转载 补码定义解疑

1

2021-06-27 21:58:14 225

原创 opendaylight(Li)下toaster APP的简单实现

OS:ubuntu 14.04 64bit一、安装jdk准备资材:jdk-8u72-linux-x64.tar.gz(之前使用了jdk7,compile时报“java/util/function/consumer”找不到)1.解压jdk进入/usr/local目录后,解压文件#cd /usr/local#tar xzvf /home/todd/jdk-8

2016-04-04 20:14:41 3277 1

原创 shell相关注意点

一、read命令读取文件时会自动去掉行前后的空格。a.txt:(每行前后都有空格)     11111         222222        3333333        a.sh:#!/bin/bashwhile read oneline;do        echo "$oneline"done 执行结果:11111122222

2016-03-10 18:12:58 1304 1

原创 opendaylight(Li) l2switch 源代码分析(3)--packethandler

本文介绍packethander工程,该工程用于对进入到controller的packet进行解析并分发到不同的模块进行处理。工程分为四个部分:config文件夹:packethander的配置信息,如plugin的部署顺序,初始化时的配置。implementation文件夹:service的具体实现,包含了java和yang。model文件夹:定义了packet相关的yang

2016-03-07 23:11:56 2024 1

原创 opendaylight(Li) l2switch 源代码分析(2)--parent

本文主要介绍l2switch中的parent工程,该工程定义了运行L2switch所使用的依赖模块以及版本等。该工程下只有一个pom.xml文件,下面对该文件中的主要内容进行说明:1.    org.opendaylight.odlparent    odlparent    1.7.0-SNAPSHOT    该工程继承了工程“org.opendaylig

2016-02-26 22:40:44 2548

原创 opendaylight(Li) l2switch 源代码分析(1)--代码的整体结构和整体pom.xml

opendaylight l2switch提供了L2 switch的功能,下面通过对源代码进行解说来介绍该项目的功能。一、源代码整体结构1.l2switch的源代码github地址为:https://github.com/opendaylight/l2switch.git2.L2switch构架parent   定义了运行L2switch所使用的依赖模块以及版本等。

2016-02-25 22:02:10 3242

原创 redhat7.1 64bit上rpm安装mysql 5.6

因为redhat7.1自带了mariadb的lib,所以需要先卸载:# yum remove mariadb-libs-5.5.41-2.el7_0.x86_64安装mysql的相关rpm:# rpm -ivh MySQL-server-5.6.23-1.el7.x86_64.rpm# rpm -ivh MySQL-devel-5.6.23-1.el7.x86_64.rpm

2016-01-14 13:22:39 2583

原创 apache整合tomcat实现负载均衡

这种整合方式能够使apache成为反向代理,将请求均匀地转发到多台tomcat之一,从而达到负载均衡的目的。负载均衡的方式我知道有三种:1.mod_proxy方式。2.mod_proxy_blancer方式3.ajp方式。本文只介绍mod_proxy_blancer方式。系统版本:Ubuntu 14.04.1 LTS内核版本:3.13.0-32-gene

2016-01-11 23:26:55 703

原创 apache整合tomcat实现动静分离

关于为什么要将apache和tomcat整合起来,网上的说明也很多,下面我引用一下觉得整理的比较好的,以内容转载于:http://blog.csdn.net/stefyue/article/details/6918542----------------------------转载开始------------------------------------------Apache和T

2016-01-03 15:20:07 5240

原创 关于WAN

最近在做WAN的SDN,因为之前的项目很少接触到WAN,对WAN的认识也只停留在书上的一些零碎的概念,什么ATM,SDH,帧中继之类的,对于知识没有进行打包整理。趁着项目间隙,好好整理了下,虽然还是皮毛,也算是有了一些进步。(注意:因为都是通过整理网上的资料和自己脑补而来的,难免有错,也希望大家多多指正。)起初的WAN构成如下:其中接入和汇聚主要时PSTN和ISDN,I

2015-12-15 22:37:28 1273

原创 opendalight(Li) northbound APP 开发

1.install JDK(需要1.7+版本)下载JDK:jdk-7u79-linux-x64.tar.gz解压文件到/usr/local/目录下。在/etc/profile文件下添加环境变量:export JAVA_HOME=/usr/local/jdk1.7.0_79export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$

2015-11-28 22:42:14 1569

原创 远程进行kvm虚拟机的安装

# virsh versionCompiled against library: libvirt 1.1.1Using library: libvirt 1.1.1Using API: QEMU 1.1.1Running hypervisor: QEMU 1.5.3cat /etc/redhat-releaseRed Hat Enterprise Linux Server

2015-04-26 21:44:34 2857

原创 对openstack(JUNO)的neutron的相关测试

这两天对公司的的openstack环境进行测试,因为环境是别的同事搭建的,我这边只负责相关的测试,一台服务器独立安装controller node,另外两台服务器都安装network node+compute node。大概环境如下:外网IP网段是192.168.1.0/24,其中192.168.1.100~192.168.1.200为floatingip分配范围,内网IP网段是1

2015-04-07 21:35:37 1258

原创 《GNU make项目管理》笔记--变量与宏(2)

1.何时扩展变量当make在处理递归变量或define指令的时候,会将变量里的每一行或宏的主体存储起来,包括换行符号,但不会予以扩展。宏定义里的最后一个换行符号并不会被存储称宏的一部分,否则,宏被扩展时make会读进一个额外的换行符号。当宏被扩展时,make会立即扫描被扩展的文本中是否存在宏或变量的引用,如果存在就予以扩展,如此递归进行下去。如果宏是在命令脚本的语境中被扩展的,则宏

2015-03-13 13:46:51 1631

转载 Makefile与shell脚本区别

本文转载于:http://blog.chinaunix.net/uid-20672257-id-3345593.html在Makefile可以调用shell脚本,但是Makefile和shell脚本是不同的。本文试着归纳一下Makefile和shell脚本的不同。1、 shell中所有引用以$打头的变量其后要加{},而在Makefile中的变量是以$打头的后加()。实例如下

2015-02-10 15:21:00 2396

原创 《GNU make项目管理》笔记--变量与宏(1)

make包含两种语言。第一种语言用来描述工作与必要条件所组成的依存图。第二种语言是宏语言,用来进行文字替换。像C预处理器,m4以及宏汇编器。一个变量名称几乎可以由任何字符自称。包括大部分的标点符号,即使空格也可以使用,但应该避免这么做。事实上只有:、#和=等字符不允许使用在变量名称中。变量名称是区分大小写的。要取得某个变量的值,请使用$()括住该变量的名称,有一个特例:变量名称若为

2015-02-04 22:52:48 1680

原创 《GNU make项目管理》笔记--规则(3)

1.管理程序库程序库(archive library)是一个特殊的文件,该文件内含其他被称为成员的文件。程序库可用来将相关的目标文件聚集成较容易操作的单元,例如,C的标准程序库lib.a就包含了许多低级的C函数。因为程序库如此常见,所以make对它们的创建、维护以及引用提供了特别的支持。程序库的建立及修改可通过ar程序来进行。下面我们看一个例子,程序包结构如下:根目录

2015-02-03 22:55:46 1322

转载 主频、倍频、外频、前端总线

本文内容转载于:http://baike.baidu.com/link?url=6EWCDU6Ak1VqA8e_s7SygoQYuc0nSlU8MNt3Xih5HjNZdUz6THKHPzpNABw9gc2_MAKs_ZaQna8GBYiYTW97zqhttp://baike.baidu.com/link?url=-q-EW2nsWR5-lN6k3JlpFy_G9-82Ujn6XVaya0

2015-01-26 22:59:56 6444

转载 Ubuntu 12.04保存屏幕亮度解决方法

本文转载于:http://linzhibin824.blog.163.com/blog/static/7355771020133532038651/Ubuntu 12.04 LTS不能自动保存亮度:每次登陆、解锁后,都是最大亮度,非常讨厌!1、打开终端,输入命令查看本机支持的最大亮度值cat /sys/class/backlight/acpi_video0/max_brightne

2015-01-25 22:53:54 911

原创 《GNU make项目管理》笔记--规则(2)

有如下的源代码树:根目录|---makefile|----|include||           |___myutil.h|___|src|         |----myutil.c         |__main.c各文件内容如下:main.c:#include #include "myutil.h"int main(void) {

2015-01-22 22:52:06 1265

原创 《GNU make项目管理》笔记--规则(1)

1.通配符当你有一长串文件要制定时,为了简化此过程,make提供了通配符(wildcard),此功能也被称为文件名模式匹配。make的通配符如同Bourne shell的~、*、?、[...]和[^...]。举例来说,*.*会被扩展成文件名中包含点号的所有文件,一个问号代表任何单一字符,而[...]代表一个字符集。若要取得字符集的补集,则可以使用[^...]。此外,“~”符号可以用

2015-01-20 23:12:38 1704

原创 《GNU make项目管理》笔记--简单的makefile

make定义了一种语言,可用来描述源文件、中间文件以及可执行文件之间的关系。它还提供了一些功能,可用来管理各种候选配置、实现可重用程序库的细节以及让用户自定义宏将过程参数化。简言之,make常被视为开发过程的核心,因为它为应用程序的组件以及这些组件的搭配方式提供了一个可依循的准则。make的主要价值在于它由能力完成编译应用程序时所需要的一系列复杂步骤,以及当有可能缩短“编辑-编译-调试

2015-01-15 21:56:05 3288

原创 《TCP/IP详解卷2:实现》笔记--原始IP

应用进程在Internet域中创建一个SOCK_RAW类型的插口,就可以利用原始IP层。一般有下列3种用法:1.应用进程可利用原始插口发送和接收ICMP和IGMP报文。有些选路守护程序,利用这一特征跟踪通常由内核处理的ICMP重定向报文段。这个特征还用于实现基于ICMP的协议,如路由通告和路由请求,他们需用到ICMP,不过最好由应用进程,而不是内核完成相应处理。多播路由守护程序

2015-01-13 21:51:21 2166

原创 《TCP/IP详解卷2:实现》笔记--BPF:BSD 分组过滤程序

BSD分组过滤程序(BPF)是一种软件设备,用于过滤网络接口的数据流,即给网络接口加上开关。应用进程打开/dev/bpf0、/dev/bpf1等等后,可以读取BPF设备,每个应用进程一次只能打开一个BPF设备。通过若干ioctl命令,可以配置BPF设备,把它与某个网络接口相关联,并安装过滤程序,从而能够选择性地接收输入的分组。BPF设备打开后,应用进程通过读写设备来接收分组,或将分组放

2015-01-12 21:51:58 3341

原创 《TCP/IP详解卷2:实现》笔记--TCP的用户需求

本文介绍TCP的用户请求处理函数tcp_usrreq,它被协议的pr_usrreq函数调用,处理各种与tcp插口有关的系统调用,此外,还将介绍tcp_ctloutput,应用进程调用setsockopt设定tcp插口选项时会用到它。

2015-01-10 23:41:56 1730

原创 《TCP/IP详解卷2:实现》笔记--TCP的输入(续)

本文处理ACK标志,更新窗口信息,处理URG标志及报文段中携带的所有数据,最后处理FIN标志,如果需要,则调用tcp_output。1.完成被动打开和同时打开

2015-01-07 21:52:21 1371

原创 《TCP/IP详解卷2:实现》笔记--TCP的输入

当收到的数据报的协议字段指明这是一个TCP报文段时,ipintr(通过协议协议转换表中的pr_input函数)会调用tcp_input进行处理,tcp_inut在软件中断一级执行。函数非常长,我们将分两张讨论,下图列出了tcp_input中的处理框架。本章将结束对RST报文段处理的讲解,下一章开始介绍ACK报文段的处理。

2015-01-06 22:45:00 2516 1

原创 《TCP/IP详解卷2:实现》笔记--TCP输出

函数tcp_output负责发送报文段,代码中很多地方都调用了它。tcp_usrreq在多种请求处理中调用了这一函数:处理PRU_CONNECT,发送初始SYN;处理PRU_SHUTDOWN,发送FIN;处理PRU_RCVD,应用进程从插口接收缓存中读取若干数据后可能需要发送新的窗口大小通告;处理PRU_SEND,发送数据;处理PRU_SENDOOB,发送带外数据。tcp_fast

2015-01-05 22:56:59 1605

原创 《TCP/IP详解卷2:实现》笔记--TCP的定时器

TCP为每条连接建立了7个定时器。按照它们在一条连接生存期内出现的次序,简要介绍如下。

2015-01-04 22:07:15 1308

原创 《TCP/IP详解卷2:实现》笔记--TCP:传输控制协议

传输控制协议,即TCP,是一种面向连接的传输协议,为两端的应用程序提供可靠的端到端数据流传输服务,它完全不同于无连接的、提供不可靠数据传输服务的UDP协议。

2014-12-30 22:50:01 2246

原创 《TCP/IP详解卷2:实现》笔记--UDP:用户数据报协议

用户数据报协议,即UDP,是一个面向数据报的简单运输层协议:进程的每次输出操作只产生一个UDP数据报,从而发送一个IP数据报。进程通过创建一个Internet域内的SOCK_DGRAM类型的插口,来访问UDP。该类型插口默认地称为无连接的。每次进程发送数据时,必须指定目的IP地址和端口号。每次从插口上接收数据报时,进程可以从数据报中收到源IP地址和端口号。

2014-12-20 23:16:35 3332 2

哈弗曼编码实现文件压缩

使用了哈弗曼编码原理,实现文件压缩和解压缩。和我的博文进行配套:http://blog.csdn.net/todd911/article/details/8728301

2014-09-07

软件测试[(美)ron patton]读书笔记.pdf

软件测试[(美)ron patton]读书笔记

2009-04-13

空空如也

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

TA关注的人

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