摘要: -Wl,--rpath=指定编译和运行期间的库搜索路径RPATH,这个路径会写入到编译好的二进制文件中。-Wl,--rpath=,--enable-new-dtags指定编译和运行期间的库搜索路径RPATH和RUNPATH,这两个路径同样会写入到二进制文件中,但只有RUNPATH起作用,RPATH会被忽略掉。RUNPATH实际是RPATH的另一个版本,区别是RPATH不能被LD_LIBRARY_PATH覆盖,而RUNPATH则可以被LD_LIBRARY_PATH覆盖。LD_RUN_PATH全局环境变量,与-Wl,--rpath=作用相同,在没有指定-Wl,--rpath=时起作用。-L指定编译 阅读全文
posted @ 2013-10-12 14:36 使命召唤 阅读(1674) 评论(0) 推荐(0) 编辑
摘要: 1. 实现只允许特定用户ssh登录1.1. 直接配置ssh来实现编辑/etc/ssh/sshd_config,在末尾添加如下一行AllowUsers user1 user2 user3然后重启sshd服务即可。1.2. 通过配置PAM来实现在/etc/pam.d/sshd中添加第一行auth required pam_listfile.so item=user sense=allow file=/etc/sshusers onerr=fail然后在/etc/sshusers中添加允许的用户名,无需重启sshd。2. 实现禁止特定用户登录2.1. 直接配置ssh编辑/etc/ssh/sshd_c 阅读全文
posted @ 2013-10-12 14:34 使命召唤 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 机房有3台服务器,需要搭建一个小型集群,用于做大数据实验。现在的条件如下:1. 共3台服务器,每台服务器上有4个1G网络接口。2. 只给了一个外网IP,用于接入互联网。3. 一台8口100M家用路由器(-_-)。目的如下:1. 要3台服务器能够相互通信,并且通信的带宽要尽量大,因为是做大数据的实验。2. 要3台服务器能同时上网。现在有两种较直接的方案:1. 3台机器接到路由器+路由器接入外网这是传统的小局域网模式,这样3台机器互联以及上网的目的都可以达到,但小路由器的带宽和性能,根本无法胜任大数据量的传输。虽然两两间的带宽可以达到10MB/s,但当机器间同时传输数据时,平均带宽就很小了。况且, 阅读全文
posted @ 2013-10-12 14:06 使命召唤 阅读(1193) 评论(0) 推荐(0) 编辑
摘要: 单读者单写者很容易进行冲突避免,毕竟他们操作的是不同的指针(head和rear),而多读者则需要共同操作head,多写者共同操作rear,似乎必须要加锁,锁机制是内核提供的一种对象,比较影响效率。可以借鉴spinlock的实现机制,利用CPU提供的原子指令(x86上有cmpxchg,即比较交换,当某个内存地址里的值等于某个值时,则将该地址里的内容与某个寄存器交换,这一系列操作是原子的,由CPU保证),实现CAS原子操作,意为Compare & Set(Swap?)。一种典型的CAS描述如下:bool compare_and_set(int *reg, int oldval, int n 阅读全文
posted @ 2013-03-21 15:52 使命召唤 阅读(865) 评论(0) 推荐(0) 编辑
摘要: 一个读线程,一个写线程,共同操作一个队列,不用锁如何避免冲突?通常用锁是因为读写线程共同操作一个count计数器,改成两个线程各操作一个计数器,每次读写之前比较两个计数器的大小。初始:head=-1;rear=0;a=0;b=0;读线程:while(a>=b);//轮询head=(head+1)%max;val=data[head];a++;return val;写线程:while(b>=a+max);//轮询data[rear]=val;rear=(rear+1)%max;b++; 阅读全文
posted @ 2013-03-21 15:45 使命召唤 阅读(485) 评论(0) 推荐(0) 编辑
摘要: 1. x86的物理地址空间布局以x86_32,4G RAM为例:物理地址空间的顶部以下一段空间,被PCI设备的I/O内存映射占据,它们的大小和布局由PCI规范所决定。640K~1M这段地址空间被BIOS和VGA适配器所占据。由于这两段地址空间的存在,导致相应的RAM空间不能被CPU所寻址(当CPU访问该段地址时,北桥会自动将目的物理地址“路由”到相应的I/O设备上,不会发送给RAM),从而形成RAM空洞。当开启分段分页机制时,典型的x86寻址过程为内存寻址的工作是由Linux内核和MMU共同完成的,其中Linux内核负责cr3,gdtr等寄存器的设置,页表的维护,页面的管理,MMU则进行具体的 阅读全文
posted @ 2012-08-29 09:35 使命召唤 阅读(8252) 评论(3) 推荐(8) 编辑
摘要: PCI配置空间(PCI Configuration Space)PCI设备(PCI device)都有一个配置空间,大小为256字节,实际上是一组连续的寄存器,位于设备上。其中头部64字节是PCI标准规定的,格式如下:剩余的部分是PCI设备自定义的。PCI配置空间头部有6个BAR(Base Address Registers),BAR记录了设备所需要的地址空间的类型(memory space或者I/O space),基址以及其他属性。BAR的格式如下:可以看出,设备可以申请两类地址空间,memory space和I/O space,它们用BAR的最后一位区别开来。说到地址空间,计算机系统中,除 阅读全文
posted @ 2012-05-08 14:57 使命召唤 阅读(21716) 评论(2) 推荐(4) 编辑
摘要: 一、简单概述64位CPU,内部通用寄存器、指令寄存器、片内总线、ALU等是64位的,能够一次处理64位宽的数据,寻址64位地址空间,但指令长度不一定全是64位。64位系统总线,与64位CPU配套的北桥、南桥芯片组,拥有64位宽的数据总线、地址总线。64位OS,专门为64位CPU设计的OS,使用到了64位CPU指令。如ubuntu、win7就区分32位和64位版,其中64位版只能用于在64位CPU上,32位版则可以同时用于32位CPU和64位CPU,这是由于64位CPU兼容32位CPU指令。64位应用程序,只能在64位OS+64位CPU上运行,因为它用到了64位CPU指令;而32位应用程序,则可 阅读全文
posted @ 2012-05-08 14:48 使命召唤 阅读(649) 评论(0) 推荐(0) 编辑
摘要: 安装完VMware后,宿主机上会多出以下虚拟设备:VMnet0,用于桥接模式下的虚拟交换机。VMnet1,用于Host-only模式下的虚拟交换机。VMnet8,用于NAT模式下的虚拟交换机。VMware Network Adapter VMnet1,在Host-only模式下,宿主机用于与虚拟机通信的网卡。VMware Network Adapter VMnet8,在NAT模式下,宿主机用于与虚拟机通信的网卡。1. Bridge(桥接)桥接,就是利用交换机(网桥),将多个节点组成一个子网。VMware的桥接模式就是将虚拟机里的网卡与宿主机的网卡都连接到一个虚拟交换机之上,然后虚拟交换机通过宿 阅读全文
posted @ 2012-05-08 14:46 使命召唤 阅读(1367) 评论(0) 推荐(1) 编辑
摘要: 交换机(网桥)是数据链路层上的设备,用于将同一个子网的多个节点连接在一起,没有进/出口之分。它只能处理MAC地址,不能处理IP地址。与路由器不同,它内部没有网络适配器,即没有IP和MAC地址,只有端口。也就是说,它对接收到的数据包,只负责解开MAC地址,查询对应的端口,然后发送出去,并不管数据包的进端口和出端口是否属于同一个子网。一方面,这一高效简洁的处理方式,使其很适合用于组织同一子网的节点;另一方面,实际上可以利用它来组织不同子网的节点。实际上,用交换机连接的两个计算机,只要它们知道对方的MAC地址,就能进行链路层的通信,进一步,再知道对方的IP地址,就能进行网络层及更上层的通信了。原因是 阅读全文
posted @ 2012-05-08 14:44 使命召唤 阅读(13622) 评论(0) 推荐(1) 编辑