自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (5)
  • 收藏
  • 关注

原创 shell中,合成多个命令功能,创建新命令

用shell时,有的命令用着很不舒服,可以自己修改shell命令的功能组合,创建新的命令。比如,我想把cd命令和ls命令合成到一起重新命名为cd,即每次执行cd命令时,顺便把目录中的内容打印出来。1、首先以root权限进入/usr/bin目录,在该目录下编写脚本命名为cl.sh,内容如下:#!/bin/bashif [ -d $1 ]thencd $1ls --co

2013-01-25 17:18:20 3033

原创 【解答】arm架构的linux内核,软件线程切换的时候,TLB作废吗,cache作废吗?

首先明确:linux下,线程即进程这种纠结的问题,必须读内核源码才能找到答案,ok,let's go!armv8 内核中上下文切换代码:1、linaro-aarch64/kernel/sched/core.c line 1852 context_switch==>该函数调用两个主要函数:switch_mm(),switch_to()如下所示2、arch/arm6

2013-01-24 10:41:30 2844

原创 【解答】arm架构的linux内核中,clrex指令的作用是什么,内核中什么时候才会用到?

先看clrex指令的作用:《arm architecture reference manual》B2-1292以下简称arm arm手册The ClearExclusiveLocal() procedure takes as arguments the processor identifier processorid . The procedure clears the local rec

2013-01-24 10:27:03 5206

转载 简单解读linux的/proc下的statm、maps、memmap 内存信息文件分析

几乎看什么内核漏洞分析之类的文章,第一眼都是被 cat /proc/{pid}/maps产生的一堆奇怪的信息唬住了,都不敢往下看居然没有搜到关于它们的详细介绍,旁边也没有表头什么的解释信息那就我来整理一下吧,方便后人ls /proc 能看到一些数字命名的文件夹,这个就不多说了,什么pid、fd的知识还是容易弄到的拿init开刀,[root@localhost proc]

2013-01-23 17:04:33 2871

原创 查看正在运行的动态链接的程序中,某个动态库中函数的虚拟地址

目前,大部分可执行程序为了节省内存空间等目的,都是动态链接的, 动态链接的程序在每次运行时,所依赖的动态库的地址总是变化的,那么库中的函数地址也跟着变化。如何在程序(动态链接的)运行期间,查看某个库函数的虚拟地址?方法很简单,首先确定,你需要查看的函数,在哪个动态库中,并且确定该函数相对于该动态库的相对地址。其次,在程序运行期间,查看程序的映射表,找到动态库的加载地址。最后将这两个地址相加,就

2013-01-23 16:44:02 8001 2

转载 shell中for循环总结

关于shell中的for循环用法很多,一直想总结一下,今天网上看到上一篇关于for循环用法的总结,感觉很全面,所以就转过来研究研究,嘿嘿...1、 for((i=1;i2、在shell中常用的是 for i in $(seq 10)3、for i in `ls`4、for i in ${arr[@]}5、for i in $* ; do6、for File in /

2013-01-20 00:19:02 1562

转载 bash脚本运行错误-Bad for loop variable(ubuntu)

一个从fedora7中拷贝过来的bash脚本,居然不能在ubuntu下面执行,提示错误Bad for loop variableG了一把,在TW同胞那里找到了答案,原来是bash和dash的问题解决方法:使用sudo dpkg-reconfigure dash选择NO。世界又清静了。转自:http://www.linuxdiyf.co

2013-01-20 00:05:31 2155

原创 Shell编程:字符串与数值之间的转换与计算

shell编程往往需要对字符串进行操作,有时需要将字符串转为数值,并做加减运算。以下介绍将字符串转为数值并进行计算的方法。# temp1=400d7c# echo $((16#${temp1}+4))    (打印默认是十进制输出的)4197760# temp2=$((16#${temp1}+4))# echo "obase=16;${temp2}"|b

2013-01-19 22:50:16 85336

原创 shell表达式中引用外部变量的方法(例如awk中引用外部变量)

今天写shell脚本,想对文件中某一行进行操作,首先提取该行,命令有好几种,如下:# cat XXX | awk '{ if (NR== 3 ) print $0;}'# sed  -n '4p' XXX我想遍历所有行,然后对行进行处理用for循环写,直接在表达式中写# cat XXX | awk '{ if (NR== $i ) print $0;}'这样是不对的正确写法是:

2013-01-18 10:29:34 4521

原创 交叉编译SPECCPU2006

为了在模拟器(gem5等)上、arm开发板上运行SPECCPU2006,需要交叉编译之,本文提供交叉编译SPECCPU2006的步骤。1、下载SPECCPU2006.iso(http://www.spec.org/)2、因为下载的是iso格式,需要mount到linux的某个目录下再进行操作。# mount iso9660 path-to-SPECXX.iso  /mnt/iso -o

2013-01-17 17:10:21 11227 12

转载 一致代码段和非一致代码段

之所以出现这个定义是因为系统要安全:内核要和用户程序分开..内核一定要安全.不能被用户程序干涉.但是有时候用户程序也需要读取内核的某些数据,怎么办呢?操作系统就引入了访问特权等级(0-3)的机制.这些特权等级,通过三个符号来体现CPL/DPL/RPL.其中CPL是存寄存器如CS中,RPL是代码中根据不同段跳转而确定,以动态刷新CS里的CPL.DPL是

2013-01-16 22:56:43 1353

原创 【解决交叉编译工具链问题】bash: gcc:no such file or directory

在进行交叉编译工具链安装时,有三种方法:1、源码编译,手动安装2、二进制可执行文件直接安装3、直接解压工具链,手动修改环境变量为了方便,我们多用方法3进行安装。但是问题来了,你的工具链制作时有可能是针对32位OS的,但是你的虚拟机有可能是64位的。这就导致一个问题:修改了环境变量后,source以下,用tab按键能补齐命令,但是执行"cross-compiler-gcc -

2013-01-16 21:52:41 8125

转载 Rounding Methods(舍入模式)

What is "Rounding" ?Rounding means reducing the digits in a number while trying to keep its value similar. The result is less accurate, but easier to use. Example: 7.3 rounds to 7B

2013-01-16 09:31:10 4575

关于内核动态补丁技术(kpatch)

内核可以在运行时动态执行补丁中的代码(kpatch),而不需要重启后再运行补丁代码。对于kpatch的运行原理,可以参看[3], kpatch基于ftrace技术,可以在内核运行时动态的(即不需要重启)、整体替换某个函数(但需要暂时停止所有运行时进程)。如图1所示,具体的,当内核运行之前,加入原来的内核函数名字为func_original(),则内核编译时就先把patch做好(假设替换函数为func_replace()),同时编译进内核中。本文主要解释从gnu汇编原语角度如何实现kpatch,具体kpatch机制可以参考文献[3]。内核文件arch/arm64/include/asm/alternative.h中有一段汇编,涉及内核动态patch技术。

2018-11-19

SPEC 2017 int rate command lines

SPECCPU 2017 整型测试程序的命令行,从代码中抠出,用于单独运行benchmark进行实验

2018-06-01

Event in gem5

gem5底层如何实现模拟处理器并行执行的?如何实现准确计算cycle数?

2017-01-21

ARMv8 Linux内核异常处理分析

看了 Linaro 提供的开源 ARMv8 Linux 内核源码,发现 ARMv8 异常处理与 ARMv7 及之前的架构有所不同,详细分析之

2014-05-30

ARM上电启动及Uboot代码分析

网上关于ARM的bootloader(以Uboot为例)的启动顺序的资料有好多,但是对于Uboot的地址映射、体系结构级操作介绍很少,都是直接开始Start.s代码的阅读。本文拟详细分析Uboot从上电,到第一条指令的执行,同时分析代码对于cache、TLB等部件的操作过程。 以下内容以u-boot-2012.04.01源码为例,从网上很容易下载该版本。

2014-05-30

空空如也

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

TA关注的人

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