社区
进程/线程/DLL
帖子详情
了解内核的高手进!
niefuhua
2005-10-24 08:48:48
小弟最近在看Windows核心编程,对于第三章的内核非常不解。疑问如下:
(1)内核拥有哪些特权?为什么它有那些特权?
(2)我们平常所谓的内核都在一个进程中吗?内核进程是不是也拥有4G的虚拟地址空间,或者说内核根本就不使用虚拟地址空间?
(3)内核代码可以随意访问一般程序的虚拟地址空间中的内容吗?
(4)API术语一般代码还是内核代码?如果是一般代码,它又是怎么进入内核代码的?
(5)我们的程序怎样才能拥有和内核同样高的权限?
欢迎大家发表评论,共同探讨!谢谢
...全文
492
22
打赏
收藏
了解内核的高手进!
小弟最近在看Windows核心编程,对于第三章的内核非常不解。疑问如下: (1)内核拥有哪些特权?为什么它有那些特权? (2)我们平常所谓的内核都在一个进程中吗?内核进程是不是也拥有4G的虚拟地址空间,或者说内核根本就不使用虚拟地址空间? (3)内核代码可以随意访问一般程序的虚拟地址空间中的内容吗? (4)API术语一般代码还是内核代码?如果是一般代码,它又是怎么进入内核代码的? (5)我们的程序怎样才能拥有和内核同样高的权限? 欢迎大家发表评论,共同探讨!谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
niefuhua
2005-10-25
打赏
举报
回复
强!虚心学习。
漂白猪
2005-10-25
打赏
举报
回复
MARK
hwj692502
2005-10-25
打赏
举报
回复
学习
niefuhua
2005-10-24
打赏
举报
回复
joncooper(小强) :
按你的说法,每个应用程序的2G-4G里面的内容都是一样的了,是不是?
所有的应用程序都通过内存映射文件机制共享2G-4G空间的内容。?
大家说的系统究竟指的时是哪几个进程,我们可以通过资源管理器看见吗?
我问一个比较弱智的问题,大家别见笑,我见有ring0,ring3,那么有没有ring1,ring2之类的?
joncooper
2005-10-24
打赏
举报
回复
(1)内核所拥有的特权就是ring0级的特权。他是由系统维护并创建,所以会有比较高的权限。
(2)内核并不是在一个进程中,或者说你这种说法是完全错误的。每一个进程都有4G的虚拟空间可以使用。但是高2G或高1G的地址空间是你所不能使用的(我是说编一个ap程序)。这里边就存放系统创建的所有的内核对象。
(3)答案是可以,但要是特定进程上下文中。也就说,当前的低2G中是某一个进程的空间。
(4)api 就好像一个窗户,你把要求递进去,他把结果传出来。你在ring3级,窗户里边就是ring0级。一般进入ring0级是通过中断来完成的。
(5)我们的程序在正常情况下永远也不会有ring0级别。
niefuhua
2005-10-24
打赏
举报
回复
是不是说我们只有通过内核才能访问硬件?有没有可能我们不通过操作系统内核就能直接访问硬件的方法?
teli_eurydice
2005-10-24
打赏
举报
回复
不了解,学习。。。。。。。。。。。。。。。
oyljerry
2005-10-24
打赏
举报
回复
API,表面上是这个函数,实际最终实现都是NTXXX,通过内核函数来实现的,因而可以访问到内核
当然,也可以从ring3跳到ring0
oyljerry
2005-10-24
打赏
举报
回复
内核有操作系统维护,运行在ring0,具有最高的权限
rageliu
2005-10-24
打赏
举报
回复
学习来的...
DrSmart
2005-10-24
打赏
举报
回复
Intel CPU 分四个权限等级 ,windows仅用ring0 和ring 3.前者的权限最大,解决软件权限的最好方法就是写驱动,当然如果不是windows xp sp2和windows 2003 sp1的话,最简单的就是(不用驱动)\Device\PhysicalMemory漏洞进入ring0,不过有了新的sp补订包,当然也可以用修改windows的加载器 NTLDR的IDT GDT之类的东东,你可以分析win2000源代码,更改gidt特权就可以了,其实也有内核级的api,均以KeXXX、PsXXX、ZwXXX、NtXXX,的native api,普通api的调用都要通过调用这些native api来完成功能,大多是未公开的,你可以看看泄露的win2000源代码研究,这些api要动态加载。呵呵,这是windows 的内核文件ntoskrnl.exe和hal.dll,里面东西很好,对应源代码的private文件夹下的东东
qrlvls
2005-10-24
打赏
举报
回复
以下答案不一定完全正确,仅供参考:
(1)内核可以修改一些特殊的寄存器,可以调用部分只有在内核模式下能够调用的CPU指令,之所以拥有这样的特权是因为现在的CPU在设计时也要结合操作系统的安全性进行考虑,因此能够通过一些特殊的方法切换模式,至少我了解到ARM是这样的
(2)实际上一个进程的执行在不同的时候可以分别处于内核态和用户态,但Windows是将核心的操作较集中地在一些特殊的进程中处理,但普通的进程也是可以通过特定的方法切换到内核态的,对于内核来说更多的是区分分页内存或非分页内存,应该和虚拟地址空间不完全是同一概念
(3)虚拟地址空间实际上是通过硬件结合软件的一个映射过程来完成的,只要它愿意,它是可以根据设计原则来访问任意的存储空间
(4)API 是指 Application Programming Interface,你也可以将 DDK 中在内核态中使用的函数称为 API,如 ZwXXX, NtXXX, 你可以将他们理解为内核态的,如果要仔细理解系统内核态与用户态的层次问题,不妨看看Windows NT 的 WDM 驱动程序模型,或许会有些帮助
(5)在 Windows NT 系统中建议按照系统的 WDM 之类的规范通过驱动程序等方法来获取更高的权限
wshcdr
2005-10-24
打赏
举报
回复
学习
Featured
2005-10-24
打赏
举报
回复
1 内核是操作系统中的,操作系统想让它拥有最高的权限,它就有了
(让它运行在ring0)
4 API也是ring3的,但API一般通过调用运行在ring0的驱动完成
当用户模式程序需要读取设备数据时,它就调用Win32 API函数,如ReadFile:Win32子系统模块(如KERNEL32.DLL)通过调用平台相关的系统服务接口实现该API,而平台相关的系统服务将调用内核模式支持例程。在ReadFile调用中,调用首先到达系统DLL(NTDLL.DLL)中的一个入口点,NtReadFile函数。然后这个用户模式的NtReadFile函数接着调用系统服务接口,最后由系统服务接口调用内核模式中的服务例程,该例程同样名为NtReadFile。
5网上很多从ring3跳得ring0的
fisker0303
2005-10-24
打赏
举报
回复
我理解的内核就是一些由操作系统维护的数据结构。
wzh0591
2005-10-24
打赏
举报
回复
就是关注,打个标记,日后自己好找。请查阅CSDN的使用帮助。
zmb99
2005-10-24
打赏
举报
回复
mark是什么意思?
loucai
2005-10-24
打赏
举报
回复
mark
oyljerry
2005-10-24
打赏
举报
回复
系统需要这个地址空间,供内核代码、设备驱动程序代码、设备I / O高速缓存、非页面内存池的分配和进程页面表等使用。实际上M i c r o s o f t将内核压缩到这个2 G B空间之中
oyljerry
2005-10-24
打赏
举报
回复
应用程序分配的4G虚拟内存中,有2G是被系统占用了的,其他的2G才给应用程序自己使用,当然这个大小可以通过一些方法来调整的
加载更多回复(2)
菜鸟变大神!如何成为Linux
内核
高手
?
近些年来,使用安卓操作系统的智能手机热销,未来也将是物联网、大数据、云计算的大时代,而运行在这些相关产品最深处的几乎都是Linux
内核
。...回顾学习Linux
内核
的那段经历,我愈发体会到Linux
内核
的功夫...
成为Linux
内核
高手
的四个方法
本文由 伯乐在线 - ...我曾经问别人如何开始
内核
编程的学习,他们基本上都说:①如果你不需要
了解
内核
是如何为你工作的,你为何要尝试呢?②你应该订阅Linux
内核
邮件列表,然后努力去理解。③如果你不去编写针对Lin
你想做一个Linux
内核
高手
吗?
Linux
内核
是使用最广泛的开源
内核
,在服务器和智能手机领域处于统治地位,物联网、大数据、云计算和人工智能等热点技术也离不开Linux
内核
。对于商业公司而言,采用开源的Linux
内核
可以享受很多好处,比如节约成本,...
Linux
内核
编译的选项 m,编译
内核
选项!~~
在正式介绍之前先作几点声明:1)由于linux
内核
实在是太庞大了,涉及的内容包罗万象,我自己的水平也很有限,所以我不可能将
内核
配置的方方面面都写出来,本文中我只是将我认为最重要的一些部分作一个介绍。...
linux
内核
动态库,Linux
内核
模块LKM的动态加载技术分析
Android-linux开发讨论请加QQ群109866329linux开发讨论请加QQ群109866329群里的管理员都是
高手
中的
高手
哦!【摘要】本文详解了Linux
内核
模块的动态加载技术。首先介绍了Linux
内核
采用LKM的好处,接着介绍了
内核
模块...
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章