Esi

任务切换

任务切换 任务切换的方法   第一个方法就是借助中断来进行任务切换,这是现代抢占式多任务的基础。在实模式下,内存最低端1KB是中断向量表,保存着256个中断处理过程的段地址和偏移地址。在保护模式下,处理器不再使用中断向量表,而是使用中断描述符表。中段描述符表和GDT,LDT是一样的,用于保存描述符,唯一不同的地方是,他保存的是门描述符,包括中断门,陷阱门...

Win32汇编--数据结构

数据结构 据结构实际上是由多个字段组成的数据样板,相当于一种自定义的数据类型,数据结构中间的每一个字段可以是字节、字、双字、字符串或所有可能的数据类型。(据说人是由泥巴捏成的) 比如在API函数RegisterClass 中要使用到一个叫做WNDCLASS的数据结构,Microsoft的手册上是如下定义的: struct _WNDCLASS typeof...

PE文件格式基本结构信息

一)win32下PE文件格式的文件有:*.exe;*.dll;*.scr;*.fon;*.drv;*.sys 二)pe文件基本结构 附加数据 其它节区 .reloc节区 .rsrc节区 .data节区 .text节区 节表 数据目录 选项头 文件头 PE标志 DOS stub DOS头 格式说明: 1)dos头: 0000 0000:4D 5A 000...

如何跟踪高CPU在用户模式应用程序-现场调试!

我想谈谈我们经常处理的一个常见问题。我们的任务通常是在用户模式进程/应用程序中查找哪些函数正在使用CPU。通常,用户会发现一个应用程序使用的CPU比他们预期的要多,这可能会影响整个系统的性能和响应能力。 对于这个练习,我编写了一些人为的示例代码,称为EATCPU。它包含在博客文章的底部。任务管理器的下图显示EATCPU消耗41%的CPU时间。客户或用户可能...

switch_to函数为什么要保存esi/edi/ebx/ebp?

线程切换过程:   interrupt_handler.S(interrupt_handle_entry)  ->  interrupt.c(c_version_handle)  ->  switch_to.S 结论:   在switch_to函数中必须保存esi/edi/edx/ebp这四个寄存器 原因:   GCC在对C、汇编代码进行混合编...

RTEMS 进程切换分析(基于i386体系)

在支持多任务操作系统中,进程切换是不可避免的,以使进程能在单个CPU上并发执行。进程的调度涉及到的东西较多,例如调度的时机、调度的策略等等,在这里我们只讨论RTEMS任务调度中进程切换的细节,通过分析以明白操作系统如何做到使一个CPU的使用权如何从一个任务上切换到另一个任务。 下面假设两个任务TASK1和TASK2,当前正在执行的任务executing =...

内存拷贝的优化方法

在复杂的底层网络程序中,内存拷 贝、字符串比较和搜索操作很容易成为性能瓶颈所在。编译器自带的此类函数虽然做了一些通用性的优化工作,但因为在使用指令集方面受到兼容性的约束,远远没 有达到最大限度利用硬件能力的地步。而通过针对特定硬件平台的优化,可以大大提高此类操作的性能。下面我将以P4平台下内存拷贝操作为例,根据AMD提供 的一份优化文档中的例子,简要介绍一...