自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (1)
  • 收藏
  • 关注

转载 GCC 的编译流程及中间表示层 RTL 的初步探索

 

2009-03-16 20:57:00 1571 2

转载 GCC源代码分析(1): GCC中的树

    本文分析GCC4.3.1的源代码。如某位牛人所说,我并不打算做“参考手册”式的源码分析,而是打算做“航海日志”式的。* GCC中的树    对于GCC的前端和高级的分析和及优化而言,树是其核心的数据结构。经过语法分析的源程序都表示为树的形式。这里要说一下,GCC中,实际上有三种树:GENERIC,GIMPLE和SSA。    GENERI

2009-03-16 20:55:00 3539 1

转载 GCC源码分析(2):从C代码到GIMPLE

* 从C代码到GIMPLE    上一部分我们分析了gcc中的“树”,这些树是源程序在编译器内部的表示形式。本部分试图来分析gcc是如何将源代码变成这种内部表示的。本文以C语言的翻译过程为例。    首先,我需要找到cc1的控制流的入口点。在gcc目录下grep一下main,发现好多,但是,根据文件名来看,main.c中的那个最值得怀疑。这个文件

2009-03-16 20:55:00 6005 1

转载 (转载)Linux 汇编语言开发指南 收藏

 一、简介 作为最基本的编程语言之一,汇编语言虽然应用的范围不算很广,但重要性却勿庸置疑,因为它能够完成许多其它语言所无法完成的功能。就拿 Linux 内核来讲,虽然绝大部分代码是用 C 语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码,其中主要是在 Linux 的启动部分。由于这部分代码与硬件的关系非常密切,即使是 C 语言也会有些力不从心,而汇编语言则能够很好扬长避短,最大限度地发挥硬

2009-03-15 23:22:00 387

转载 (转载)深入Linux网络核心堆栈

 创建时间:2003-08-22文章属性:翻译文章提交:raodan (raod_at_30san.com)==Phrack Inc.==              卷标 0x0b, 期刊号 0x3d, Phile #0x0d of 0x0f|=---------------------=[ 深入Linux网络核心堆栈 ]=-----------------------=||=----------

2009-03-15 23:20:00 429

转载 (转载)linux内核进程调度以及定时器实现机制

 一、2.6版以前内核进程调度机制简介Linux的进程管理由进程控制块、进程调度、中断处理、任务队列、定时器、bottom half队列、系统调用、进程通信等等部分组成。进程调用分为实时进程调度和非实时进程调度两种。前者调度时,可以采用基于动态优先级的轮转法(RR),也可以采用先进现出算法(FIFO)。后者调度时,一律采用基于动态优先级的轮转法。某个进程采用何种调度算法由改进程的进程控制块

2009-03-15 23:17:00 927

转载 Linux调度器(schedule函数)

1:在进程却换前,scheduler做的事情Schedule所作的事情是用某一个进程替换当前进程。(1)    关闭内核抢占,初始化一些局部变量。need_resched:preempt_disable( );prev = current;rq = this_rq( );当前进程current被保存在prev,和当前CPU相关的runqueue的地址保存在rq中。(2)       检查prev没

2009-03-15 22:56:00 2709

转载 (转载)零拷贝技术研究与实现收藏

 零拷贝技术研究与实现作者:梁健(firstdot)E-MAIL:[email protected]一.基本概念零拷贝(zero-copy)基本思想是:数据报从网络设备到用户程序空间传递的过程中,减少数据拷贝次数,减少系统调用,实现CPU的零参与,彻底消除CPU在这方面的负载。实现零拷贝用到的最主要技术是DMA数据传输技术和内存区域映射技术。如图1所示,传统的网络数据报处理,需要经过

2009-03-15 22:50:00 512

转载 网络处理的软中断机制分析

内核默认软中断机制分析(process_backlog)首先需要介绍的就是netif_rx(在net/core/dev.c中定义)函数,这个函数在网卡驱动程序与linux内核之间建立了一道桥梁,将网卡接收上来的数据包(sk_buff形式)插入内核维护的接收缓冲区队列当中:int netif_rx(struct sk_buff *skb){       int this_

2009-03-15 21:41:00 422

转载 kernel_thread

内核线程实际上就是一个共享父进程地址空间的进程,它有自己的系统堆栈.内核线程和进程都是通过do_fork()函数来产生的,系统中规定的最大进程数与线程数由fork_init来决定:[/arch/kernel/process.c/fork_init()]void __init fork_init(unsigned long mempages){#ifndef __HAVE_ARCH_TASK_STR

2009-03-15 17:41:00 1488

转载 自旋锁在内核中的实现

自旋锁是相对于SMP系统而言的。在单处理器中只要保证在临界区时不发生进程调度(包括进程抢占), 禁止中断,或者即使开启中断,只要中断例程与临界区无冲突,在或者临界区只有一条指令(中断只发生在指令之间,并不会打断一条执行中的指令),就会保持操作的同步。但是在SMP中,情况就会变的复杂的多, 考虑下面一种情况:1. CPU0中的某一个进程从内存A处读取了一个值, 然后对它进行了修改。2. CPU1中的

2009-03-15 17:18:00 2740 1

转载 职场经验

1、当你经常被人指责的时候,说明你是一个举足轻重的人物。2、真正认识你的人,除了你的朋友外,就是你的对手。所以,要重视你的对手,因为他最早发现你的过失;要感谢你的对手,因为他使你更加强大起来。3、处在第二的位置比处在第一的位置更有安全感。靠支持别人可以获得安全感,靠打击别人也可以获得安全感。4、当你超过别人一点点时,别人就会嫉妒你;当你超过别人一大截时,别人就会羡慕你。5、你被

2009-03-15 16:09:00 451

转载 copy_from_user | copy_to_user and so on

字符设备驱动驱动的读,写。如:ssize_t xxx_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos);ssize_t xxx_write(struct file *filp, const char __user *buf, size_t count, loff_t *f_pos);等函数中,filp是文件

2009-03-15 15:27:00 2282

转载 内核等待队列

相信很多写程序的人都写过 socket 的程序。当我们 open 一个 socket 之后,接着去读取这个 socket,如果此时没有任何资料可供读取,那 read 就会 block 住。(这是没有加上 O_NONBLOCK 的情形),直到有资料可读取才会传回来。在 Linux kernel 里有一个数据结构可以帮助我们做到这样的功能。这个数据结构就是这里要跟各位介绍的 wait queu

2009-03-15 15:25:00 346

转载 Loadable Kernel Modules 注射

LKM 注射 --[ 内容 1 - 介绍 2 - ELF 基础知识 2.1 - The .symtab section 2.2 - The .strtab section 3 - 玩转 loadable kernel modules 3.1 - 模块加载 3.2 - 修改 .strtab section 3.3 - 插入代码 3.4 - 保持隐蔽性 4 - 实例 4.1 - 最简单的 LKM 感染

2009-03-15 14:21:00 513

转载 rootkit

 在网络安全中经常会遇到rootkit,NSA安全和入侵检测术语字典( NSA Glossary of Terms Used in Security and Intrusion Detection)对rootkit的定义如下:A hacker security tool that captures passwords and message traffic to and from a comput

2009-03-15 14:09:00 495

转载 非编译到kernel中的驱动程序为什么非要定义:__attribute__((alias(#x)))

非编译到kernel中的驱动程序为什么非要定义:__attribute__((alias(#x)))别名问题非编译到kernel中的驱动程序为什么非要定义:#define MODULE本篇为《linux启动时对编译进内核驱动模块的加载》的姊妹篇,主要是module模式下驱动的加载分析.#ifndef MODULE# define MODULE#endif定义#define MODULE是为了i

2009-03-15 11:52:00 677

转载 DMA

当我们向计算机中加入了一块新的声卡或其它适配卡时,安装程序可能会提醒我们应该选择一个DMA通道。那DMA是什么呢? DMA(Direct Memory Access),即直接存储器存取,是一种快速传送数据的机制。数据传递可以从适配卡到内存,从内存到适配卡或从一段内存到另一段内存。DMA技术的重要 性在于,利用它进行数据传送时不需要CPU的参与。每台电脑主机板上都有DMA控制器,通常计算机对其编程,

2009-03-15 00:02:00 336

转载 Linux PROC文件系统详细介绍

proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。它的目录结构如下: 目录名称 目录内容 apm 高级电源管理信息

2009-03-14 23:59:00 406

转载 Linux驱动入门收藏

内核版本: 2.4.22阅读此文的目的: 学会编写Linux设备驱动。阅读此文的方法: 阅读以下2个文件: hello.c,asdf.c。此文假设读者:已经能用C语言编写Linux应用程序,理解"字符设备文件, 块设备文件, 主设备号, 次设备号",会写简单的Shell脚本和Makefile。1. "hello.c"--------------------------------/** 这是我

2009-03-14 23:46:00 337

原创 2.4和2.6在任务调度上的不同

检查点: A) 返回用户空间/返回内核空间: ----2.4 :只在返回user space的时候才会检查任务是否需要被调度. ----2.6:除了保留这个检查点,新增了返回内核空间的检查点, 这个检查点调用preempt_schedule_irq,这就是抢占式调度. 2.6中调用__schedule前有个关键的操作, add_preempt_count(PREEMPT_ACTIVE),这标志这此

2009-03-14 23:40:00 361

原创 内核抢占

---------------------------------------------------    与其他大部分Unix变体和其他大部分的操作系统不同, Linux完整地支持内核抢占。    在不支持内核抢占的内核中,内核代码可以一直执行,到它完成为止。也就是说,调度程序没有办法在一个内核级的任务正在执行的时候重新调度 -- 内核中的各任务是协作方式调度的,不具备抢占性。    在2.6

2009-03-14 23:29:00 419

原创 LINUX 书籍

2009-03-14 23:27:00 234

原创 (转载)Linux内核网络设备操作部分阅读笔记收藏

网络设备的初始化网络设备初始化就是调用具有__init 前缀的net_dev_init函数完成的,网络设备初始化包含两个部分(在linux内核2.4办源代码分析大全一书的第550页有详细说明),就是:在系统初始化期间对系统已知的网络设备进行初始化过程,也就是,我们在编译内核时选择编入内核的那部分网卡设备就会在这个时候逐个进行初始化工作。系统中已知的网络设备都存储在一个全局表中,dev_

2009-03-13 20:50:00 360

原创 (转载)Linux内核内存池管理技术实现分析收藏

一.Linux系统内核内存管理简介Linux采用“按需调页”算法,支持三层页式存储管理策略。将每个用户进程4GB长度的虚拟内存划分成固定大小的页面。其中0至3GB是用户态空间,由各进程独占;3GB到4GB是内核态空间,由所有进程共享,但只有内核态进程才能访问。Linux将物理内存也划分成固定大小的页面,由数据结构page管理,有多少页面就有多少page结构,它们又作为元素组成一个数组mem

2009-03-13 19:57:00 289

原创 内核线程

ps的名称显示里面加 "[]"的是内核线程。线程系统的启动是从硬件->内核->用户态进程的。pid的分配是一个往前的循环的过程,所以内核线程的pid往往很小。 Linux内核可以看作一个服务进程(管理软硬件资源,响应用户进程的种种合理以及不合理的请求)。内核需要多个执行流并行,为了防止可能的阻塞,多线程化是必要的,各个执行流共享地址空间。events 处理内核事件很多软硬件

2009-02-16 20:06:00 283

Vim用户手册中文版.pdf

Vim用户手册中文版 VIM用户手册— 作者: Bram Moolenaar 翻译: [email protected]

2008-09-02

空空如也

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

TA关注的人

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