操作系统学习笔记(一) 段权限转移规则
截图及内容参考
《Linux内核源代码情景分析》
《自己动手写操作系统》
nasm boot.asm -o boot.bin
dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
保护模式下各个段权限转移规则
段分为数据段和代码段
代码段分为一致代码段和非一致代码段
权限分为 0 1 2 3 4
0为核心层 权限最高
3位应用层 权限最低
一致代码段 只能被别自己权限低或者权限一样的特权级访问
例如 级别为2的一致代码段 只能被 2 3 权限访问
转移到一致代码段时候 当前权限级别不变
非一致代码段只能被同样级别权限的特权级访问
用于保护内核不被低特权级别访问
数据段(总是非一致) 可以被高权限和权限一样的特权级访问
描述符权限访问规则
权限级别分为0 1 2 3 四种
其中0级别最高为内核层权限
3级别最低为用户层权限
而描述符描述其端后分别描述其权限 DPL
描述符描述的段有两种 数据段 代码段
代码段又分为一致代码段 非一致代码段
规则如下:
当我们向一个描述权限较高的一致代码段跳转的时候,当前权限会延续。例如 当前描述权限3 向描述权限为0的一致代码段跳转
当我们向一个描述权限较高的非一致代码段跳转的时候,会引起常规保护错误(#GP) 例如 当前描述权限3 向描述权限为0的非一致代码段跳转 引起常规保护错误(#GP)
非一致代码段用来保护系统代码不被低权限干扰
数据段总是非一致的
规则总结如图:
摘录自 《自己动手写操作系统》
在实际操作系统中
一般分为内核数据段 内核代码段 用户数据段 用户代码段
权限分为为0 与3
所以段内存管理已经简化到最基本的设置
《linux内核代码情景分析》中描述如下:
四个段全部是基地址为0 上限为0xffffff;
对于Linux与Windows来说,段式内存管理是不得不进行的例行公事,而真正的重头戏在页式映射内存管理机制。
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话