ChinaUnix.net
相关文章推荐:

linux tss 软切换

使用call 指令在不同的特权级代码间切换时,对应的堆栈也要进行切换。这是保护机制的一项内容。由于堆栈发生了变换,原来堆栈中用于恢复环境的压栈内容(ss/esp/cs/eip/参数等)就必须同时拷贝到目标堆栈中,否则从目标堆栈中返回时就会失去入口造成程序崩溃。(我个人认为只要将ss/esp压栈就可以了,其余内容可以在堆栈复原后从原来堆栈中找到。)这个内容很好理解。那么,不同的堆栈,肯定有一个数据结构保存着他们的信息列表。...

by xiaobao_linux - Linux文档专区 - 2009-11-30 22:54:54 阅读(1319) 回复(0)

相关讨论

1。能进入PM, 2。能产生中断输出 3。问题出在jmpi tts上...跳不过去啊。头大大大,去掉jmpi 0,0x18,是可以正常运行的) 4。内存: _________________________________ |Base |Locat | ---------------------------------------------------- |0 |sec2的代码,做为一个“小内核" | _________________________________ |1k |GDT ...

by folklore - 内核源码 - 2007-08-31 23:32:09 阅读(4798) 回复(12)

用 nasm编译通过,虚拟机运行出错,我看我的代码和别人的视乎没差别,我查了许久了,都不知哪里错 代码大意是 直接通过 tss选择子进行任务切换,,,jmp tss_sel:0 代码如下: %macro descriptor 3 dw %2 & 0ffffh dw %1 & 0ffffh db (%1>>16) & 0ffh dw ((%2>> & 0f00h) | (%3 & 0f0ffh) db (%1>>24) & 0ffh %endmacro org 0100h jmp start ;********************************************** [section .gdt] gdtstart: desc...

by 386asm - 内核源码 - 2013-07-27 00:22:48 阅读(1248) 回复(3)

本帖最后由 386asm 于 2013-07-22 01:08 编辑 用 nasm编译通过,虚拟机运行出错,我看我的代码和别人的视乎没差别,我查了许久了,都不知哪里错 代码大意是 直接通过 tss选择子进行任务切换,,,jmp tss_sel:0 代码如下: %macro descriptor 3 dw %2 & 0ffffh dw %1 & 0ffffh db (%1>>16) & 0ffh dw ((%2>>8) & 0f00h) | (%3 & 0f0ffh) db (%1>>24) & 0ffh %endmacro org 0100h jmp start ;***********************...

by 386asm - CPU与编译器 - 2013-07-22 01:08:56 阅读(988) 回复(0)

linux的实现为单核系统只用一个tss,这个tss存储当前进程的内核堆栈地址等。 但在多核系统中,每个CPU仍然使用各自的tss 那为什么每个cpu都有各自的tss呢,都用同一个不行吗?

by FarmlandPower - 内核源码 - 2009-10-14 22:09:25 阅读(4039) 回复(3)

在intel手册-卷3里面看到,tss只能在GDT中定义,不能在LDT和IDT中定义,并且对于 tss.esp0, tss.ss0, tss.ss1, tss.esp1, tss.ss2, tss.esp2 在初始化设置了之后就不能(由CPU)动态更改。那就意味着所有的任务都共用一个tss。那我就有个疑问: 假设: A1(ring0),A2(ring0) B1(ring1),B2(ring1) C1(ring2),C2(ring2) D1(ring3),D2(ring3) tss的栈指针: tss.esp0/ss0: stack0 tss.esp1/ss1: stack1 tss.es...

by ts0612 - CPU与编译器 - 2009-07-16 18:27:18 阅读(2194) 回复(5)

linux中断 在由内核执行的几个任务之间有些不是紧急的,在必要情况下他们可以延迟一段时间。一个中断处理程序的几个中断服务例程之间是串行执行的,并且通常在一个中断的处理程序结束前,不应该再次出现这个中断。相反,可延迟中断可以在开中断的情况下执行。 linux中所谓的可延迟函数,包括中断和tasklet以及通过中作队列执行的函数(这个以后说),中断的分配是静态的(即值编译时定义),而tasklet的分配和初始...

by feiyang10086 - 监控及自动化运维技术 - 2014-06-13 11:27:30 阅读(7072) 回复(4)

请问:什么型号的无线网卡,有linux 下的AP功能啊,对应的驱动,固件等在哪里可以下,最好是支持80211G的?

by halfslipper - Linux系统管理 - 2010-11-04 09:21:43 阅读(3844) 回复(3)

中断服务程序往往都是在CPU关中断的条件下执行的,以避免中断嵌套而使控制复杂化。但是CPU关中断的时间不能太长,否则容易丢失中断信号。为此, linux将中断服务程序一分为二,各称作“Top Half”和“Bottom Half”。前者通常对时间要求较为严格,必须在中断请求发生后立即或至少在一定的时间限制内完成。因此为了保证这种处理能原子地完成,Top Half通常是在CPU关中断的条件下执行的。具体地说,Top Half的范围包括:从在IDT中登记...

by ninver - Linux文档专区 - 2009-09-13 19:50:35 阅读(854) 回复(0)

[color="#295200"]linux磁盘阵列 1. RAID 简介 RAID是英文Redundant Array of Inexpensive Disks的缩写,中文名字为磁盘冗余阵列,顾名思义它是由磁盘组成阵列而成的。 简单地说,RAID就是一种把多块独立的硬盘(物理硬盘)按不同方式组合起来的一个硬盘组(逻辑硬盘),提供比单个硬盘更高的存储性能和数据冗余的技术,既保证了存取数据的快捷方便和管理客户端的简捷,也解决了存储海量数据的问题,同时提供了容错性(Fault ...

by sjhf - Linux文档专区 - 2009-03-23 11:23:42 阅读(394) 回复(0)

softirq,tasklet和下半部是linux做延迟函数的三种实现形式,各有所长。 softirq 在系统中的调用点仅是在 ISR 返回时和 使用了 local_bh_enable() 函数后被调用了。 linux kernel source 2.6.19.1 /kernel/softirq.c // // do_IRQ 函数执行完硬件 ISR 后退出时调用此函数。 // void irq_exit(void) { account_system_vtime(current); trace_hardirq_exit(); sub_preempt_count(IRQ_EXIT_OFFSET); // // 判断当前是否有硬件中断嵌...

by owenustc - Linux文档专区 - 2008-05-05 09:44:06 阅读(567) 回复(0)