03 2013 档案
摘要:系统编程概述: 为系统软件开发程序员编写操作系统,加载器(loaders),连接程序(linkers),设备驱动,或者需要访问系统资源的实用程序。这些系统资源通常只有在软件运行在最高特权级(CPL=0)时才可获取。特权级和他们的交互性在第93页的"Segment-Protection Overvie
阅读全文
摘要:(摘自http://hengch.blog.163.com/blog/static/107800672009028105929795/)推荐对DOS感兴趣的看一下他的博客 在80x86的CPU里,描述符的概念实在是太重要了。 在实模式下,大家都知道物理地址是由段地址和偏移地址两部分组成,其公式如下:
阅读全文
摘要:本来想直接写一篇关于保护模式的文章,因为有一位读者不断地问我这个问题,随着问题的深入,在评论上回答这个问题实在是太困难了,动起笔来,发现涉及的事情太多,免不了又是长篇大论惹人烦,而且要写很长时间,不知道我能不能把它写完,所以干脆把一些问题分离出来写,或许还可以坚持写出来。 在许多PC的CMOS设置里
阅读全文
摘要:80386开始支持存储器分页管理机制。分页机制是存储器管理机制的第3二部分。段管理机制实现虚拟地址(由段和偏移构成的逻辑地址)到线性地址的转换,分页管理机制实现线性地址到物理地址的转换。如果不启用分页管理机制,那么线性地址就是物理地址。本文将介绍80386的存储器分页管理机制和线性地址如何转换为物理
阅读全文
摘要:保护模式下寻址(易懂) : 保护模式下寻址(易懂) 网上看到的一强帖,不转不行了,牛人啊,把这段代码拿捏的相当到位 括号中是我的加注 段机制轻松体验 [内存寻址] 实模式下的内存寻址: 让我们首先来回顾实模式下的寻址方式 段首地址×16+偏移量 = 物理地址 为什么要×16?因为在8086CPU中,
阅读全文
摘要:要过年了,发个年终总结贴,只是个人理解,不包正确哈。 本贴涉及的硬件平台是X86,如果是其它平台,嘻嘻,不保证能一一对号入座,但是举一反三,我想是完全可行的。 一、概念 物理地址(physical address) 用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。 ——这个概念应该是
阅读全文
摘要: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、数据寄存器 数据寄存器主要用来
阅读全文
摘要:寄存器 寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。寄存
阅读全文
摘要:第一章平坦内存模式 WINDOWS系统下的32位程序在内存中的布局被称为平坦内存模式,这种模式虽然只有一个段,却同时包了含代码和数据。但是,这种模式只能运行在386或更高的处理器上。 早期的16位程序,由不同的段组合而成,且每个段的地址重定位有64K的限制。而平坦内存模式下,程序无需进行地址重定位,
阅读全文
摘要:一、为什么要使用JVM 所有的程序运行所需要的底层机器指令都只是有限的若干条,从大型的UNIX机器到桌面个人计算机,都是基于那些设计精良而优美的指令集。但是这些指令集之间互不相容,这就使得程序的移植变得非常困难,所需时间甚至超过了重新编写一遍的时间。于是虚拟机的概念出现了。 Java虚拟机(JVM)
阅读全文
摘要:1. 图形用户界面和命令行界面的切换 图形界面==>命令行界面 可以按Ctrl+Shift+Alt+F2 命令行界面==>图形界面 Alt+F7, 如果想开机默认进入命令行界面的话可以修改配置文件。具体命令如下(在命令界面下,当然,必须要root或者具有root权限的用户名下才可以修改): (1)v
阅读全文
摘要:1.分段机制 80386的两种工作模式 80386的工作模式包括实地址模式和虚地址模式(保护模式)。Linux主要工作在保护模式下。 分段机制 在保护模式下,80386虚地址空间可达16K个段,每段大小可变,最大达4GB。 从逻辑地址到线性地址的转换由80386分段机制管理。段寄存器CS、DS、ES
阅读全文
摘要:一、 虚拟地址 即逻辑地址,是指由程序产生的与段相关的偏移地址部分。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,C
阅读全文
摘要:MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权。 MMU是Memory Management Unit的缩写,中文名是内存管理单元,
阅读全文
摘要:在百度里面看到这样一个问题和答案,记录一下。 汇编中把数据段和代码段定义在同一段内有好处么? 悬赏分:10 -解决时间:2009-11-12 14:58 在汇编语言,把代码段和数据段放在同一段内,在伪指令 定义变量时位置有何要求么? 放在Start:后 还是Start前有没不同? 定义宏定义或子程序
阅读全文
摘要:5个数据段 进程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途 不一而不尽相同,有些内存是事先静态分配和统一回收的,而有些却是按需要动态分配和回收的。对任何一个普通进程来讲,它都会涉及到5种不同的数据段。
阅读全文
摘要:Linux大部分都是单内核的 操作系统内核可能是微内核,也可能是单内核(后者有时称之为宏内核Macrokernel)。按照类似封装的形式,这些术语定义如下: 微内核(Microkernelkernel)――在微内核中,大部分内核都作为单独的进程在特权状态下运行,他们通过消息传递进行通讯。在典型情况下
阅读全文
摘要:1、什么是堆栈? 2、一道微软的笔试题。 3、自己写的两个关于堆栈的例子? 4、如何动态申请二维数组? 一、什么是堆栈? 1、内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中
阅读全文
摘要:栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。 堆,就是那些由 new 分配的内存块,他们的释放编译器
阅读全文
摘要:Java把内存划分成两种:一种是栈内存,另一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java 会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。
阅读全文
摘要:1. 使用SWFUpload上传文件最佳介绍 2. 异常分析 文件上传已经成功,但前台显示Upload Error: 405错误。 启用debug,错误日志如下: SWFUpload Instance Info Version: 2.2.0 2009-03-25 Movie Name: SWFUpl
阅读全文
摘要:The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept"
阅读全文
摘要:异常: 项目中遇到了系统停止响应的问题,查看日志发现Tomcat报告Caused by: java.lang.OutOfMemoryError: PermGen space异常,开始以为是程序内存泄漏导致的内存溢出,网上查了一下,原来是另有原因,不过确实是内存溢出。 原因: PermGen spac
阅读全文
摘要:org.hibernate.AssertionFailure: null id in com.yeahwell.cutecms.model.Article entry (don't flush the Session after an exception occurs) at org.hiberna
阅读全文