小编ron*_*y_t的帖子

触发中断时是否发生上下文切换?

进程的虚拟地址空间包含1 GB的内核空间:

在此输入图像描述

现在我假设这个1 GB的内核空间指向与内核相关的数据和代码(包括中断描述符表(IDT)).

现在让我们说CPU正在执行某个进程,这个进程进行了系统调用(触发了中断0x80(int 0x80)).会发生什么是CPU将转到IDT并执行与中断号相关的中断处理程序0x80.

现在CPU将保持在当前进程中,并从当前进程的内核空间执行中断处理程序(因此不会发生上下文切换)?

linux x86 assembly operating-system linux-kernel

7
推荐指数
0
解决办法
475
查看次数

Linux 中进程和线程为何是同一个东西?

我读过,Linux 中的进程和线程是同一件事,例如在这个问题中它说:

Linux 上的线程和进程完全没有区别。

但我不明白进程和线程怎么可能意味着同一件事。我的意思是线程是由 CPU 执行的,而进程只是线程的“外壳”,它允许线程拥有共享内存。下图显示了进程及其线程之间的关系:

在此输入图像描述

显然进程和线程并不意味着同一件事!

linux multithreading operating-system process

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

将 CPU 切换到用户模式和内核模式的汇编指令?

根据我的理解,当中断被触发时,CPU 会切换到内核态,而当中断被处理时,操作系统会将 CPU 切换回用户态。

现在我的问题是:

  1. 操作系统是如何将 CPU 切换到用户模式的(使用的汇编指令是什么?)。
  2. 是否有将 CPU 切换到内核模式的汇编指令,还是只有在触发中断时才会切换到内核模式?

x86 assembly operating-system

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

为什么他们说NASM中的字符串最多包含8个字符?

NASM手册说:

3.4.2字符串

字符串由最多八个字符组成,用单引号('...'),双引号("...")或反引号(`...`)括起来.单引号或双引号等同于NASM(当然,用单引号围绕常量允许双引号出现在其中,反之亦然); 这些内容逐字表示.反引号中的字符串支持特殊字符的C风格\ -escapes.

我不明白为什么他们说一个字符串最多由八个字符组成,这是否意味着如果一个字符串由9个字符组成,它不被称为字符串?!

x86 assembly nasm

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

NASM能否使用机器码hexdump + asm源生成文件?

如果我有以下汇编代码:

mov eax, 123
mov ebx, 321
Run Code Online (Sandbox Code Playgroud)

NASM是否可以生成一个文件,显示我显示的汇编代码的相应机器代码,例如:

F2 FF A3    mov eax, 123
D7 D1 A1    mov ebx, 321
Run Code Online (Sandbox Code Playgroud)

x86 assembly nasm

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