自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (3)
  • 收藏
  • 关注

转载 状态控制标志位

二、状态控制标志位状态控制标志位是用来控制CPU操作的,它们要通过专门的指令才能使之发生改变。1、追踪标志TF(Trap Flag)                         当追踪标志TF被置为1时,CPU进入单步执行方式,即每执行一条指令,产生一个单步中断请求。这种方式主要用于程序的调试。                         指令系统中没有专门的指令来改变标志

2016-08-27 23:08:27 7828

转载 TR and tss

任务寄存器tr保存 16 位的段选择子、32 位基地址、16 位段界限和当前任务的 TSS属性。它引用 GDT 中的 TSS 描述符。基地址指明 TSS 的第一个字节(字节 0)的线性地址,段界限确定 TSS 的字节个数。TR寄存器包含了当前正在CPU运行的进程的TSSD(任务段描述符)选择符。也包含了两个隐藏的非编程域:TSSD的base 和limit域。通过这种方式处理器就能直接对TSS寻址,

2016-08-27 23:05:57 754

转载 DPL,RPL,CPL 之间的联系和区别

CPL是当前进程的权限级别(Current Privilege Level),是当前正在执行的代码所在的段的特权级,存在于cs寄存器的低两位。RPL说明的是进程对段访问的请求权限(Request Privilege Level),是对于段选择子而言的,每个段选择子有自己的RPL,它说明的是进程对段访问的请求权限,有点像函数参数。ARPL指令改目标数据块选择子的RPL为主调程序的

2016-08-27 22:59:48 1627 1

转载 高速缓冲寄存器

实际上,不管是在实模式还是在保护模式下,CPU都会把一个分段的基地址放在一组隐藏的寄存器中,这组隐藏的寄存器,对程序员是不可见的,程序也是无法直接存取的,但却是实际存在的,这组隐藏的寄存器叫做描述符高速缓存寄存器(Descriptor Cache Registers),当段寄存器的值发生变化时,段的基地址、段的边界以及存取属性(存取权限)都会被重新加载到这个段寄存器对应的高速缓存中,为增强性能,C

2016-08-27 22:56:11 2327

转载 Linux下系统调用的实现

Linux下系统调用的实现Unix/Linux操作系统的体系结构及系统调用介绍什么是操作系统和系统调用    操作系统是从硬件抽象出来的虚拟机,在该虚拟机上用户可以运行应用程序。它负责直接与硬件交互,向用户程序提供公共服务,并使它们同硬件特性隔离。因为程序不应该依赖于下层的硬件,只有这样应用程序才能很方便的在各种不同的Unix系统之间移动。系统调用是Unix/Linux

2016-08-27 22:46:17 4029

转载 保护模式概述

保护模式概述以下内容并不成熟,希望抛砖引玉,大家讨论一下吧:)    称其为概述是因为我希望能给出一个关于保护模式的概貌性的描述,而不是深入每个细节,因为篇幅不允许也没有必要,细节还是应该看相关的文档.第一:实模式下程序的运行回顾.    程序运行的实质是什么?其实很简单,就是指令的执行,显然CPU是指令得以执行的硬件保障,那么CPU如何知道指令在什么地方呢?对了,

2016-08-27 22:43:00 492

转载 GCC内嵌汇编语法

gcc内嵌汇编简介收藏在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器,以及如何将计算结果写回C 变量,你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可, GCC会自动插入代码完成必要的操作。 1、简单的内嵌汇编  例:  __asm__ __volatile__("hlt"); "__asm__"表示后

2016-08-27 22:40:30 1516

转载 内存管理相关之分段分页机制

1. 分段,分页机制  不分页:   线性地址   ==   物理地址 分页:   线性地址   !=   物理地址 线性地址空间也就是所有可能线性地址的范围. 操作系统会在启动的时候测量到实际的内存有多少,   什么范围.   如果支持分页, 线性地址是多少无所谓,   只要最后映射到的物理地址在16M范围内就可以--------虚拟地址是操作系统提供的一种地

2016-08-27 22:36:42 1504

转载 进程上下文和中断上下文的区别

进程上下文和中断上下文的区别  内核空间和用户空间是现代操作系统的两种工作模式,内核模块运行在内核空间,而用户态应用程序运行在用户空间。它们代表不同的级别,而对系统资源具有不同的访问权限。内核模块运行在最高级别(内核态),这个级下所有的操作都受系统信任,而应用程序运行在较低级别(用户态)。在这个级别,处理器控制着对硬件的直接访问以及对内存的非授权访问。内核态和用户态有自己的内存映射,即自己的地

2016-08-27 22:29:39 1009

转载 内核管理之CPU基本组件

要想弄懂Linux内核的工作原理,就必须懂点基本的硬件知识。这里我们主要介绍Intel 80x86系列CPU保护模式下最核心的部件中几个寄存器的作用,这些寄存器在Linux内核运行时起着至关重要的作用。至于其他那些各式各样的硬件设备,我们在讲解设备驱动时会针对具体的驱动程序来介绍的。首先,大家先看看CPU的主要架构: EU(通用寄存器、运算器和控制器)执行部件:完成指令所要求的功能。S

2016-08-27 22:25:52 2109

转载 段选择符 段寄存器

保护模式就是对程序的运行加以保护,所以说保护模式较实模式的增强的最主要体现还不是寻址能力而是对多任务的支持,所提到的保护就是对不同任务间和同一任务内的程序加以保护,使它们的运行不受对方“有意”或“无意”影响,但同时也要对两个任务都要用到的部分代码实现共享。另外一个重要的增强就是对虚拟存储器的支持,从一定意义上说可以使程序设计人员不必考虑物理内存的大小。  有了新的模式,当然要有大量的新增寄

2016-08-27 15:57:48 14409 3

转载 中断之中断向量表IDT的初始化

中断的初始化是在哪里完成的呢?是在start_kernel()中:512 trap_init();535 /* init some links before init_ISA_irqs() */536 early_irq_init(); 537 init_IRQ(); //最终调用native_init_IRQ,由它来完成主要工作。中断向量表的初始化分为

2016-08-25 21:54:48 3731

原创 te

2016-08-25 21:08:11 410

转载 用户态向内核态切换

转自:http://blog.csdn.net/sdustliyang/article/details/6458502那么,程序什么时候使用用户栈,什么时候使用内核栈呢?对,系统调用。也就是执行printf、open、read、write执行C语言库函数时,其最终会用到对应的系统调用,如sys_open、sys_read等。这时候就切换到内核栈。1 Linux的堆栈切换我们针对

2016-08-25 20:56:04 1958

转载 欢迎使用CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2016-08-25 20:51:35 257

转载 写给那些让我糊里糊涂的HTTP、TCP、UDP、Socket

先来一个讲TCP、UDP和HTTP关系的,注意红色mark的部分 1、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。在传输层中有TCP协议与UDP协议。在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。因此,HTTP本身就是一个协议,是从Web服务器传输超文

2016-08-25 20:19:33 313

转载 TCP网络关闭的状态变换时序图

TCP共有11个网路状态,其中涉及到关闭的状态有5个。在我们编写网络相关程序的时候,这5个状态经常出现。因为这5个状态相互关联,相互纠缠,而且状态变化触发都是由应用触发,但是又涉及操作系统和网络,所以正确的理解TCP 在关闭时网络状态变化情况,为我们诊断网络中各种问题,快速定位故障有着非常重要的作用和意义。下是是根据W.Richard Stevens的《TCP/IP详解》一书的TCP状态转

2016-08-25 19:51:37 514

转载 同步函数与异步函数

文章出处:http://blog.163.com/lyzaily@126/blog/static/42438837200952751954922/ 1. 同步函数与异步函数        什么是同步函数?        什么是异步函数?        它们在线程中执行时会对线程有何影响?        一个线程如何与一个异步执行的函数进行同步?依据微软的MSDN上的解说

2016-08-25 19:36:07 554

原创 asm (1) helloworld

section .datahello: db 'hello','world'len: equ $-hellosection .textglobal:  _start _start:mov eax , 4   ; system call   writemov ebx , 1    ;stdout =1 mov ecx  , hello   ;sourc

2016-08-19 20:38:49 364

转载 int $0x80系统调用的idea

source from  http://blog.csdn.net/xuyuqingfeng953/article/details/50999170一般现代CPU都有几种不同的指令执行级别,Linux总共划分为4个指令执行级别:内核运行在0级别上,1,2级别默认不运行,用户程序运行在3级别上。          在内核指令执行级别上,代码可以执行特权指令,访问任意的物理地址。

2016-08-17 22:51:52 1804

转载 OS basic (1)

根据运行程序对资源和机器指令的使用权限将处理器设置为不同状态多数系统将处理器工作状态划分为管态和目态管态:操作系统管理程序运行的状态,较高的特权级别,又称为特权态(特态)、系统态目态:用户程序运行时的状态,较低的特权级别,又称为普通态(普态)、用户态有些系统将处理器状态划分核心状态,管理状态和用户程序状态(目标状态)三种 处理器处于管态时:        1.全部指令(

2016-08-17 22:46:53 503

转载 系统调用(int 0x80)

系统调用是一个软中断,中断号是0x80,它是上层应用程序与Linux系统内核进行交互通信的唯一接口。通过int 0x80,就可使用内核资源。不过,通常应用程序都是使用具有标准接口定义的C函数库间接的使用内核的系统调用,即应用程序调用C函数库中的函数,C函数库中再通过int 0x80进行系统调用。所以,系统调用过程是这样的:    应用程序调用libc中的函数->libc中的函数引用系统

2016-08-17 22:40:23 2955

原创 nasm assembly learning note

1:  _start   labeluse _start label to tell linker  where is start    if no use _start linker will output a warning message  ld :warning :cannot find entry symbol _start :defaulting to 0000

2016-08-17 20:13:51 288

原创 C#对象结构

.ctor:类的构造函数,在类被实例化时,它会被自动调用。  class test    {            }类test中没有显示的构造函数,现在用ILDasm.exe打开编译后生成的exe文件,会看到:可以看到这里有个.ctor,我们没有定义构造函数,但这里却出现了.ctor,这就说明了:当没有显示定义构造函数时,会自动生成一个构造函数,它没有

2016-08-06 16:34:28 485

原创 nasm

1:  一个具有多个字符的字符常数会被 little-endian order,如果你编写:mov eax,'abcd'  产生的常数不会是`0x61626364',  而    是`0x64636261',所以你把常数存入内存的话,它会读成'abcd'而不是'dcba'。NASM 在表达式中支持两个特殊的记号,即'$'和'$$',它们允许引用当前指令的地址。'$'计算得到它本身所在源代码

2016-08-04 20:51:47 315

原创 linux nasm helloworld

1:setup Nasm in linux1:下载源码包 nasm-x.xx.tar.gz2: tar -zxf nasm-x.xx.tar.gz3:cd nasm directory 4:./configure5:make install6: nasm --vesion 2:;  hello.asm  a first program for

2016-08-03 22:41:01 636

原创 linux commen cmd

1: delete file/fileslinux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可。直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字-r 就是向下递归,不管有多少级目录,一并删除-f 就是直接强行删除,不作任何提示的意思

2016-08-03 20:11:51 226

原创 linux setup flashplayer

1: DownLoad    install_flash_player_11_linux.x86_64.tar.gz2: tar -zx -f install_flash_player_11_linux_x86_64.tar.gz3:find-name plugins4: sudo cp libflashplayer.so  browser/plugins

2016-08-01 22:03:50 262

最小操作系统制作过程

这是一个不错的资源 帮助那些想学习 并且想自己写操作系统的人员

2014-10-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除