自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 CSDN博客重新更新

说来惭愧,好久没更新博客文章,导致个人博客网站:https://lenky.info/ 所在的网络空间和域名都过期了都没发觉,直到有个同事在Dim上问我我的个人博客为啥打不开了。。。幸好之前有做整站备份,后续慢慢把内容都迁回CSDN上吧。

2024-01-07 10:55:12 908 1

原创 Linux Kernel Stack Overflow/Linux 内核栈溢出

Linux内核会分配一页(4K stack)或两页连续(8K stack)不可交换(non-swappable)内存来作为内核栈使用。可以看到,一个地方(kernel_stack_init函数)的栈占去$0x400(有几个局部变量是直接使用的寄存器,所以才没有消耗栈),而另外一个地方(just_copy_half函数)的栈占去%rax是个不定值,这就需要继续看对应的汇编来进行分析(因为数组是动态数组),这只是个示例,如果在真实内核代码中有这样的函数,那是相当危险的。,好吧,继续8K内核栈。

2024-01-13 11:27:47 1210

原创 reiserfs文件系统的磁盘布局

而在一个Byte内,从低到高位分别标识对应的从小到大块号的block块状态,比如第0个Byte的第0Bit标识第0块block状态,第0个Byte的第1Bit标识第1块block状态,第0个Byte的第2Bit标识第2块block状态,……,第1个Byte的第0Bit标识第8块block状态,第1个Byte的第1Bit标识第9块block状态,第1个Byte的第2Bit标识第10块block状态,……另外,对应的bit位为1标识对应的block块为使用状态,为0标识对应的block块为空闲状态。

2024-01-07 20:03:48 1113

原创 Xfs文件系统磁盘布局

Xfs早已经合到了Linux内核主线,所以在Linux下对Xfs的使用比较简单,但是CentOS默认并没有安装Xfs的相关用户层工具,所以这里记录一下,后续将对Xfs做更深层次的研究。

2024-01-07 19:12:53 3244

原创 Intel x86架构之I/O APIC

在中断被lapic接受后,修改掩码位从非屏蔽状态到屏蔽状态对那个中断(即已被lapic接受的中断)没有任何影响,这与在中断递交到处理器之前,设备撤回了中断的情况类似。只有在对应的目标APIC将IRR(Interrupt Request Register)位从0修改为1时,也就是对应中断已经被目标APIC处理掉而不再处于pending未决状态时,那个中断输入引脚上的新信号才会被重新检测到。如果该位设置为0,那么对应的中断信号没有被屏蔽,边缘或水平中断都将被投递到目标lapic。标识中断的当前投递状态。

2024-01-07 16:11:22 1157 1

原创 Intel x86架构之多处理器

APIC架构被设计为可伸缩扩展。82489DX APIC有8bit的ID寄存器,可以表示最多255个APIC设备,此外,它的逻辑目标寄存器(Logical Destination register)可支持32bit,可以表示最多32个设备。一般而言,在集中式APIC的系统上,操作系统必须使用STARTUP IPI来唤醒其它应用处理器(application processors),而在82489DX APIC的系统上,需使用INIT IPI来唤醒其它应用处理器。在多处理器系统上,中断通过APIC进行控制。

2024-01-07 16:10:26 604 1

原创 Intel x86架构之APIC

通过设置MDA为全1,即为广播消息到所有lapic。MDA的28-31bit位为1的广播IPI(应该是接着上一句说的,即在奔四和至强处理器上,0FH不是广播地址,所以这里才说不被支持,后面会提到0FH是P6和奔腾处理器上的广播地址)或被初始化为最低优先投递模式的I/O子系统不被physical目标模式支持,所以软件(这个软件应该设置BIOS或OS)不能做这样的配置。lapic和io apic都是为多处理器系统而设计的,lapic处理来之io apic的中断,或来之其它处理器的IPI中断,或自身产生的中断。

2024-01-07 16:08:12 1180 1

原创 Intel 性能监视器之二

这是因为当系统空闲时,idle进程默认执行的是mwait_idle()函数,其核心指令mwait导致CPU处于停机状态,所以流逝的时钟周期没有统计到计数器内,进而原本要溢出的计数器没有溢出,nmi中断也就没有触发。3,新的nmi_watchdog机制,其nmi中断源不再可以设置为IO-APIC(即nmi_watchdog=1),而只能是local APIC(即nmi_watchdog=2)。2,第1点是旧的nmi_watchdog机制,自2.6.37.x开始,有了新的nmi_watchdog机制。

2024-01-07 13:53:10 1087 1

原创 Intel 性能监视器

架构兼容事件可以在处理器发展过程中逐步增强,也就是可以认为架构兼容事件具有版本更新的概念,即在新型号的处理器上,提供的架构兼容事件可能要比旧型号的处理器要多,同一个架构兼容事件的功能可能也要更强大。针对不同型号的CPU处理器,它们各自拥有的性能计数寄存器是不同的,因此,相对。通过两组寄存器来实现对架构兼容事件的使用,一组为事件选择寄存器(IA32_PERFEVTSELx),一组为计数寄存器(IA32_PMCx),这两组寄存器是一一对应的,另外,它们的个数也非常有限。

2024-01-07 13:51:34 996 1

原创 现代CPU的多种运行模式

由于AMD64技术向下兼容,所以很好的承接了以前的16位、32位资源,与此相应,X86-64兼容CPU可以运行在多种模式之下,除了熟悉的实模式,保护模式,还有长模式等,下面统一简单介绍现代CPU可运行的各种模式。保护模式拥有内存保护,分页系统,以及硬件支援的虚拟内存等功能。长模式,Long mode,在长模式下,处理器完全执行64位指令,使用64位地址空间(物理内存的寻址能力却没有被完全扩展到64位,因为目前的众多CPU在其寿命期限之内都没有机会见识到如此巨大的内存)和64操作数。

2024-01-07 13:48:49 629 1

原创 Triple Fault的捕获与处理

如果可以,对于捕获Triple Fault,最简便的方法就是使用虚拟机来进行操作,这样在发生Triple Fault时影响的只是虚拟机,在host机器里我们仍然可以做进一步处理。当前虚拟机比较多,比如最常用的Vmware、Qemu、Bochs等,我就试了一下Vmware,发生Triple Fault时Vmware会弹个框进行提示CPU进入shutdown模式,按确定(虚拟机)重启,按取消(虚拟机)关机;在实体机器上的Triple Fault捕获仍然有办法,但这需要更底层的操作,在Intel官方手册。

2024-01-07 11:32:53 1066 1

原创 Double Fault & Triple Fault

Double Fault从字面上来讲,就是前后的动作连续触发两个中断的异常,比如一个缺页异常没有对应的异常中断处理函数(用c代码表示即为NULL,空指针),这就将会引发一个典型的Double Fault,在这种情况下,如果发生缺页异常则将触发一个中断,此时cpu要去调用缺页异常中断处理函数进行处理,但却发现没有这个处理函数,因而这又是一个异常而再次触发中断,此时触发的就是Double Fault异常中断。前32个中断,每个中断的含义都可以在intel手册“

2024-01-07 11:26:14 710 1

原创 dlmalloc解析连载四

上两篇讲解的chunk块是dlmalloc内比较细粒度的管理结构,比它们更大的内存块被称之为段(segment),其结构体以及相关定义如下:struct malloc_segment {  char*        base;             /* base address */  size_t       size;             /* allocated size

2009-05-24 13:14:00 1389

原创 dlmalloc解析连载三

上一篇讨论了dlmalloc对大小在256字节以下的chunk块进行的组织管理,本篇我们再来看看对于大小在256字节以上的chunk块,dlmalloc是如何管理的。对于大小在256字节以上的chunk块,dlmalloc也采用了所谓的分箱机制,不过由于大于256的数目有很多,因此这里的分箱不能够像对于0到256这个有限区间的分箱来得简单。具体来说如下表:字节范围

2009-05-24 13:13:00 1460

原创 dlmalloc解析连载二

2009-05-21 23:50:00 1508 1

原创 lenky0401个人博客地址转移

由于CSDN太。。。了,所以地址转移到CU上,http://lenky0401.cublog.cn,但此处会保持同步更新。

2009-05-20 18:43:00 1125

原创 CSDN啥博客程序啊?

 整死我了 郁闷啊 乱七八糟的 图片一下子显示 一下子不显示 格式调来调去不对 人生啦

2009-05-20 17:50:00 841

原创 dlmalloc解析连载一

dlmalloc是目前一个十分流行的内存分配器,其由Doug Lea(主页为http://gee.cs.oswego.edu/)从1987年开始编写,到目前为止,最新版本为2.8.3(可以从ftp://g.oswego.edu/pub/misc/malloc.c获取),由于其高效率等特点被广泛的使用(比如u-boot以及一些linux系统等用的就是dlmalloc或其变形,比如ptmalloc,主

2009-05-20 13:00:00 2260

原创 Lighttpd中CGI执行流程

对于Lighttpd中CGI执行流程的多余文字不用过多说明,图片里已经基本说的很清楚了。从图中,我们可以看到对于客户端的每一个请求(动态页面,也就是需要CGI处理的),Lighttpd进程都是先fork一个CGI进程,然后将请求头(通过环境参数)和请求体(通过管道)传递给CGI程序,等待CGI处理并将从CGI进程那接收到的处理结果再响应给客户端,然后将CGI终止(通过发送SIGTERM信号)。

2009-05-19 16:41:00 3420

原创 lighttpd-1.4.20源码分析

lighttpd-1.4.20源码分析 以后的更新都在这个地址 http://bbs3.chinaunix.net/thread-1369986-1-1.html网络编程讨论QQ群号:454389690  写在前面 对于轻量级web服务器lighttpd,我个人就不做多的介绍,大家自己在网上查查。我要说的是,从这开始,我将陆续写一些有关lighttpd源码分析的资料。 对于lightt

2009-02-15 09:59:00 7540

原创 webwork中打包分页函数

action公共包有如下类:package com.csdn.action.common;public class DividePage { public static String doDividePage(int maxResultsOnePage,long totalRecord,int currentPage,String url){    String header = ""

2006-10-09 10:32:00 1477

原创 自创C语言灌水程序

#include#include#include#include#include#include#include#include#include#include#include#includechar request[1024 * 4];struct response{char head[10240];char body[102400];} response;//功能:测试字符C是否是字串的最后一

2006-05-24 18:06:00 3808 1

原创 手把手教你写灌水机器,全智能自己定,,想怎么灌就怎么灌~

慎重申明:仅供学习研究之用,不可做不该做的事~~保留作者名义!!这是我前些日子根据我学校的BBS写的灌水程序,现在帖到自己的BLOG请根据你要实验的BBS提交表单作相应改动.22:42 2006-4-22我们使用开源HttpClient,该开源项目用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。我在以前那个公司做单元测试程序

2006-05-24 17:51:00 3045 1

nginx核心讲解

慕名对nginx的源码进行学习研究是早在2009年的事情,当时还在学校,整天呆在实验室里看动漫,时间一久就心感愧疚,觉得还是要趁有空学点东西,恰当时不知从哪里得知高性能服务器是一个很有“前途”的方向,几经搜索又机缘偶合的得识lighttpd与nginx,从此开始在动漫与代码之间来回穿梭,直到毕业。 关于lighttpd与nginx,无需多说,当时lighttpd比nginx要火,所以我先看的lighttpd源码,后看的nginx源码,也因此lighttpd的文档在我读书的时候就写完(虽然写得很矬)了,但nginx的文档写了一些放在电脑里,后来离开学校开始工作后,就把这件事情和这些文档都给搁在那了,直到近一年前,我建了一个个人博客站点(http://lenky.info/),为了凑文章数目,才又把它们给找了出来,并且根据最新的nginx源码重新整理了一下,也就是现在你看到的这篇文档。当然,这只是一部分,所以标题才叫《上篇》。 重新整理主要注意到以前写的文档过细的去逐行解析注释代码(网上很多nginx源码分析的文章也大多有这个缺点),而此次希望能从比较高一点的角度去解析nginx,让读者尽快的把握全局而不是陷入细节;为了达到这个目标,文档里就尽量的少贴代码多画图,当然,一些必要的代码是不可缺少的,所以你还是会在本文档里看到源代码。虽然我的个人期望比较好,可惜水平比较矬,目前写出来的文档也就这个样了。 最后,说一下本文档基于的相关环境,虽然列了一个表格如下,其实没那么复杂,我安装的是一个centos 6.2的32位虚拟机,其它开发软件包都是centos 6.2里对应提供的,nginx版本为1.2.0。 软件包 版本 nginx 1.2.0 os CentOS release 6.2 (Final)/kernel-2.6.32/32bit gcc gcc version 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC) gdb GNU gdb (GDB) Red Hat Enterprise Linux (7.2-50.el6) make GNU Make 3.81

2012-07-21

内存分配器dlmalloc 2.8.3源码浅析

dlmalloc是目前一个十分流行的内存分配器,其由Doug Lea 从1987年开始编写,到目前为止,最新版本为2.8.3 ,由于其高效率等特点被广泛的使用和研究(很多linux系统等用的就是dlmalloc或其变形,比如ptmalloc )。 dlmalloc的实现只有一个源文件(还有一个头文件),大概5000行,其内注释占了大量篇幅,由于有这么多注释存在的情况下,表面上看上去很容易懂,的确如此,在不追求细节的情况,对其大致思想的确很容易了解(没错,就只是了解而已),但是dlmalloc作为一个高品质的佳作,实现上使用了非常多的技巧,在实现细节上不花费一定的精力是没有办法深入理解其为什么这么做,这么做的好处在哪,只有当真正读懂后回味起来才发现它是如此美妙。

2009-05-28

详细的a星算法 原文为英文 但是有对应的中文翻译 有详细的图片 所以文件有点大

详细的a星算法 原文为英文 但是有对应的中文翻译 有详细的图片 所以文件有点大

2008-09-17

软件开发标准DOC文档(GB8567——88)

用户手册(GB8567——88).doc<br>操作手册(GB8567——88).doc<br>测试分析报告(GB8567——88).doc<br>测试计划(GB8567——88).doc<br>概要设计说明书(GB8567——88).doc<br>开发进度月报(GB8567——88).doc<br>可行性研究报告(GB8567——88).doc<br>模块开发卷宗(GB8567——88).doc<br>软件需求说明书(GB856T——88).doc<br>数据库设计说明书(GB8567——88).doc<br>数据要求说明书(GB856T——88).doc<br>文件给制实施规定的实例(GB8567-88).doc<br>详细设计说明书(GB8567——88).doc<br>项目开发计划(GB856T——88).doc<br>项目开发总结报告(GB8567——88).doc

2008-02-29

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

TA关注的人

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