- 浏览: 105957 次
- 性别:
- 来自: 杭州
最新评论
文章列表
概念
Virtual Address(VA):虚拟地址,实际上不存在,是对物理地址的抽象,CPU通过虚拟地址访问内存。
Physical Addrss(PA):物理地址,内存真实的地址。
Memory mangagement unit(MMU):地址转换单元,将虚拟地址转换成物理地址.
虚拟内存重要特性
1.虚拟内存存放在磁盘中,缓存在物理内存中。虚拟内存使得每个进程好像可以独占物理内存一样,这样简化了系统为进程分配内存的过程,同时各个进程都拥有的自己的内存,无不干扰。比如在32位的系统中,每个进程的拥有的虚拟内存是4G(2**32).
2.虚拟内存可以提供内存访问保护,可以在页表 ...
- 2015-06-03 16:48
- 浏览 299
- 评论(0)
这个程序主要功能是显示CPU厂商的Vendor ID
源代码如下:
.section .data
#x是占位符
output:
.ascii "The processor Vendor ID is: 'xxxxxxxxxx'\n"
#_start和output都是标签
.section .text
#如果用gcc编译的话,_start要改为main
.global _start
_start:
movl $0, %eax
cpuid
#相当于把字符串output的地址传入到寄存器edi中.
movl $output, %edi
#将调用 ...
- 2015-06-01 17:52
- 浏览 350
- 评论(0)
生成驱动依赖文件
depmod会生成驱动之间的依赖文件 modules.dep,保存在/lib/modules/$(uname -r)目录下。
查看已经加载驱动
lsmod
查看驱动信息
modinfo
还可以从模块文件名字分析驱动信息
modinfo -F depends
查看相关字段信息
加载驱动
insmod后面加驱动的路径。
带依赖分析加载驱动
modprobe可以加驱动的驱动名,并自行分析依赖文件modules.dep加载相关的依赖驱动。
删除驱动
rmmod
<script type="tex ...
- 2015-05-28 16:54
- 浏览 475
- 评论(0)
最近帮一个项目编译内核,特别学习了一下,记下了过程。如果问题,可以及时联系我
编译命令
1.清理工作目标
make clean: 删除编译中间文件,但是保留配置
make mrproper:删除包括配置文件的所有构建文件
make distclean:执行mrproper所做的一切,并删除备份文件
2.配置内核
make menuconfig:文本图形方式配置内核
make oldconfig:基于当前的.config文件提示更新内核
make defconfig:生成默认的内核配置
make allmodconfig:所有的可选的选项构建成模块
make allye ...
- 2015-05-15 17:17
- 浏览 705
- 评论(0)
结构体
结构体是一种特殊类型,可以打包其它类型为一种复合类型。在面向对象的概念中,就是一种特殊类。
使用结构体几种形式:
第一种
先定义结构体,然后定义结构体变量。
定义结构体:
struct point1{
int x;
int y;
};
定义结构体变量
struct point1 point;
第二种
定义匿名结构体,然后定义结构体变量
struct{
int x;
int y;
}point2;
第三种
定义结构体的同时定义结构体变量
struct point3{
i ...
- 2015-05-07 21:04
- 浏览 370
- 评论(0)
每个指针都有一个值
指针是一个非负的整数值,表示存储的地址.
指针必定有个类型
这个类型指的是指针指向这个地址单元(连续的地址空间)存放的数据类型.void表示泛型,可以转换成任何类型.
用”*”可以声明一个指针变量, 也可以间接引用指针.
用(int *)p来声明p是指针, 类型为int. 通常情况下括号可以省略. 用*p解引用来获取指针p指向的值.
用&获取一个变量的地址
&只能放在在变量的前面, 即只能操作左值.
可以改变一个指针的类型,但是指针的值没有变
指针的类型和指针的值应该分开来看待.
指针和数组密切相关
数组名在特定 ...
- 2015-05-06 17:16
- 浏览 298
- 评论(0)
模块函数
re.compile(pattern [, flag])
把正则表达式预编译成正则表达式对象(模式对象),供以后使用.
#模式对象,有re.compile()返回
>>> pobj = re.compile('Hello,(.*)')
>>> pobj
<_sre.SRE_Pattern object at 0x7fb83dc9a530>
re.match(pattern, string [, flag])
如果字符串起始处有0个或多个字符串匹配模式字符串, 返回一个相应的匹配对象.否则返回None.等同于re. ...
- 2015-04-30 08:47
- 浏览 407
- 评论(0)
##sys.exc_info()
返回 (type, value, traceback). type为异常类型, value为异常的参数(通常为异常错误的信息), traceback为跟踪回溯的对象.
exc_type, exc_value, exc_traceback = sys.exc_info()
print "*** print sys.exc_info:"
print 'exc_type is: %s, exc_value is: %s, exc_traceback is: %s' % (exc_type, exc_value, ...
- 2015-04-28 10:14
- 浏览 2057
- 评论(0)
global()返回全局作用域的属性字典, locals()返回局部作用域的属性字典.当locals()在模块顶层的位置时返回的值与global()相同.
实例
#!/usr/bin/python
#coding=utf-8
class Dog(object):
x = 11
y = 12
def __init__(self):
m = 44
n = 33
def eat(self):
k = 11
h = 22
'''
打印 {'h': 22, 'k': ...
- 2015-04-26 11:41
- 浏览 596
- 评论(0)
imp.get_suffixes()
返回3元组列表(suffix, mode, type), 获得特殊模块的描述.suffix为文件后缀名;mode为打开文件模式; type为文件类型, 1代表PY_SOURCE, 2代表PY_COMPILED, 3代表C_EXTENSION
>>> imp.get_suffixes()
[('.x86_64-linux-gnu.so', 'rb', 3), ('.so', 'rb', 3), ('module.so', 'rb', 3), ('.py', 'U', 1), ('.pyc', 'rb', 2)]
imp.fin ...
- 2015-04-26 09:33
- 浏览 3207
- 评论(0)
在python中, 模块即一个后缀名为”.py”文件,python用文件组织一个模块.
模块导入遵循作用域原则, 在什么作用域导入就只能在当前作用域生效.
一个模块只被加载一次,无论导入它多少次.
from module import name 是把名字导入到当前的名称空间
单行导入单个模块
import json
单行导入多个模块
import os, sys, time
导入指定的模块属性
from os import path, fork, mkdir
多行导入
from Tkinter import Tk, Frame, Button, E ...
- 2015-04-25 13:26
- 浏览 911
- 评论(0)
1.创建空字典
>>> dic = {}
>>> type(dic)
<type 'dict'>
2.直接赋值创建
>>> dic = {'spam':1, 'egg':2, 'bar':3}
>>> dic
{'bar': 3, 'egg': 2, 'spam': 1}
3.通过关键字dict和关键字参数创建
>>> dic = dict(spam = 1, egg = 2, bar =3)
>>> dic
{'bar': 3, 'egg': ...
- 2015-04-21 21:19
- 浏览 429
- 评论(0)
查看日志
$ git log
commit 81fe2587c1018b93d7016f69f52f532e903b780f
Author: Jdoing <703627622@qq.com>
Date: Mon Apr 13 21:31:47 2015 +0800
add some comment to readme.txt file
commit 28647342369fc48cde70523f2fb38f4ec67f5957
Author: Jdoing <703627622@qq.com>
Date: Mon Apr 13 21:19: ...
- 2015-04-14 17:30
- 浏览 281
- 评论(0)
分支操作
1.查看远程分支
前面带*号的代表你当前工作目录所处的分支
$ git branch -a
* br-2.1.2.2
master
remotes/origin/HEAD -> origin/master
remotes/origin/br-2.1.2.1
remotes/origin/br-2.1.2.2
remotes/origin/br-2.1.3
remotes/origin/master
2. 查看本地分支
$ git branch
* br-2.1.2.2
master
3.创建分支
git bra ...
- 2015-04-13 20:49
- 浏览 323
- 评论(0)
什么叫做序列化?
将内存中的对象转换为线性结构的字符串(有时也称字节流),以便存储或者传输.这种对象转换为字符串的行为通常叫做序列化.内存中的任意数据结构都可以映射为一个字符串.
序列化
函数签名
#pickle.dump(obj, file[, protocol])
首先尝试将table对象序列化写入文件dbase中,写入方式是字节形式:
table = {'a' : [1, 2, 3], 'b' : ['spam', 'egg'], 'c' : {'name' : 'Bob'}}
with open('dbase', 'wb') as ff:
pickle. ...
- 2015-04-13 17:28
- 浏览 515
- 评论(0)