- 博客(24)
- 资源 (8)
- 收藏
- 关注
转载 Linux_AMD体系结构学习(内存模型)
系统编程概述: 为系统软件开发程序员编写操作系统,加载器(loaders),连接程序(linkers),设备驱动,或者需要访问系统资源的实用程序。这些系统资源通常只有在软件运行在最高特权级(CPL=0)时才可获取。特权级和他们的交互性在第93页的"Segment-Protection Overview(段保护机制概述)"有详细的描述。 这一章节主要介绍对系统软件开发者有帮助
2013-03-31 18:34:36 1045
转载 Linux_描述符表和描述符高速缓存
(摘自http://hengch.blog.163.com/blog/static/107800672009028105929795/)推荐对DOS感兴趣的看一下他的博客在80x86的CPU里,描述符的概念实在是太重要了。 在实模式下,大家都知道物理地址是由段地址和偏移地址两部分组成,其公式如下: 物理地址 = 段地址 × 16 + 偏移地址 或者:物理地址
2013-03-31 18:23:46 853 1
转载 Linux_关于A20 Gate
本来想直接写一篇关于保护模式的文章,因为有一位读者不断地问我这个问题,随着问题的深入,在评论上回答这个问题实在是太困难了,动起笔来,发现涉及的事情太多,免不了又是长篇大论惹人烦,而且要写很长时间,不知道我能不能把它写完,所以干脆把一些问题分离出来写,或许还可以坚持写出来。 在许多PC的CMOS设置里,都有一项叫做“A20 Enable“的设置,不知道大家是否就此设置困惑过,这个A20是什
2013-03-31 15:29:59 929
转载 Linux_分页管理机制(线性地址转换到物理地址)
80386开始支持存储器分页管理机制。分页机制是存储器管理机制的第3二部分。段管理机制实现虚拟地址(由段和偏移构成的逻辑地址)到线性地址的转换,分页管理机制实现线性地址到物理地址的转换。如果不启用分页管理机制,那么线性地址就是物理地址。本文将介绍80386的存储器分页管理机制和线性地址如何转换为物理地址。存储器分页管理机制 在保护模式下,控制寄存器CR0中的最高位PG位控制分页管理机
2013-03-30 21:38:47 1713
转载 Linux_保护模式下寻址
保护模式下寻址(易懂):网上看到的一强帖,不转不行了,牛人啊,把这段代码拿捏的相当到位 括号中是我的加注段机制轻松体验[内存寻址]实模式下的内存寻址:让我们首先来回顾实模式下的寻址方式段首地址×16+偏移量 = 物理地址为什么要×16?因为在8086CPU中,地址线是20位,但寄存器是16位的,最高寻址64KB,它无法寻址到1M内存。于是,Intel
2013-03-30 21:22:35 885
转载 Linux_我理解的逻辑地址、线性地址、物理地址和虚拟地址(补充完整了)
要过年了,发个年终总结贴,只是个人理解,不包正确哈。本贴涉及的硬件平台是X86,如果是其它平台,嘻嘻,不保证能一一对号入座,但是举一反三,我想是完全可行的。一、概念物理地址(physical address)用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在
2013-03-30 21:20:56 637
转载 Linux_80X86寄存器介绍
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址寄存器(ESI和EDI) 和2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间
2013-03-30 14:30:10 1133
转载 Linux_CPU寄存器简介
寄存器寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。寄存器是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数
2013-03-30 14:24:15 6757
原创 Linux_平坦内存模式
第一章平坦内存模式 WINDOWS系统下的32位程序在内存中的布局被称为平坦内存模式,这种模式虽然只有一个段,却同时包了含代码和数据。但是,这种模式只能运行在386或更高的处理器上。 早期的16位程序,由不同的段组合而成,且每个段的地址重定位有64K的限制。而平坦内存模式下,程序无需进行地址重定位,内存访问范围达到4G宽度。其优点是,汇编程序更容易编写,且代码执行速度更快。
2013-03-29 19:21:25 1686
原创 深入理解Java虚拟机_1_JVM的由来
一、为什么要使用JVM 所有的程序运行所需要的底层机器指令都只是有限的若干条,从大型的UNIX机器到桌面个人计算机,都是基于那些设计精良而优美的指令集。但是这些指令集之间互不相容,这就使得程序的移植变得非常困难,所需时间甚至超过了重新编写一遍的时间。于是虚拟机的概念出现了。 Java虚拟机(JVM)在多个平台上实现统一语言,.NET的虚拟机(目前)在单一平台上实现多种
2013-03-28 14:12:15 749
原创 Linux_基本使用方法
1. 图形用户界面和命令行界面的切换图形界面==>命令行界面 可以按Ctrl+Shift+Alt+F2命令行界面==>图形界面 Alt+F7,在命令行界面中按Alt+F3是切换另一个文本界面如果想开机默认进入命令行界面的话可以修改配置文件。具体命令如下(在命令界面下,当然,必须要root或者具有root权限的用户名下才可以修改):(1)vi /etc/i
2013-03-27 14:31:24 649
转载 Linux_Linux的分段和分页机制
1.分段机制 80386的两种工作模式 80386的工作模式包括实地址模式和虚地址模式(保护模式)。Linux主要工作在保护模式下。 分段机制 在保护模式下,80386虚地址空间可达16K个段,每段大小可变,最大达4GB。 从逻辑地址到线性地址的转换由80386分段机制管理。段寄存器CS、DS、ES、SS、FS或GS标识一个段。这些段寄存器作为段选择器,用来选择
2013-03-25 21:54:16 745
转载 Linux_虚拟地址、线性地址和物理地址的转换
一、 虚拟地址即逻辑地址,是指由程序产生的与段相关的偏移地址部分。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换);逻辑也就是在Intel保护模式下程序执行代
2013-03-25 21:38:53 4766
转载 Linux_MMU
MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权。编辑本段历史许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然
2013-03-25 21:20:37 3976 1
转载 Linux_代码段和数据段的定义以及思考
在百度里面看到这样一个问题和答案,记录一下。汇编中把数据段和代码段定义在同一段内有好处么? 悬赏分:10 -解决时间:2009-11-12 14:58在汇编语言,把代码段和数据段放在同一段内,在伪指令定义变量时位置有何要求么? 放在Start:后还是Start前有没不同?定义宏定义或子程序放在Start:(程序开始的标号)前后有影响?好处是能让编译出来的
2013-03-25 21:12:03 1528
转载 Linux_数据段、代码段、堆栈段、BSS段的区别
5个数据段 进程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途 不一而不尽相同,有些内存是事先静态分配和统一回收的,而有些却是按需要动态分配和回收的。对任何一个普通进程来讲,它都会涉及到5种不同的数据段。Linux进程的五个段下面我们来简单归纳一下进程对应的内存空间中所包含的5种
2013-03-25 21:08:55 4184
转载 Linux_微内核和单内核
Linux大部分都是单内核的 操作系统内核可能是微内核,也可能是单内核(后者有时称之为宏内核Macrokernel)。按照类似封装的形式,这些术语定义如下: 微内核(Microkernelkernel)――在微内核中,大部分内核都作为单独的进程在特权状态下运行,他们通过消息传递进行通讯。在典型情况下,每个概念模块都有一个进程。因此,假如在设计中有一个系统调用模块,那么就必
2013-03-25 21:00:07 1090
转载 Linux_内存分配中的堆和栈
1、什么是堆栈?2、一道微软的笔试题。3、自己写的两个关于堆栈的例子?4、如何动态申请二维数组?一、什么是堆栈?1、内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放 , 若程序员
2013-03-25 20:56:31 1155
转载 Linux_C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。 堆,就是那些由 new 分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个 new 就要对应一个 delete。如果程序员没有释
2013-03-25 20:48:01 3183
转载 Linux_Java中堆内存与栈内存分配浅析
Java把内存划分成两种:一种是栈内存,另一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java 会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。 堆内存用来存放由 new 创建的对象和数组,在堆中分配的内存,由 Java 虚拟机的自动垃圾回
2013-03-25 20:43:11 2219
原创 使用jsp+swfupload做上传时报Upload Error: 405错误
1. 使用SWFUpload上传文件最佳介绍2. 异常分析 文件上传已经成功,但前台显示Upload Error: 405错误。 启用debug,错误日志如下:---SWFUpload Instance Info---Version: 2.2.0 2009-03-25Movie Name: SWFUpload_0Settings:
2013-03-24 16:25:20 4373
转载 spring mvc返回json格式疑问@ResponseBody
The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers ().经过排查原来是配置文件方式不同引起的:首先引入jackso
2013-03-22 22:35:43 6615 1
原创 Caused by: java.lang.OutOfMemoryError: PermGen space
异常: 项目中遇到了系统停止响应的问题,查看日志发现Tomcat报告Caused by: java.lang.OutOfMemoryError: PermGen space异常,开始以为是程序内存泄漏导致的内存溢出,网上查了一下,原来是另有原因,不过确实是内存溢出。 原因: PermGen space的全称是Permanent Generation space,是指内存的永久保存区域
2013-03-03 21:21:28 9438 2
原创 org.hibernate.AssertionFailure异常
org.hibernate.AssertionFailure: null id in com.yeahwell.cutecms.model.Article entry (don't flush the Session after an exception occurs) at org.hibernate.event.internal.DefaultFlushEntityEventList
2013-03-03 13:48:47 7767
Strut2+Spring+SQLServer的学生成绩管理系统
2012-07-01
JSP实用组件下载
2012-03-27
java集合框架的使用。集合的运算
2012-01-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人