- 博客(33)
- 收藏
- 关注
原创 python安装Theano库
最近研究deep learning,于是装个Theano库,结果今天折腾了好半天折腾好久,终于发现一种比较简单的安装方法。http://python-distribute.org/distribute_setup.pyhttps://github.com/pypa/pip/raw/master/contrib/get-pip.py分别打开上面两个网址,里面其实是distribute和p
2017-02-23 16:12:41 840
翻译 深入理解Linux内核——内存管理
1:页框的大小:4KB,4MB(如果PAE被激活,则为2MB)。2:页描述符: 1)内核必须记录每个页框当前的状态。 2)内核必须能够区分哪些页框包含的是属于进程的页,而那些页框包含的是内核代码或者内核数据。 3)空闲页框:动态内存中不包含有用数据。 不空闲页框:包含用户态进程的数据,某个软件高速缓存的数据,动态分配的内核数据结构,设
2017-02-20 16:15:39 873
翻译 深入理解linux内核架构(内存管理)
1:在内核使用高端内存页之前,必须使用下文讨论的kmap和kunmap函数将其映射到内存虚拟地址空间中。2:UMA计算机(一致内存访问,uniform memory access)将可用内存以连续方式组织起来。3:NUMA计算机(非一致性内存访问,non-uniform memory access)系统的各个CPU都有本地内存,可支持特别快速的访问,各个处理器之间通过总线连接起来,以支持其
2017-02-20 15:43:52 8075
原创 中断&中断返回
中断1、将所有参数或一部分参数入栈2、将当前指令的下一条指令地址入栈(返回地址)3、跳转到函数体执行,在函数体开始执行时还需要完成一部分操作:ebp入栈,将ebp指向esp(栈顶),分配所需字节的临时空间,保存寄存器汇编代码1. push ebp /*将old ebp入栈*/2. mov ebp,es
2017-02-20 14:54:18 4064
转载 linux的echo命令
linux的echo命令, 在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的, 因此有必要了解下echo的用法echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。该命令的一般格式为: echo [ -n ] 字符串其中选项n表示输出文字后不换行;字符串能加引号,也能不加引号。用echo命令输出加引号的字符串时,将字符串原样输出;用echo
2017-02-20 14:53:02 226
转载 一个简单的Linux驱动程序和Makefile
1、源程序//hello.c1. #include 2. #include 3. 4. MODULE_LICENSE("Dual BSD/GPL"); 5. 6. static int hello_init(void) 7. { 8.
2017-02-20 14:51:58 1198
转载 linux内核模块编译
本文将直接了当的带你进入linux的模块编译。当然在介绍的过程当中,我也会添加一些必要的注释,以便初学者能够看懂。之所以要写这篇文章,主要是因为从书本上学的话,可能要花更长的时间才能学会整个过程,因为看书的话是一个学习过程,而我这篇文章更像是一个培训。所以实践性和总结性更强。通过本文你将会学到编译一个模块和模块makefile的基本知识。以及加载(卸载)模块,查看系统消息的一些知识;声明:
2017-02-20 14:51:16 337
转载 linux内核驱动设备
最近在学习Linux下设备驱动程序,从头开始吧!慢慢总结,先入手,后入门,再提高! 下面是一个简单的字符设备驱动程序,主要是一个模拟设备,使用了系统的内存,相信大家都能看懂,毕竟简单,而且注释清楚,编译测试的方法大家都知道吧,这里要说的就是习惯的测试方法是通过echo向设备文件写入内容,然后通过cat显示内容,但是希望大家看到,该设备只有4字节的内存,测试的时候建议大家可以试一
2017-02-20 14:43:35 233
原创 while&do-while
一、while语句的一般形式为:while(表达式)语句其中表达式是循环条件,语句为循环体。while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句。二、do-while语句的一般形式为:do语句while(表达式);这个循环与while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真, 如果为真则继续循环;如果为假, 则终止循
2017-02-20 14:42:16 260
转载 内存映射机制
现代意义上的操作系统都处于32位保护模式下。每个进程一般都能寻址4G的内存空间。但是我们的物理内存常常没有这么大,进程怎么能获得4G的内存空间呢?这就是使用了虚拟地址的好处。我们经常在程序的反汇编代码中看到一些类似0x32118965这样的地址,操作系统中称为线性地址,或虚拟地址。通常我们使用一种叫做虚拟内存的技术来实现,因为可以使用硬盘中的一部分来当作内存使用。另外,现在操作系统都划分为系统空间
2017-02-20 14:38:00 2070
转载 C++中 #ifdef 和#endif的作用
C++中 #ifdef 和#endif的作用一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。 条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #else 程序段2 #
2017-02-20 11:36:18 214
转载 bash的内置的unix命令
bash内置Unix命令.:执行当前进程环境中的程序。同source。. file:dotUnix命令从文件file中读取命令并执行。: 空操作,返回退出状态0。alias:显示和创建已有Unix命令的别名。bg:把作业放到后台。bind:显示当前关键字与函数的绑定情况,或将关键字与readline函数或宏进行绑定。break:从最内层循环跳出。builtin
2017-02-20 11:32:12 390
原创 C语言小笔记
1.main是一个特殊的函数名——每个程序都是从main函数的起点开始执行。2.函数之间进行数据交换的一种方法是调用函数向被调用函数 一个值(称为参数)列表。函数名后面的一对圆括号将参数列表括起来。3.\n——换行符 \t——制表符 \b——回退符 \"——双引号 \\——反斜杠4.printf是一个输出化格式函数.该函数的第一个参数
2017-02-20 11:24:46 220
转载 Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型
Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系统中,用到了四级页表,如图2-1所示。四级页表分别为:页全局目录(Page Global Directory)页上级目录(Page Upper Directory)页中间目录(Page Middle Directory)页表(Page Tab
2017-02-20 11:23:12 945
原创 linux常见的20条命令
1. ls命令ls命令是列出目录内容(List Directory Contents)的意思。运行它就是列出文件夹里的内容,可能是文件也可能是文件夹。?1234567root@tecmint:~# ls Android-Games
2017-02-20 11:01:16 751
原创 逻辑地址&线性地址&物理地址
一、逻辑地址转线性地址 机器语言指令中出现的内存地址,都是逻辑地址,需要转换成线性地址,再经过MMU(CPU中的内存管理单元)转换成物理地址才能够被访问到。我们写个最简单的hello world程序,用gccs编译,再反编译后会看到以下指令:mov 0x80495b0, %eax这里的内存地址0x80495b0 就是一个逻辑地址,必须加上隐含的DS 数据
2017-02-20 10:58:48 349
原创 list_entry()
Linux内核中,获取节点地址的函数list_entry()非常常用,由于其定义有点晦涩,先解析如下:list_entry的宏定义:#define list_entry(ptr, type, member) / ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member))) 这个倒是不难理解:从一个
2017-02-20 10:31:32 164
转载 程序的内存布局
程序的内存布局 现代的应用程序都运行在一个虚拟内存空间里,在32位的系统里,这个内存空间拥有4GB的寻址能力。现代的应用程序可以直接使用32位的地址进行寻址,整个内存是一个统一的地址空间,用户可以使用一个32位的指针访问任意内存位置。 在进程的不同地址区间上有着不同的地位,Windows在默认情况下会将高地址的2GB空间分配给内核,而Linux默认将高地址的1GB空间分配给内核,
2017-02-20 10:30:18 803
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人