操作系统学习笔记与总结(二)

第二天总结

学习内容:寄存器(eflags,IDTR,GDTR,CR0),bootsect应用的相关知识及其流程,gdt

实验:实践boot相关功能,移动位置,加载扇区,建立gdt以及idt,进入实模式,跳转到gas编译的head第一条语句

总结:1,理论bootsect到setup

      a,被加载的bootsect移动到0x9000,借助int 0x13中断将setup加载到自身后面

      b,加载system到0x1000处,避免覆盖bios中断。之后跳到setup执行

   2.加载head代码

1     mov    dx, 0x0000            使drive=0 head=0 track=0 sector=2
2     mov    cx, 0x0002
3     mov    ax, #HEADSEG           es:bx确定目的地址
4     mov    es, ax
5     xor    bx, bx
6     mov    ax, #0X200+HEADLEN       ah读扇区功能号,al为读取的个数
7     int    0x13    

   3.移动加载的代码到0:0

   cli                      将if清零 关中断,将覆盖bios中断描述符表
    mov    ax, #HEADSEG             配置ds:si ->es:di
    mov    ds, ax
    xor    ax, ax
    mov    es, ax
    mov    cx, #0x0200
    sub    si, si
    sub    di, di
    rep
    movw
eflags寄存器
                  vm rf 0 nt iopf of df if tf sf zf 0 af 0 pf 1 cf

   3,加载GDT和IDT的基址寄存器GDTR与IDTR

lidt    idt_48
lgdt    gdt_48

gdt:  .word 0,0,0,0                每一行为段描述符
    .word 0x07ff,0x0000,0x9a00,0x00c0    根据段描述符 基址 0x0000 0000 8mb长 代码段下一个为数据段
    .word 0x07ff,0x0000,0x9200,0x00c0

idt_48: .word 0
     .word 0,0
gdt_48: .word 0x7ff
     .word 0xfc00+gdt,0

段描述符结构
基地址(31-24)    属性
属性 基地址(23-16)   
段基址          15-0
段限长 15-0
idtr以及gdtr寄存器
32位线性基地址      16位表长度
32位线性基地址 16位表长度

    

IDTR以及GDTR分别记录着IDT以及GDT表的首地址。之后可以通过指定第几项来查找段的相关信息。

    4,进入实模式并跳转

   mov    ax,#0x0001
    lmsw    ax                  改变cr0寄存器pe位数值,进入保护模式
    jmpi    0, 8          8=1000 即执行gdt表第二项段描述符所指向的代码,也就是加载的head 同时ip=0
cr0寄存器
PG                                                                                                                 PE(一位)

当PE位置1时,进入保护模式,当PG置位启用分页基址

cs寄存器
 描述符(十三位)                                                    T (一位) RPL(两位 段基址限长属性(为隐藏部分)                                                                 

    8=1000 即 T=1 (在gdt中查找)  RPL=0(特权级为零)描述符为1代表是 gdt[1]之后即执行32位的指令

时间: 2024-12-07 18:32:28

操作系统学习笔记与总结(二)的相关文章

操作系统学习笔记系列(二)-操作系统结构

1.操作系统为程序和用户提供了一定的服务. 1.用户界面 2.程序执行 3.I/O操作 4.文件系统操作 5.通信.在许多情况下一个进程需要与另一个进程交换信息.这种通信有两种方式.一种是发生在同一台计算机运行的两个进程之间,另外一种是运行在由网络连接起来的不同的计算机上的进程之间. 6.错误检测 7.资源分配 8.统计.需要记录哪些用户使用了多少和什么类型的资源 9.保护和安全.保护即确保所有对系统资源的访问是受控的,并且系统安全不受外界侵犯. 2.命令解释程序,比如linux中的shell,

马哥学习笔记三十二——计算机及操作系统原理

缓存方式: 直接映射 N路关联 缓存策略: write through:通写 write back:回写 进程类别: 交互式进程(IO密集型) 批处理进程(CPU密集型) 实时进程(Real-time) CPU: 时间片长,优先级低IO:时间片短,优先级高 Linux优先级:priority 实时优先级: 1-99,数字越小,优先级越低 静态优先级:100-139,数据越小,优先级越高 实时优先级比静态优先级高 nice值:调整静态优先级   -20,19:100,139   0:120 ps

Linux 操作系统学习笔记

一,unix 1.unix 特点 伸缩性强,开放性好, 2.基本原则 所有对象,硬件都是文件 配置数据以文本形式保存 短小的单目的程序构成 多个程序合作完成复杂任务 3.gnu 基本原则是共享,建立自由开放的unix系统 1984年 richard stallman 发起 基本体系是micro kernel 4.gpl Copyleft 原作者所有权 5.linux起源 Linustorvalds, 自由的类unix操作系统, 遵循gnu和gpl 6.linux 可以实现unix功能 遵循开源许

计算机操作系统学习笔记_1_操作系统概述

操作系统概述 一.操作系统的概念.特征.功能和提供的服务 1.操作系统的概念     操作系统是计算机系统中最重要.最基本的系统软件,操作系统位于硬件和用户程序之间.    对于用户来讲:它能向用户提供使用计算机的接口;    从资源管理角度来看:它能管理计算机软硬件资源,提高其利用率;    再者,利用虚拟机技术(如WMWare,VirtualBox,Java虚拟机等),扩展了计算机的功能和使用范围.     因此,操作系统的定义为:操作系统是控制和管理计算机软.硬件资源,以尽可能合理.高效的

RTX51 Tiny实时操作系统学习笔记—初识RTX51 Tiny

 一,RTX51 Tiny简单介绍 RTX51 Tiny是一种实时操作系统(RTOS),能够用它来建立多个任务(函数)同一时候运行的应用(从宏观上看是同一时候运行的,但从微观上看,还是独立运行的).嵌入式应用系统常常有这样的需求.RTOS能够提供调度.维护.同步等功能. 实时操作系统能灵活的调度系统资源,像CPU和存储器,而且提供任务间的通信.RTX51 Tiny是一个功能强大的RTOS,且易于使用,它用于8051系列的微控制器.该RTOS最多支持16个任务,基于RTX51 Tiny构建的应用程

计算机操作系统学习笔记_2_进程管理 --进程与线程(上)

h3.western { font-family: "Liberation Sans",sans-serif; }h3.cjk { font-family: "微软雅黑"; }h3.ctl { font-family: "AR PL UMing CN"; }h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { fon

计算机操作系统学习笔记_4_进程管理 --处理机调度

h3.western { font-family: "Liberation Sans",sans-serif; }h3.cjk { font-family: "微软雅黑"; }h3.ctl { font-family: "AR PL UMing CN"; }h1 { margin-bottom: 0.21cm; }h1.western { font-family: "Liberation Sans",sans-serif; f

SaltStack 学习笔记 - 第十二篇: SaltStack Web 界面

SaltStack 有自身的用python开发的web界面halite,好处是基于python,可以跟salt的api无缝配合,确定就比较明显,需要个性化对web界面进行定制的会比较麻烦,如果喜欢体验该界面的可以参考下面的文章  http://rfyiamcool.blog.51cto.com/1030776/1275443/ 我是运用另一个python+php来进行web开发,具体需要的工具有在我的另一篇文章里面介绍过,这里再重新进行整个开发介绍 首先介绍php 跟python通信的工具 pp

【Unity 3D】学习笔记四十二:粒子特效

粒子特效 粒子特效的原理是将若干粒子无规则的组合在一起,来模拟火焰,爆炸,水滴,雾气等效果.要使用粒子特效首先要创建,在hierarchy视图中点击create--particle system即可 粒子发射器 粒子发射器是用于设定粒子的发射属性,比如说粒子的大小,数量和速度等.在创建完粒子对象后,在右侧inspector视图中便可以看到所有的粒子属性: emit:是否是使用粒子发射器. min size:粒子最小尺寸. max size:粒子最大尺寸. min energy:粒子的最小生命周期

【Unity Shaders】学习笔记——SurfaceShader(二)两个结构体和CG类型

[Unity Shaders]学习笔记——SurfaceShader(二)两个结构体和CG类型 转载请注明出处:http://www.cnblogs.com/-867259206/p/5596698.html 写作本系列文章时使用的是Unity5.3. 写代码之前: 当然啦,如果Unity都没安装的话肯定不会来学Unity Shaders吧? 阅读本系列文章之前你需要有一些编程的概念. 在VS里面,Unity Shaders是没有语法高亮显示和智能提示的,VS党可以参考一下这篇文章使代码高亮显示