相关疑难解决方法(0)

软件中断VS系统调用

我有一个问题我不知道它是否完全有意义:如果在中断向量中有一个中断函数,其中每个地址槽是指向某个处理中断的函数的指针(服务的类型,并在内核模式下运行) ),那么我的问题是:

制作软件中断而不是使用系统调用(又称函数)会有所作为吗?让我们举一个例子:我可以在Windows中以两种方式销毁一个进程:

  1. 我只是叫"ExitProcess"
  2. 我只是在汇编中使用中断"int80h"(好吧,至少在Linux中.在Windows中是否可以?)

两者都可以工作并给出相同的结果.我认为唯一不同的是中断会停止CPU,而系统调用,因为它不是一个中断,它不会停止CPU做其他事情(这允许多线程而不是为了不需要停止的东西而停止)整个CPU).

我真的想要的是,WIN32API(或任何其他操作系统)中的所有功能都可以实现为中断而不会产生任何影响.然后,这将使WIN32API成为一个不需要的层.你不觉得吗?那么,软件中断和系统调用之间有什么区别?您只需要调用WIN32API中的函数来请求服务,并且使用中断,您只需要传递参数(通过堆栈或寄存器)并调用由数字标识的指定中断.我能想到的唯一原因是每个进程都创建了DLL(这些实例),并且只使用了你需要的函数.

这对于中断是不可能的,并且所有进程将共享相同的数据,这并不总是人们想要的.

PD:这是一个额外的问题,这个问题超出了主题但是有点问题:我在哪里可以看到我可以在操作系统中调用的所有中断的参考/列表?我无处可见任何文档.

assembly operating-system signals interrupt system-calls

9
推荐指数
1
解决办法
4085
查看次数

什么是INT 21h?

灵感来自这个问题

如何强制GDB反汇编?

我想知道INT 21h是一个概念.现在,我对内部有一些非常生疏的知识,但没有那么多细节.我记得在C64中你有定期中断和不可屏蔽中断,但我的知识在这里停止.你能告诉我一些线索吗?这是DOS相关策略吗?

operating-system interrupt internals low-level

5
推荐指数
3
解决办法
3万
查看次数

Windows 控制台子系统如何工作?

那么控制台子系统是如何工作的呢?我了解高级别的东西,例如 Windows 自动为程序创建控制台窗口,然后提供控制台窗口的句柄,您可以使用 WriteConsole 和 ReadConsole 对其进行写入和读取,但是窗口本身如何工作?Windows 使用 GDI 将字符绘制到控制台吗?或者一些隐藏的内部功能?幕后发生了什么?

windows internals internal

1
推荐指数
1
解决办法
386
查看次数