- 博客(23)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注
原创 CSDN博客重新更新
说来惭愧,好久没更新博客文章,导致个人博客网站:https://lenky.info/ 所在的网络空间和域名都过期了都没发觉,直到有个同事在Dim上问我我的个人博客为啥打不开了。。。幸好之前有做整站备份,后续慢慢把内容都迁回CSDN上吧。
2024-01-07 10:55:12 902 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 1127
原创 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 1102
原创 Xfs文件系统磁盘布局
Xfs早已经合到了Linux内核主线,所以在Linux下对Xfs的使用比较简单,但是CentOS默认并没有安装Xfs的相关用户层工具,所以这里记录一下,后续将对Xfs做更深层次的研究。
2024-01-07 19:12:53 3078
原创 Intel x86架构之I/O APIC
在中断被lapic接受后,修改掩码位从非屏蔽状态到屏蔽状态对那个中断(即已被lapic接受的中断)没有任何影响,这与在中断递交到处理器之前,设备撤回了中断的情况类似。只有在对应的目标APIC将IRR(Interrupt Request Register)位从0修改为1时,也就是对应中断已经被目标APIC处理掉而不再处于pending未决状态时,那个中断输入引脚上的新信号才会被重新检测到。如果该位设置为0,那么对应的中断信号没有被屏蔽,边缘或水平中断都将被投递到目标lapic。标识中断的当前投递状态。
2024-01-07 16:11:22 1112 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 591 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 1148 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 1076 1
原创 Intel 性能监视器
架构兼容事件可以在处理器发展过程中逐步增强,也就是可以认为架构兼容事件具有版本更新的概念,即在新型号的处理器上,提供的架构兼容事件可能要比旧型号的处理器要多,同一个架构兼容事件的功能可能也要更强大。针对不同型号的CPU处理器,它们各自拥有的性能计数寄存器是不同的,因此,相对。通过两组寄存器来实现对架构兼容事件的使用,一组为事件选择寄存器(IA32_PERFEVTSELx),一组为计数寄存器(IA32_PMCx),这两组寄存器是一一对应的,另外,它们的个数也非常有限。
2024-01-07 13:51:34 980 1
原创 现代CPU的多种运行模式
由于AMD64技术向下兼容,所以很好的承接了以前的16位、32位资源,与此相应,X86-64兼容CPU可以运行在多种模式之下,除了熟悉的实模式,保护模式,还有长模式等,下面统一简单介绍现代CPU可运行的各种模式。保护模式拥有内存保护,分页系统,以及硬件支援的虚拟内存等功能。长模式,Long mode,在长模式下,处理器完全执行64位指令,使用64位地址空间(物理内存的寻址能力却没有被完全扩展到64位,因为目前的众多CPU在其寿命期限之内都没有机会见识到如此巨大的内存)和64操作数。
2024-01-07 13:48:49 604 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 1055 1
原创 Double Fault & Triple Fault
Double Fault从字面上来讲,就是前后的动作连续触发两个中断的异常,比如一个缺页异常没有对应的异常中断处理函数(用c代码表示即为NULL,空指针),这就将会引发一个典型的Double Fault,在这种情况下,如果发生缺页异常则将触发一个中断,此时cpu要去调用缺页异常中断处理函数进行处理,但却发现没有这个处理函数,因而这又是一个异常而再次触发中断,此时触发的就是Double Fault异常中断。前32个中断,每个中断的含义都可以在intel手册“
2024-01-07 11:26:14 683 1
原创 dlmalloc解析连载四
上两篇讲解的chunk块是dlmalloc内比较细粒度的管理结构,比它们更大的内存块被称之为段(segment),其结构体以及相关定义如下:struct malloc_segment { char* base; /* base address */ size_t size; /* allocated size
2009-05-24 13:14:00 1370
原创 dlmalloc解析连载三
上一篇讨论了dlmalloc对大小在256字节以下的chunk块进行的组织管理,本篇我们再来看看对于大小在256字节以上的chunk块,dlmalloc是如何管理的。对于大小在256字节以上的chunk块,dlmalloc也采用了所谓的分箱机制,不过由于大于256的数目有很多,因此这里的分箱不能够像对于0到256这个有限区间的分箱来得简单。具体来说如下表:字节范围
2009-05-24 13:13:00 1447
原创 lenky0401个人博客地址转移
由于CSDN太。。。了,所以地址转移到CU上,http://lenky0401.cublog.cn,但此处会保持同步更新。
2009-05-20 18:43:00 1119
原创 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 2250
原创 Lighttpd中CGI执行流程
对于Lighttpd中CGI执行流程的多余文字不用过多说明,图片里已经基本说的很清楚了。从图中,我们可以看到对于客户端的每一个请求(动态页面,也就是需要CGI处理的),Lighttpd进程都是先fork一个CGI进程,然后将请求头(通过环境参数)和请求体(通过管道)传递给CGI程序,等待CGI处理并将从CGI进程那接收到的处理结果再响应给客户端,然后将CGI终止(通过发送SIGTERM信号)。
2009-05-19 16:41:00 3405
原创 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 7520
原创 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 1476
原创 自创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 3788 1
原创 手把手教你写灌水机器,全智能自己定,,想怎么灌就怎么灌~
慎重申明:仅供学习研究之用,不可做不该做的事~~保留作者名义!!这是我前些日子根据我学校的BBS写的灌水程序,现在帖到自己的BLOG请根据你要实验的BBS提交表单作相应改动.22:42 2006-4-22我们使用开源HttpClient,该开源项目用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。我在以前那个公司做单元测试程序
2006-05-24 17:51:00 3037 1
nginx核心讲解
2012-07-21
内存分配器dlmalloc 2.8.3源码浅析
2009-05-28
软件开发标准DOC文档(GB8567——88)
2008-02-29
javascript操作本地文件
2008-08-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人