鱼C论坛

 找回密码
 立即注册
查看: 3385|回复: 9

[技术交流] 我学习操作系统原理手记08

[复制链接]
发表于 2012-3-29 16:34:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回寝室了

前天在家里研究下shell的时候,看到别人讲解的时候还是有点犯模糊
本着学习就是要知根知底,1个概念的模糊,会造成其实自己什么都不会的想法
我把PED和PTE又重新整理了下。
由于本人不会操作画图,也没好心人教,只有自己随便折腾工具

保护模式下的存储机制
页式存储


PED和PTE
先介绍下他们的共同点,PDE是页表, PTE是页 都是4KB大小。


PDE   1.jpg

PTE 2.jpg

由于第一次自己做图,如果看不清楚,我稍后上传到自己的相册去。

P存在位, 表示当前条目指向的页或者页表是否存在物理内存中, P = 0表示页不存在内存中, 如果试图访问, 则会造成异常
                 p = 1 就表示在内存中
P/W 指定一个页或者页组 例如,条目指向的是页表和页的权限, R/W = 0表示只读, R/W = 1表示可读和写

U/S 指定一个页或者组页 , 比如, 条目指向的页表的页目录条目的权限 。U/S = 0 表示系统权限, U/S = 1 表示用户级别

PWT 用于控制对单个页或者页表的缓冲策略 。 PWT = 0时候使用的是Write-back缓冲策略 PWT = 1时候使用的是Write-through缓冲策略

PCD 用户控制可不可以被缓冲。 PCD = 0时候页活页表是可以被缓冲的,否则相反

A 指向是否可以被访问, A位在页或者页表被加载进入内存的时候很可能被清0, 处理器也会在访问他的时候然后设置此位。即,处理器不会清理此位,但是软件是很可能的。

D 指示页或者目录是否被写入 属性同A

PS 决定页大小 PS = 0时候, 为4KB, PDE指向页表

PAT 选择条目, 一般设置为0

G 知识全局页 如果此位被设置, 同时CR4中的PGE位被加载, 那么此页的页表或者页目录条目不会在TLB中变得无效。


处理器讲最近常用的页目录和页都会存放在TLB(Transkation Lookaside Buffer )的缓冲区中, 这样就可以加快我们的读取速度,相反只有在找不到的时候才会去更新,在去查找。  这个和小甲鱼老师在WIN32汇编语言程序设计中讲的是一样的

而当cr3被加载的时候, 所有的TLB将会无效 除页或者页目录的G位被重新设置!




//////////////////////////////////////////////////////////////////////////////////////////////////////
继续手记07的内容
//////////////////////////////////////////////////////////////////////////////////////////////////////

在单进程的基础上添加1个进程后,然后在多添加进程就是1个很轻松的事情了。
每一个进程都会在1个全局描述符GDT中有1个局部描述符LDT
在我们自己的原本基础上,多添加1个简单的函数,比如TestB  这样的操作就可以,然后继续扩展。

在处理中断上 是使用的时钟中断其实和Minix中断是一样的(在此我没有Minix的源码,见谅)


回顾从我写的手记1到现在,

流程

控制权交给引导扇区
加载Loader             BOOT SECTOR

跳转到Loader
加载kernel
切换到kernel的GDT

  在开始金如意内核操作的初始化8259A
  初始化IDT
  初始化GDT中的LDT2个描述符,与TSS

  在调用进程,初始化进程表
  指定时钟中断处理程序
  让8259A可以接受我们的中断消息
  restaet()

  从而,实现我们的多进程调用



说的有些仓促,不过对于我来说,我是很能清晰的从读这些书中,明白了怎么从实模式下到保护模式下,不停的利用和调用保护模式的机制,然后从而时间我们的微宏。

最后剩下的,也就是进程调度和算法的实现了,这些并不是我现在能有能力去有感性认识的产物。

对于进程的小结

这节让我感觉压力十分的大,例如很多前辈说到了壳的概念的时候很多都是和这些有很大关系的, 对于调度进程我的感念真的是少之又少,在我看来,就是轻重缓急,然后利用保护模式的一层层麻烦的检测后然后确定你是不是真的很急,是真的很急么?真的好急??那好把,你先,你也急?但是你没他急,所以你等下。然后初始化操作,开始分页设置,然后开始一层层的索引,确认地址, 地址后开始产生全局描述符,设置局部描述符, 然后开始设置地址索引,属性等等,一步步的流程开始操作。
最后 进程是分任务, 服务, 和用户进程三种,在我看来,其实也就是个特权的产物,造成了人与人之间的区分,这是方便计算机,也是方便人们的识别。

如果要我来形容保护模式下的我们的话
                        苦逼青年~

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
小甲鱼 + 5 + 5 赞一个!鼓励探究分享精神!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-3-29 16:36:30 | 显示全部楼层
自己的2楼,苦逼青年唉~~~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-29 16:42:15 | 显示全部楼层
{:1_1:}  支持小天
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-29 17:03:44 | 显示全部楼层
支持天天~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-3-29 17:47:51 | 显示全部楼层

感谢老师的支持啊,什么时候教下我们写个操作系统呢?越学到后面,我发现小甲鱼老师您对操作系统原理了解的十分透彻啊。
在我第一篇手记中有orange's的源码,我相信很多研究破解驱动逆向的朋友,对这板块都是很想了解的啊!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-29 17:54:38 | 显示全部楼层
nichkhun 发表于 2012-3-29 17:47
感谢老师的支持啊,什么时候教下我们写个操作系统呢?越学到后面,我发现小甲鱼老师您对操作系统原理了解 ...

谢谢朋友抬举,这方面小甲鱼也是想抽出时间孜孜不倦的学习一番,希望有机会可以一起研讨下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-3-29 18:05:36 | 显示全部楼层
小甲鱼 发表于 2012-3-29 17:54
谢谢朋友抬举,这方面小甲鱼也是想抽出时间孜孜不倦的学习一番,希望有机会可以一起研讨下。

我在初学老师您的WIN32汇编语言程序设计的时候,明显感觉你的系统原理功底,非常厉害啊。
开始学的时候,真的没感觉怎么重要,到了后来越来发现这些所谓不重要的结构体,真的是那么影响重大。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-29 18:08:30 | 显示全部楼层
学习就是要有刨根揪底的精神。。支持楼主。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-30 10:56:53 | 显示全部楼层
感谢老师的支持啊,什么时候教下我们写个操作系统呢?越学到后面,我发现小甲鱼老师您对操作系统原理了解的十分透彻啊。
在我第一篇手记中有orange's的源码,我相信很多研究破解驱动逆向的朋友,对这板块都是很想了解的啊!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-9-18 07:59:46 | 显示全部楼层
我们要发掘历史掩盖的真相,寻找事物的发展原理,把不是我们的东西变成属于我们的,然后再去创造我们想要的。——题记
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-5 05:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表