From 50561b6d043add15e5c252723524f76c3663e7b5 Mon Sep 17 00:00:00 2001 From: Zhe Tang Date: Sat, 24 Feb 2024 12:30:35 +0800 Subject: [PATCH] wiki: fix some typos in ring. --- docs/wiki/ring.md | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/docs/wiki/ring.md b/docs/wiki/ring.md index 641f4af..c1222c3 100644 --- a/docs/wiki/ring.md +++ b/docs/wiki/ring.md @@ -1,6 +1,4 @@ -# 用户态、内核态与Ring - - +# 用户态、内核态与ring ## 概述 @@ -14,13 +12,13 @@ 当没有设置模式位时,进程就运行在用户态中。用户态中的进程不允许执行特权指令(privileged instruction),比如停止处理器、改变模式位,或者发起一个 I/O 操作。也不用户模式中的进程直接引用地址空间中内核区内的代码和数据。**任何这样的尝试都会导致致命的保护故障**,如一般保护故障、缺页异常(Page Fault)等。 !!! note "关于一般保护故障" - 一般保护故障(General Protection Fault,通常缩写为GPF)是操作系统在发现进程试图执行非法、未授权的或特权级别不足的操作时产生的一种异常。 + 一般保护故障(General Protection Fault,通常缩写为 GPF)是操作系统在发现进程试图执行非法、未授权的或特权级别不足的操作时产生的一种异常。 反之,用户程序必须通过系统调用接口**间接地**访问内核代码和数据。运行应用程序代码的进程初始时是在用户模式中的。进程从用户模式变为内核模唯一方法是通过诸如中断、故障或者陷入系统调用这样的异常。当异常发生时,控制到异常处理程序,处理器将模式从用户模式变为内核模式。处理程序运行在内核模中当它返回到应用程序代码时,处理器就把模式从内核模式改回到用户模式。 ## ring -在x86_64体系结构中,操作系统和应用程序运行在不同的特权级别(privilege levels)中,这些级别被称为"ring"。一般来说,较*低*的数字代表更*高*的特权级别。具体来说:Ring 0对应为上文的内核态(kernel mode);Ring 3对应为上文的用户态(user mode)。 +在x86_64体系结构中,操作系统和应用程序运行在不同的特权级别(privilege levels)中,这些级别被称为 "ring"。一般来说,较*低*的数字代表更*高*的特权级别。具体来说:ring 0 对应为上文的内核态(kernel mode);ring 3对应为上文的用户态(user mode)。 !!! question "为什么大家不用 ring 1/2?" @@ -28,12 +26,11 @@ 2. **可移植性问题:** 操作系统的设计者考虑需到跨平台的可移植性,不仅仅是限于 x86 架构。为了保持操作系统的可移植性,不依赖于特定处理器架构上的特权级别数量,而是统一使用两个特权级别,使得操作系统更易于在不同的处理器架构上移植和运行。 -3. **历史遗留问题:** x86架构的设计早于现代操作系统的实现,许多x86的系统编程特性在设计时并不清楚操作系统将如何使用。随着现代操作系统对x86架构的深入了解和不断发展,许多早期设计的特性被现代操作系统所忽略,包括段机制和任务状态段等。对于x64架构,一些被废弃的特性被省略,使得操作系统可以更加简洁地设计和实现。 +3. **历史遗留问题:** x86 架构的设计早于现代操作系统的实现,许多 x86 的系统编程特性在设计时并不清楚操作系统将如何使用。随着现代操作系统对 x86 架构的深入了解和不断发展,许多早期设计的特性被现代操作系统所忽略,包括段机制和任务状态段等。对于 x64 架构,一些被废弃的特性被省略,使得操作系统可以更加简洁地设计和实现。 ## 参考资料 - -1. [CSAPP](http://www.csapp.cs.cmu.edu/3e/home.html) +1. [Computer Systems: A Programmer's Perspective](http://www.csapp.cs.cmu.edu/3e/home.html) 2. [Why do x86 CPUs only use 2 out of 4 rings?](https://superuser.com/questions/1063420/why-do-x86-cpus-only-use-2-out-of-4-rings)