2014年1月12日

Ubuntu下开启ssh服务

摘要: ssh分为客户端和服务器端:openssh-client和openssh-server。1. 如果我们仅仅想登录其他机器的ssh,只需安装openssh-client,默认情况系ubuntu是安装了openssh-client的,如果没有安装,可以用sudo apt-get install openssh-client进行安装。如果要使本机开放ssh服务,就需要安装openssh-server,可以用sudo apt-get install openssh-server来安装。确认ssh服务已经启动:ps -e | grep ssh如果看到sshd,则说明openssh-server已经启动。 阅读全文

posted @ 2014-01-12 05:26 Persistence 阅读(222) 评论(0) 推荐(0)

Virtualbox下安装Ubuntu后设置联网问题

摘要: 在VirtualBox中安装Ubuntu后,要接入网络,有以下两种方法:1.默认是用的NAT模式,要通过宿主机访问网络,无需设置IP和路由,但是要自己设置DNS。我自己用的是第二种方法:2.如下图所示,进行设置即可: 阅读全文

posted @ 2014-01-12 04:30 Persistence 阅读(776) 评论(0) 推荐(0)

X Window基础三(转)

摘要: 1. 在文字界面启动X Window在字符界面启动X Window的命令是startx,startx的最主要任务就是找到使用者或者系统的X Server和X Client的设定值。 阅读全文

posted @ 2014-01-12 04:24 Persistence 阅读(141) 评论(0) 推荐(0)

chap-7 7.2 动态链接的简单实例

摘要: 7.2 动态链接的简单实例我们将使用一下几个文件来说明动态链接的过程://program1.c#include "lib.h"int main() { foobar(1); return 0;}//program2.c#include "lib.h"int main() { foobar(2); return 0;}//Lib.c#include #include "lib.h"void foobar(int i) { printf("Printing from Lib.so %d\n", i);}//Lib.h# 阅读全文

posted @ 2014-01-12 01:13 Persistence 阅读(262) 评论(0) 推荐(0)

chap-7 7.1 为什么需要动态链接?

摘要: 7.1 为什么要动态链接为什么静态链接会被舍弃?首先,从空间方面而言,因为每个程序在装载进内存运行之前,要将程序和所需要的其他模块进行链接。比如,程序A用到了printf.o模块,同时程序B也用到了printf.o模块,如果磁盘中有成百上千个可执行文件用到了printf.o模块,那么printf.o将被链接到各个最终的可执行文件中。printf.o的不可共享导致了磁盘和内存空间的浪费。其次,静态链接对程序的更新、部署、发布也会带来很多麻烦。比如program1用到了模块Lib.o,并且该模块是第三方厂商提供的,当该厂上更新Lib.o模块后,program1需要和Lib.o重新进行链接形成可执行 阅读全文

posted @ 2014-01-12 00:51 Persistence 阅读(225) 评论(0) 推荐(0)

2014年1月11日

5.2 Performance Metrics for Parallel System

摘要: 学习并行系统的性能可以用来挑选好的算法、评估硬件平台以及使用parallelism的收益。5.2.1 Execution Time5.2.3 Speedup当我们评估一个并行系统的时候,常常会考虑,如果让一个application并行运行的话,那么相对于sequential inplementation性能收益如何?这时会用到加速比(Speedup)这个概念,定义如下:Speedup is a measure that captures the relative benefit of solving a problem in parallel. It isdefined as the rati 阅读全文

posted @ 2014-01-11 01:24 Persistence 阅读(186) 评论(0) 推荐(0)

2014年1月10日

Chap-6 6.4.2 堆和栈

摘要: 6.4.2 堆和栈在操作系统里面,VMA除了被用来映射可执行文件中的各个segment,操作系统还使用VMA来对进程的地址空间进行管理。进程在执行的时候还需要用到堆(heap)和栈(stack)等空间,一个进程中的栈和堆分别都有一个对应的VMA,在Linux下,可以通过/proc来查看进程的虚拟空间分布,下面查看一个死循环的虚拟空间分布:***图6.4.2***第一列是VMA的地址范围;第二列是VMA的权限,“p”表示私有(COPY ON WRITE,COW),“s”表示共享;第三列表示VMA对应的segment在文件中的偏移;第四列表示映像文件所在设备的主设备和次设备号;第五列表示映像文件的 阅读全文

posted @ 2014-01-10 23:20 Persistence 阅读(215) 评论(0) 推荐(0)

Chap-6 6.5 ELF可执行文件的装载

摘要: 6.5 Linux装载ELF可执行文件的过程当我们在Linux系统的bash下输入一个命令执行某个ELF文件时,Linux是怎样装载这个ELF文件并且执行它呢?首先在用户层面,bash进程会调用fork()系统调用常见一个新进程,然后新的进程调用execve()系统调用执行指定的ELF文件,原先的bash进程继续返回等待刚才启动的新进程结束。在进入execve()系统调用后,Linux内核就开始进行真正的装载工作。在内核中,execve()系统调用相应的入口是sys_execve(),它被定义在arch/i386/kernel/process.c文件中。sys_execve()进行一些参数的检 阅读全文

posted @ 2014-01-10 23:18 Persistence 阅读(262) 评论(0) 推荐(0)

Chap-6 6.4 进程虚拟地址空间分布

摘要: 6.4 进程虚拟空间分布6.4.1 ELF文件的链接视图和执行视图可执行文件被映射时,是以系统页的长度为单位的,每个段在被映射时的长度应该为系统页长度的整数倍。如果不是,那么多余部分也将占用一个页。一个ELF可执行文件往往有十几个段,那么内存空间的浪费是可想而知的,有没有办法来减少这种浪费?一个简单的方案就是:对于有相同权限的段,把它们合到一起当作一个段进行映射。比如有两个段分别叫做“.text”和“.init”,它们包含的分别是程序的可执行代码和初始化代码,权限相同,都是可读并且可执行。假设.text段为4097字节,.init为513字节,这两个段分别映射的话就要占用三个页面,但是,如果将 阅读全文

posted @ 2014-01-10 23:17 Persistence 阅读(453) 评论(0) 推荐(0)

Chap-6 6.1~6.3 程序装载

摘要: 6.1 进程的虚拟地址空间程序和进程的区别:程序(或者狭义上讲可执行文件)是一个静态的概念,它就是一些预先编译好的指令和数据集合的一个文件;进程则是一个动态的概念,它是程序运行时的一个过程,很多时候把动态库叫做运行时(Runtime)也有一定的含义。程序运行起来以后,将拥有自己独立的虚拟地址空间,这个虚拟地址空间的大小由计算机的硬件平台决定,具体的说是由CPU的位数决定。硬件决定了地址空间的最大理论上限,即硬件的寻址空间大小,比如32位的硬件平台决定了虚拟地址空间的地址为0到2^32 - 1,即0x00000000 ~ 0xFFFFFFFF,就是4GB的虚拟空间大小。在32位平台下的4GB虚拟 阅读全文

posted @ 2014-01-10 23:15 Persistence 阅读(172) 评论(0) 推荐(0)

2014年1月9日

X Window基础二(转)

摘要: 1.X Window的主要组成部分:X Server/X Client/Window Manager/Display ManagerX Window System 是个利用网络架构的图形使用者界面软件,基本上可以分为X Server和X Client两个部分。其中X Server在管理硬件,而X Client在管理软件。在运行过程中,X Client应用程序会将所要呈现的画面告知X Server,最终由X Server将结果通过它所管理的硬件绘制出来。2. X Window的启动流程要启动X Window System时,必须要首先启动管理硬件与绘图的X Server,然后才载入X Clien 阅读全文

posted @ 2014-01-09 07:54 Persistence 阅读(198) 评论(0) 推荐(0)

X Window基础一(转)

摘要: 1.X Window系统最早是由MIT在1984年发展起来的。由于这个X希望通过网络进行图形界面的存取,因此发展出许多的X通讯协议,这些网络架构非常的有趣,因此吸引了很多厂商加入研发,X的功能一直在持续的加强,一直到1987年更改X版本到X11,这一版X取得明显的进步,后来的视窗界面改良也是架构于此版本,X视窗也被称为X11。2.1992年XFree86计划顺利展开,该计划在持续维护X11R6的功能性,包括对新硬件的支持和增加新的功能。定名为XFree86是根据X + Free Software + X86硬件而来。早期Linux所使用的X Window核心都是由XFree86这个计划所提供的 阅读全文

posted @ 2014-01-09 06:21 Persistence 阅读(235) 评论(0) 推荐(0)

2014年1月8日

Linux基础命令 su与sudo的区别

摘要: 1.su 这个名字是substitute user的缩写,允许Linux不同用户的相互切换。默认情况下如果使用该命令不带任何参数,那么将目前用户提升到root用户权限。但是此时需要输入的是root用户密码而不是当前用户密码。一般su切换用户有两种做法:A: su useraccountB: su - useraccountsu命令和su -命令的最大不同在于:su只是切换了root身份,但shell环境仍然是普通用户shell;而su -则是连用户和shell环境一切切换为root身份。只有切换了shell环境才不会出现PATH环境变量的错误。su切换为root用户以后,用pwd命令看了一下当 阅读全文

posted @ 2014-01-08 05:55 Persistence 阅读(267) 评论(0) 推荐(0)

2014年1月7日

Chap-4 Section 4.6 链接控制过程

摘要: 4.6 链接过程控制前面我们在使用ld链接器的时候,没有指定链接控制脚本,其实ld在用户没有指定链接脚本的时候会使用默认链接脚本,可以使用ld -verbose来查看ld默认的链接脚本。当然,为了更加精确的控制链接过程,可以自己写一个链接控制脚本,然后指定该脚本为链接控制脚本,可以使用-T参数:ld -T link.script4.6.2 最小的程序为了演示链接的控制过程,我们要写一个程序,该程序的功能是在终端输出"hello world"。但是我们这里的程序与C语言教科书中的例子有所不同。首先,经典的hello world使用了printf函数,该函数是C语言库的一部分, 阅读全文

posted @ 2014-01-07 00:19 Persistence 阅读(397) 评论(0) 推荐(0)

Chap-4 Section 4.5 静态库链接

摘要: 4.5 静态库链接一个静态库可以看成是是一组目标文件的集合,即很多目标文件经过压缩打包后形成的一个文件。比如我们在Linux中最长使用的C语言静态库libc位于/usr/lib/i386-linux-gnu目录下,它属于glibc项目的一部分。glibc本身是用C语言开发的,它由成千上百个C语言源代码文件组成,编译完成后有相同数量的目标文件,比如输入输出printf.o,scanf.o;文件操作有fread.o,fwrite.o;时间日期有date.o,time.o;内存管理有malloc.o,把这些零散的目标文件直接提供给库的使用者,很大程度上会造成文件传输、管理和组织方面的不便,于是使用a 阅读全文

posted @ 2014-01-07 00:16 Persistence 阅读(269) 评论(0) 推荐(0)

导航