首页
社区
课程
招聘
[求助]请教几个“专业名词”的解释
发表于: 2010-7-23 01:03 5285

[求助]请教几个“专业名词”的解释

2010-7-23 01:03
5285
1. 自旋锁 是什么? (非常感谢 forgot 版主)

2. IRQL 是什么? 为什么写物理地址的时候 需要提升IRQL(非常感谢 gzsmhf )

3. IRP 是什么? 为什么删除文件 要发送IRP?

4. I/0 是什么?(感谢 ucantseeme,天涯一鸿)

5. 栈回溯 是什么? (非常感谢 ucantseeme)

更感谢 看雪论坛 能提供这么好的一个交流环境

结贴。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 442
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我知道最简单的I/O就是输入输出

栈回溯应该就是指通过通过栈来寻找之前执行过的代码流程(用词应该有点不准确)

因为每过一个call,他都会将下一条地址压入堆栈
2010-7-23 05:17
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这种问题不问百度谷歌真是浪费了
2010-7-23 08:25
0
雪    币: 67
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
I/O 我还不是很理解。不好意思哦,不过我栈回溯 倒是理解了 非常感谢 你
2010-7-23 09:05
0
雪    币: 67
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
嗯,其实 再此之前 我已经百度过了,但是搜索到的 都很难理解,尤其是 自旋锁..
2010-7-23 09:06
0
雪    币: 998
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
最好的方法是你去看自旋锁的实现,一下就理解了。你可以查基本算法,或者直接看linux源码。
2010-7-23 10:20
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我记得有篇文章叫 明明白白自旋锁
2010-7-24 11:20
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
8
In software engineering, a spinlock is a lock where the thread simply waits in a loop ("spins") repeatedly checking until the lock becomes available.

The following example uses x86 assembly language to implement a spinlock. It will work on any Intel 80386 compatible processor.
# Intel syntax
 
lock:                        # The lock variable. 1 = locked, 0 = unlocked.
     dd      0
 
spin_lock:
     mov     eax, 1          # Set the EAX register to 1.
 
loop:
     xchg    eax, [lock]     # Atomically swap the EAX register with
                             #  the lock variable.
                             # This will always store 1 to the lock, leaving
                             #  previous value in the EAX register.
 
     test    eax, eax        # Test EAX with itself. Among other things, this will
                             #  set the processor's Zero Flag if EAX is 0.
                             # If EAX is 0, then the lock was unlocked and
                             #  we just locked it.
                             # Otherwise, EAX is 1 and we didn't acquire the lock.
 
     jnz     loop            # Jump back to the XCHG instruction if the Zero Flag is
                             #  not set, the lock was locked, and we need to spin.
 
     ret                     # The lock has been acquired, return to the calling
                             #  function.
 
spin_unlock:
     mov     eax, 0          # Set the EAX register to 0.
 
     xchg    eax, [lock]     # Atomically swap the EAX register with
                             #  the lock variable.
 
     ret                     # The lock has been released.
2010-7-24 11:39
0
雪    币: 247
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
IRQL,是中断请求级别。中断可以分为软件中断和硬件中断等等。windows操作系统中将软件中断划分了三个级别:PASSIVE_LEVEL、APC_LEVEL、DISPATCH_LEVEL,优先级依次更高,一般的驱动程序都运行在PASSIVE_LEVEL上。写内存的时候将IRQL提升到软件中断的最高级DISPATCH_LEVEL是为了防止内存未完全写完时该线程就被切换走导致蓝屏。
2010-7-24 11:48
0
雪    币: 1040
活跃值: (1313)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
i/o就是in/out……输入输出……
2010-7-24 20:35
0
游客
登录 | 注册 方可回帖
返回
//