C# 线程基础——用户模式、内核模式

参照:用户模式和内核模式 - Windows drivers | Microsoft Docs

基础概念

  1. 运行 Windows 的计算机中的处理器有两个不同模式:用户模式 和内核模式 。
  2. 应用程序用户模式下运行;核心操作系统组件内核模式下运行。

大多数驱动程序在内核模式运行,但少数也能以用户模式运行。

用户模式

  • 启动一个用户模式应用程序时,Windows 会为该应用程序创建进程
  • 进程为应用程序提供专用的虚拟地址空间和专用的句柄表 (提供运行环境)。
  • 虚拟地址空间为专用空间,每个程序彼此独立隔离运行。因此应用程序发生故障时不会对其他程序及操作系统有影响

用户模式限制:

用户模式下的处理器无法访问操作系统保留的虚拟地址。(防止应用程序运行更改甚至损坏操作系统数据)

内核模式

内核模式运行下的代码都共享单个虚拟地址空间。即所有操作系统及大多数驱动程序代码运行时都共享一片内存。他们任一发生故障,都可能引起整个操作系统发生故障。

用户模式和内核模式的通信

C# 线程基础——用户模式、内核模式的更多相关文章

  1. Windows系统的四个重要概念——进程、线程、虚拟内存、内核模式和用户模式

    引言 本来在写一篇Windows内存管理的文章,写着写着就发现好多基础的概念都要先讲.更可怕的是,这些基础的概念我却不能完全讲清楚.只好再把这本<深入解析Windows操作系统>翻到第一章 ...

  2. UNICODE_STRING(用户模式 内核模式)

    UNICODE_STRING结构: typedef struct  _UNICODE_STRING { USHORT Length;                                   ...

  3. Windows 用户和内核模式

    上图: APP -> user mode OS-> kernel mode Drivers -> user or kernel mode 正所谓 一阴一阳之谓道,继之者善也,成之者性 ...

  4. 线程同步——用户模式下线程同步——Interlocked实现线程同步

    线程同步分为用户模式下的线程同步和内核对象的线程同步. 当然用户模式下的线程同步实现速度比内核模式下快,但是功能也有局 //1.利用原子访问: Interlocked系列函数,关于Interlocke ...

  5. {Python之线程} 一 背景知识 二 线程与进程的关系 三 线程的特点 四 线程的实际应用场景 五 内存中的线程 六 用户级线程和内核级线程(了解) 七 python与线程 八 Threading模块 九 锁 十 信号量 十一 事件Event 十二 条件Condition(了解) 十三 定时器

    Python之线程 线程 本节目录 一 背景知识 二 线程与进程的关系 三 线程的特点 四 线程的实际应用场景 五 内存中的线程 六 用户级线程和内核级线程(了解) 七 python与线程 八 Thr ...

  6. [.net 多线程]线程基础

    一.线程状态 1.新建状态(New):         当用new操作符创建一个线程时, 例如new Thread(r),线程还没有开始运行,此时线程处在新建状态. 当一个线程处于新生状态时,程序还没 ...

  7. [.net]线程基础

    关于线程的诞生 早期的16位Windows只有一个执行线程,在执行各种程序时,如果这个线程运行出现了问题,就会“冻结”整个系统,使得系统处于未响应状态.这是一件多么尴尬的事儿,无论是用户还是微软自己, ...

  8. 理解Windows内核模式与用户模式

     1.基础 执行 Windows 的计算机中的处理器有两个不同模式:"用户模式"和"内核模式". 依据处理器上执行的代码的类型,处理器在两个模式之间切换.应 ...

  9. C#异步编程(三)内核模式线程同步

    其实,在开发过程中,无论是用户模式的同步构造还是内核模式,都应该尽量避免.因为线程同步都会造成阻塞,这就影响了我们的并发量,也影响整个应用的效率.不过有些情况,我们不得不进行线程同步. 内核模式 wi ...

  10. 内核模式下的线程同步的分析(Windows核心编程)

    内核模式下的线程同步 内核模式下的线程同步是用户模式下的线程同步的扩展,因为用户模式下的线程同步有一定的局限性.但用户模式下线程同步的好处是速度快,不需要切换到内核模式(需要额外的 CPU 时间).通 ...

随机推荐

  1. IDEA 接入 DeepSeek,太酷了!

    你好,我是 Guide.前两天,我发文提到 DeepSeek 的回答推荐了我的资料 <JavaGuide 面试突击版>(PDF):DeepSeek 的这波回答我给满分!. 这篇文章简单介绍 ...

  2. css快速入门系列 —— 移动开发闲谈

    移动开发闲谈(Flex和css 库) 背景 目前在做移动小程序开发,效果必须和设计稿一模一样,一个像素都不能有差异. 虽然公司也提供了图生文的工具,但是有时生成的代码可读性不太好,二次修改也比较费劲, ...

  3. [WC2014] 紫荆花之恋 题解

    啊啊啊啊啊啊啊啊啊啊啊我终于改完啦啊啊啊啊啊啊啊. 因为没有在最开始的时候将所有点设置为已经重构的,所以直接 \(R15-R70\) 间卡了两三天. 似乎也是我第一次大规模使用指针了. 这道题假如只有 ...

  4. [NOI2014] 购票 题解

    首先发现 \(p_x\times dis(x,y)+q_x\) 异常像是能斜率优化的样子,那先把求 \(f_x\) 的式子写出来(下设 \(d_x\) 表示 \(x\) 到根的距离): \[f_x=\ ...

  5. MySQL数据库datetime类型不能为空值的问题

    修改mysql的配置文件:my.ini 将其只的: sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUT ...

  6. sql sever查询库中每个表是否存在某个列名 列出表名

    select t.TABLE_NAME from information_schema.columns t where t.COLUMN_NAME='列名';

  7. @SpringBootApplication自动配置原理

    @EnableAutoConfiguration 是核心,他会调用一个@Import注解.我们已知Import自动配置得实现是通过创建ImportSelector 接口的实现类并重写里面selectI ...

  8. go declared and not used

    Go语言在代码规范中定义未使用的变量会报"declared and not used"错误 package main import "fmt" func mai ...

  9. Mavros & Mavlink

    博客地址:https://www.cnblogs.com/zylyehuo/ 参考 https://www.bilibili.com/video/BV1x841167uG?spm_id_from=33 ...

  10. VMware网络虚拟化介绍(之一)

    2014年5月,在我加入VMware三个月之后,我涂鸦了一篇<扒一扒SDN的那些事儿>,当时放言如果阅读量过百就写续篇.后来果然阅读量没过百,也就80多的样子,其中好几份还是我自恋地进去查 ...