自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

gaoxiang的专栏

找准方向,便只顾飞翔……

  • 博客(55)
  • 资源 (2)
  • 收藏
  • 关注

原创 虚拟内存的好处及多级分页机制的原因

众所周知,在现代计算机系统中都使用了虚拟地址。在一个程序的运行那个过程中,由CPU产生虚拟地址,该虚拟地址经过MMU转换成物理地址,然后使用该物理地址去访问内存。那么虚拟地址存在的原因是什么呢?为何不能由CPU直接产生物理地址呢?第一,使用虚拟地址可以更加高效的使用物理内存。在计算机系统中物理内存是有限的,对于一般的计算机来说,物理内存一般为4G或者8G. 对于现代多任务的通用系统来说这显然是

2014-11-28 22:38:37 7665 1

原创 基于gem5模拟trace的cache模拟器的实现

在做计算机体系结构的时候,模拟器是一个重要且又有效的工具。其中gem5集成了gem和m5的优点,使用起来比较简单和方便。其中包括了se模式和fs模式,se模式是在gem5运行我们已经编译好的程序,可以获取cache,cpu状态等数据,fs模式下可以模拟操作系统,我们可以将我们自己修改的linux内核加载到哥们上运行。下面介绍了使用gem5的se模式,运行编译好的ARM可执行文件。获取访存的trac

2014-11-25 22:54:31 7873 2

原创 PCM与DRAM混合内存

随着计算机技术的不断发展,chu

2014-08-30 16:17:39 2957

原创 Experimental Security Analysis of a Modern Automobile

Experimental Security Analysis of a Modern AutomobileOverViewModern automotives are no longer mere mechanical devices, they are controled by dozens of digital computers via internal networks.

2016-03-31 19:35:11 1062

原创 Software Security

Software SecurityOverviewAs the development of the computer, electric science and technology has permeated into every aspect of our life. Meanwhile, security problems generally come into peopl

2016-03-25 15:35:03 610

原创 ARM TrustZone and KVM

ARM TrustZone and KVM 1. TrustZoneOverviewARM TrustZone is a hardware based technology to enhance the security that is used on billions of chips. This new architecture allows CPU to run in

2016-03-21 19:58:53 954

转载 X86汇编快速入门

本文转自http://www.cnblogs.com/YukiJohnson/archive/2012/10/27/2741836.html本文描述基本的32位X86汇编语言的一个子集,其中涉及汇编语言的最核心部分,包括寄存器结构,数据表示,基本的操作指令(包括数据传送指令、逻辑计算指令、算数运算指令),以及函数的调用规则。个人认为:在理解了本文后,基本可以无障碍地阅读绝大部分标准X86汇

2016-02-27 16:39:23 568

原创 硅谷之火何时才能引燃中国的OS

都言条条大路通罗马,而建成罗马帝国的道路却只有一条。在操作系统领域,盖茨是当之无愧的那个唯一发现通向罗马帝国道路的人。互联网大潮浩浩汤汤,上世纪90年代以来计算机,互联网领域迎来了前所未有的发展机遇。而在此风潮中崛起的公司也是数不胜数,从IBM到苹果,从微软到谷歌,再到中国的阿里,百度。作为世界上拥有网民数目最多的国家,中国的OS之殇一直萦绕心头挥之不去。当前操作系统领域,wind

2015-11-08 23:22:44 749

原创 Study of the Symbolic Exection

With the development of the computer science, software security captures more people's attention recently. To find the vulnerability and the malicious code, static analysis is an efficient method wher

2015-11-08 15:29:19 485

原创 虚拟技术简介

之前学习TrustZone,这种ARM的机制是虚拟出两个相互隔离的区域,并分别运行安全系统和普通系统。然后就一直有一个疑问,这种虚拟是如何实现。今天看了hypervisor虚拟机技术,总算有了大概的了解。虚拟机技术是通过对计算机资源(内存,CPU等)的分区和组合,使得这些资源表现为一个或多个操作环境。也就是说通过对原有的硬件资源进行分组,在每个组上分别运行一个独立的操作系统,从而使得资源能得到

2015-10-11 22:24:58 1133

原创 TrustZone----安全android的未来

最经一直想在传统的安卓手机上使用传统android内核和安全seL4内核并行的架构,将安全性能要求高的应用和操作转移到seL4上去执行,从而提升系统的安全性。今天偶然发现TrustZone这个机制,顿时有种相见恨晚的感觉。首先说说什么是TrustZone,TrustZone实质上就是在原有的os的基础上通过虚拟化技术虚拟出两个独立的核,一个非安全内核(Non -secure,NS)和一个安全内

2015-10-09 22:57:49 2070

转载 unrecognized command line option “-std=null” 及升级gcc的方式

出现这个编译错误的原因在g++ gcc 版本不够高。目录[-]添加源(Ubuntu)安装4.8版本查看本地安装版本切换版本再次查看g++版本出现这个编译错误的原因在g++ gcc 版本不够高。添加源(Ubuntu)?12$ sudo add-apt-reposit

2015-09-29 11:18:23 754

原创 GPU上缘何没有大量的cache

近年来,GPU广泛应用与高性能领域,其通用计算能力也得到了进一步的利用。与传统的CPU相比,GPU在处理能力和储存器带宽上有着明显的优势,在成本和功耗上也不需要付出太大的代价。        在当前主流的CPU+GPU架构中,CPU和GPU一般经过北桥芯片相互连接,各自有各自的外部储存器,分别为内存和显存。在这种混合架构中CPU负责逻辑性较强的事物运算,而GPU主要负责计算密集度较高的部分。其

2015-05-29 09:48:52 4477

原创 Linux中基于ptrace的外挂程序设计

所谓的外挂程序就是在某个进程执行的过程中,其他进程可以动态的修改进程中的数据或代码,从而影响程序的执行路径,并最终影响程序的运行结果。在windows上我们有系统库函数writeprocess()可以直接完成该项功能。而在linux上没有相同功能的函数可以使用,不过使用ptrace也可以完成类似的功能。首先,Ptrace的使用形式如下:#include int ptrace(int r

2015-05-28 21:19:59 1345

原创 c运行库

在大多数程序员的眼中,一个程序的执行时从main函数开始的。可是实际上,事情的真相确实如此吗?其实之前的博客中已经提到在程序的main函数执行之前需要在进程堆栈中提前布置好main的参数。也就可以想见其实程序的执行不是从main函数开始,在main函数之前已经有代码在进行执行了。而这个执行的程序叫做入口函数或入口点,是运行库的一部分。一个程序的执行的大体过程如下:1、os创建进城后,将程序

2015-04-27 14:22:46 993

原创 des对称加密算法的实现

对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yao)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道

2015-04-06 22:40:11 1035

原创 动态链接

由于静态链接会造成内存和磁盘空间的浪费,同时程序的更新存在问题。所以提出了动态链接的概念。具体来讲就是在程序真正运行的时候才进行链接操作,这个在一定成都上可能带来性能问题,不过这样增加了相同代码的共享,增加了内存的利用率。动态链接的步骤:1) 加载可执行文件(存在外部符号引用),过程与静态链接一样2) 加载动态链接库ld.so3)   操作系统将控制权交给动态链接器的入口地址4

2015-04-06 09:16:00 802

原创 可执行文件的装载

程序的装载过程大体上可以分为6个步骤:1)新建进程调用do_execve()后查找文件,找到后先读取前128字节(魔数),判断 文件类型,其中有elf、#!(脚本)、cafe(java)等;2)在获取了文件类型后,调用相应的加载函数,处理文件的加载过程;3)寻找动态链接器路径(存在动态链接)4)根据文件头中的信息进行文件的映射,其中包括代码、数据等5)初始化ELF文件环境6

2015-04-03 23:03:31 695

原创 gcc静态链接

链接就是将多个.o文件连接成为一个可执行文件的过程。链接中最终要的部分就是空间地址分配和符号的解析和重定位。首先说空间地址分配:扫描所有的输入目标文件,获得他们各个段的长度、属性和位置,并进一步将输入目标文件的符号表中所有的符号定义和符号引用收集起来,统一放到一个全局符号表里。在这一步中,连接器能获得所有输入段的长度,并将它们合并,计算出合并后的段长度和位置,并建立映射关系。符号解析和重定

2015-04-01 22:48:28 838

原创 linux目标文件ELF的格式

现在PC上流行的可执行文件格式主要是windows下的PE和linux下的ELF文件,他们都是COFF格式文件变种。目标文件时源代码编译后但未进行链接的那些中间文件,它跟可执行文件的格式几乎没有什么区别,因此目标文件(.o文件)也和可执行文件使用一样的储存格式。在linux中除了可执行文件还有几种文件也是使用ELF格式储存的,其中包括动态库文件(.so),可重定位文件(.o),核心转储文件(进

2015-03-25 22:43:30 1117

原创 gcc编译器的具体处理过程

我们在linux中编译c代码的时候,都会使用gcc ***.c -o ***可是这一条简简单单的命令后隐藏着什么呢?在输入这条命令,敲击回车之后有发生了什么呢?首先,gcc的编译过程大体上可以分成4个部分:预编译,汇编,编译,和链接。下面具体说明这些步骤主要时做了什么。1,预编译,我们在写程序的时候一般会使用include,会使用宏定义define,使用编译选项。这些语句的处理都是在预编译

2015-03-24 22:43:14 910

原创 linux的3个查找命令

在linux中存在很多个命令可以查看文件的路径,在这里稍微总结一下。1, find命令     find命令应该时最熟悉的查找命令了,也是linux中最为强大的查找命令。它可以在指定的目录下找到你想要的任何文件。使用方法:      find        如果任何参数不加表示搜索当前目录及其子目录,不过滤任何结果,将他们显示在屏幕上。使用例子:      find . -

2015-03-19 23:07:35 634

原创 python的re模块及正则表达式的使用

不知是因为自己太低端还是其他的什么原因,别人都说的正则表达式非常强大,可是我的意识中正则表达式有用,但总是觉得没有传说中的那么厉害。也有可能是自己没有真正的理解它吧。在python中再次偶遇,那就再来好好学习一番。        首先是通配符,点号(.)可以匹配除了换行符之外的任意一个字符,'.ython’可以匹配’python‘也可以匹配’jypthon‘。注意点号是匹配一个字符,不能使空更

2015-03-17 15:30:29 1503

原创 linux中include搜索的路径

在写c和c++代码的时候,首先需要include必要的一些库文件。对于库文件的使用但凡会写c的人抖动一些,不过include具体是怎么引入的,却鲜为人知。首先在c中引入头文件一般是***.h的形式,而在c++中一般没有.h。具体原因是c++的函数基本上都包含在std命名空间中,为了能兼容c中的头文件,就将c中原有的一些头文件进行了重写,并把他们包含在写的名称的文件中,入stdlib.h变成cs

2015-03-16 22:41:04 5208

转载 python的list操作

这篇文章主要介绍了Python中列表(List)的详解操作方法,包含创建、访问、更新、删除、其它操作等,需要的朋友可以参考下列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表的数据项不需要具有相同的类型。列表中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。Python有6个序列的内置类型,但最常见的是列表和元组。序

2015-03-16 14:40:04 428

原创 python调用c库的方式

python作为出名的胶水语言,可以调用其他语言的模块。在实际开发中一般使用python语言快速形成函数的模型,对于其中的不同模块,使用不同的语言进行实现。今天就先介绍如何使用python调用c语言中的模块。在这里使用python调用c编译生成的动态库文件。首先写一个c语言动态库文件#includevoid Hello(){ printf("hello World!\n");}

2015-03-15 22:49:27 2144

原创 python学习之魔法方法的调用

在python中存在一些前面和后边都加上两个下划线的函数,这种函数会在一些特殊的情况下被调用,而不是根据他们的名字被调用。下面详细介绍几个重要的函数.__init__函数,这类进行初始化的函数,在创建一个具体的对象的时候会自动的调用。class People: def __init__(self): self.university="shandong" def getUnivers

2015-03-08 19:34:14 1481

原创 分组背包问题解法

前面的博客中提到了0/1背包问题,下面说明一种更加复杂的动态规划问题——分组背包。一个容量为V的背包和有N(0,1,2……i……N)件物品。第i件物品的费用是c[i],价值是w[i]。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。这个问题变成了每组物品有若干种策略:是选择本组的某一件,还是一件都不选。设

2015-03-07 15:01:45 3410

原创 python学习之异常

上一次说了python类和对象的对象的创建方法,今天再来说一下python中异常的使用。在编写程序的使用,程序员需要辨别事件的正常过程和异常过程。这类事件的处理可以使用条件判断语句来进行,但是这么做不仅会影响程序的执行效率和不灵活,同时也会使程序更难以阅读。另外程序员不可能将所有程序可能出现的情况都考虑完全,所以使用异常机制有其重要性也有其必要性。正如java c++语言的try/catch在

2015-03-07 13:43:06 642

原创 python学习之对象的创建

python是一种面向对象的语言,其中python的内部包含了几种内建对象类型(数字,字符串,列表,元组和字典)。同时python也可以创建自己的对象和函数。在说明如何创建自己的对象之前,首先说明其中几个重要的概念。多态:是对不同的对象使用同样的操作,也就是说给每个对象定义同样的函数。例如对于元组和字典可以定义同样的函数count,以计算元组和字典的长度;封装:对外部世界隐藏对象的工作细节

2015-03-06 16:54:15 6877

原创 手机9宫格图案解锁方法总数计算

图案解锁是智能手机一项常用的功能。你需要在3x3的点阵上,从任意一个点开始,反复移动到一个尚未经过的"相邻"的点。这些划过的点所组成的有向折线,如果与预设的折线在图案、方向上都一致,那么手机将解锁。两个点相邻当且仅当以这两个点为端点的线段上不存在尚未经过的点。此外,这条折线还需要至少经过4个点。有些人可能有和我一样的疑问,在这小小的9个点中,图案密码总共有多少种形式呢?今天我就使用深度优先搜索

2015-03-02 22:01:04 6240

原创 c++ 计时函数的使用

为了测试程序的性能,我们常常需要使用计时函数。在c++中提供了多种实现计时的方式。下面主要说明gettimeofday和clock函数的使用。gettimeofday获取的是当前精确时间(1970年1月1日到现在的时间),或者为执行计时,也可以称之为墙上时间。在程序执行之前获取一次时间,执行结束之后获取一次时间,两次时间之差就是程序真正的执行时间。而clock为cpu的时间,其中包括用户代

2014-11-26 21:29:34 1851

原创 ubuntu交叉编译器及反汇编的使用

在linux上我们经常设计

2014-11-24 23:31:47 3216

原创 ubuntu下安装adobe player的方法

在ubuntu下安装adobe player可以首先从官网上下载

2014-11-22 22:26:59 446

原创 pthread并行计算入门

实现并行的库有很多,比如mpi库,哦盘

2014-10-27 22:35:02 3088

原创 linux页框回收机制

在现在多任务的操作系统中,内存变得越来越重要,为了保证当前进程的顺利和高效的运行,就需要在必要的时候释放一些当前不在运行的进程的页。这里就涉及了页框回收机制(PFRA)。自然这些释放的页框之前肯定不在伙伴系统的任何free_area数组中,按照页框所存的内容大体将页框分为不可回收页、可交换页、可同步页、可丢弃页。下面针对这些页进行分析。       不可回收页,其中包括保留页(PG_reser

2014-10-27 20:51:32 1013

原创 hadoop 文件系统简介

本来是个轻松的周末,

2014-10-26 21:40:48 636

原创 编译和链接

在多道程序的实现中,要想使源文件生成可执行文件通常需要两个步骤编译和链接,        其中编译是指将源文件编译为中间代码文件,在linux中为*.o文件,其实质就是由c或c++等高级语言生成汇编语言。           链接:由链接程序将编译后形成的一组目标模块以及它们所需要的库函数链接在一起,形成一个完整的载入模块。实质为将多个中间代码文件(包括静态库函数等)在统一的地址空

2014-10-21 13:52:45 528

转载 Linux页框管理

在前面的博文里,我们讲解了基于80x86体系的Linux内核分段和分页机制,并详细地讨论了Linux的内存布局。有了这些基本概念以后,我们就来详细讨论内核如何动态地管理那些可用的内存空间。对于80386这种32位的处理器结构,Linux采用4KB页框大小作为标准的内存分配单元。内核必须记录每个页框的当前状态,例如,区分哪些页 框包含的是属于进程的页,而哪些页框包含的是内核代码或内核数据。内核还

2014-09-07 15:50:45 538

原创 linux虚拟内存管理

linux系统对于内存的管理有

2014-09-05 18:43:45 989

使用矩阵转置和pthread实现矩阵相乘

使用c++实现了基于pthread的并行矩阵乘法,同时为了提高程序运行效率,首先将矩阵进行转置

2014-10-28

基于时间赤字的双队列模拟

基于时间赤字的双队列模拟,求解平均队列长度和平均等待时间

2014-05-14

空空如也

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

TA关注的人

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