摘要:
xshell有个配套的xftp用来传输文件到远程主机,学过ftp协议后想验证一下ftp server监听的端口,奇怪的是找不到,而xftp居然也正常工作,好奇百度了一下,ssh协议是支持传输文件的。有空补充完整! 阅读全文
随笔分类 - linux
VIM工具备忘
2015-12-12 14:38 by 放作夥, 165 阅读, 收藏,
摘要:
vim的命令总结,不定时更新1.切换编辑文件:e /usr/local/src/a.txt2.分屏:vs /usr/loacl/src/a.txt (竖着分屏):sp/usr/loacl/src/a.txt (横着分屏)另外切换光标用ctrl+ww3.整行缩进:13,15 (13到15行向右缩进... 阅读全文
(转)Signal handling in Linux
2015-05-20 13:17 by 放作夥, 327 阅读, 收藏,
摘要:
IntroductionPerhaps any engineer developing for Linux encounters this problem. What’s is the right way to terminate the program? What are the ways to ... 阅读全文
Unix哲学
2014-07-19 13:14 by 放作夥, 352 阅读, 收藏,
摘要:
模块原则 (使用简洁的接口拼合简单的部件)计算机编程的本质就是控制复杂度要编写复杂软件而又不至于一败涂地的唯一方法就是降低其整体复杂度——用清晰的接口把若干简单的模块组合成一个复杂的软件。如此一来,多数问题只会局限于某个局部,那么就还有希望对局部进行改进而不至牵动全身。清晰原则 (清晰胜于技巧)维护... 阅读全文
linux下的计时器
2014-03-11 10:25 by 放作夥, 2847 阅读, 收藏,
摘要:
最近看排序算法的资料,想测一下各算法的运行时间才发觉没有查过计时器的资料,以前只听说过定时器。刚开始想到的是alarm信号,然后接收到信号时间量就加1,后来发现这是秒级的精度,根本达不到要求,搜了一下struct timeval能达到微秒级的计时精度#include #include #include int main() { struct timeval tv1,tv2; gettimeofday(&tv1,0);sleep(2); gettimeofday(&tv2,0); printf("tv2_sec-tv1_sec; %d\n",tv2.tv_se 阅读全文
Linux内存地址空间
2014-02-26 21:51 by 放作夥, 2114 阅读, 收藏,
摘要:
Linux虚拟内存的大小为2^32(在32位的x86机器上),内核将这4G字节的空间分为两部分。最高的1G字节(从虚地址0xC0000000到0xFFFFFFFF)供内核使用,称为“内核空间”。而较低的3G字节(从虚地址0x00000000到0xBFFFFFFF),供各个进程使用,称为“用户空间”。因为每个进程可以通过系统调用进入内核,因此,Linux内核空间由系统内的所有进程共享。于是,从具体进程的角度来看,每个进程可以拥有4G字节的虚拟地址空间(也叫虚拟内存)。 每个进程有各自的私有用户空间(0~3G),这个空间对系统中的其他进程是不可见的。最高的1GB内核空间则为所有进程以及内核所共享. 阅读全文
(转)详谈高端内存和低端内存
2014-02-16 17:35 by 放作夥, 4402 阅读, 收藏,
摘要:
一、高端内存和低端内存的划分Linux物理内存空间分为DMA内存区(DMAZone)、低端内存区(NormalZone)与高端内存区(HighmemZone)三部分。DMAZone通常很小,只有几十M,低端内存区与高端内存区的划分来源于Linux内核空间大小的限制。二、来源:过去,CPU的地址总线只有32位,32的地址总线无论是从逻辑上还是从物理上都只能描述4G的地址空间(232=4Gbit),在物理上理论上最多拥有4G内存(除了IO地址空间,实际内存容量小于4G),逻辑空间也只能描述4G的线性地址空间。为了合理的利用逻辑4G空间,Linux采用了3:1的策略,即内核占用1G的线性地址空间,用 阅读全文
/dev/zero
2013-12-13 11:56 by 放作夥, 803 阅读, 收藏,
摘要:
在类UNIX操作系统中,/dev/zero是一个特殊的文件,当你读它的时候,它会提供无限的空字符(NULL,ASCIINUL, 0x00)。其中的一个典型用法是用它提供的字符流来覆盖信息,另一个常见用法是产生一个特定大小的空白文件。BSD就是通过mmap把/dev/zero映射到虚地址空间实现共享内存的。下面的方法可以用于破坏分区数据:# 请不要执行下列代码,除非你试图破坏分区上的全部数据! dd if=/dev/zero of=/dev/ 创建一个名为'foobar'大小为1MB的文件,以"0"填充:dd if=/dev/zero of=foobar co 阅读全文
(转)Linux ./configure --prefix命令
2013-12-04 19:21 by 放作夥, 300 阅读, 收藏,
摘要:
源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install),具体的安装方法一般作者都会给出文档,这里主要讨论配置(configure)。Configure是一个可执行脚本,它有很多选项,使用命令./configure –help输出详细的选项列表,如下:-bash-3.00# ./configure --helpUsage: configure [options] [host]Options: [defaults in brackets after descriptions]Configuration:--cache-file=FILE c.. 阅读全文
(转)linux下tty,控制台,虚拟终端,串口,console(控制台终端)详解
2013-10-31 20:42 by 放作夥, 1172 阅读, 收藏,
摘要:
1。终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念.一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两种.控制台是另一种人机接口, 不通过终端与主机相连, 而是通过显示卡-显示器和键盘接口分别与主机相连, 这是人控制主机的第一人机接口.个人计算机只有控制台,没有终端,但可以在串口上连一两台字符哑终端. 但是linux偏要按POSIX标准把个人计算机当成小型机来用,那么就在控制台上通过getty软件虚拟了六个字符哑终端(或者叫控制台终端tty1-tty6)(数量可以在/etc/inittab里自己调)和一个图 阅读全文
内核驱动模块的Makefile模板
2013-10-24 13:28 by 放作夥, 1053 阅读, 收藏,
摘要:
单文件Makefileifneq ($(KERNELRELEASE),)obj-m := hello.oelseKDIR := /lib/modules/2.6.18-53.el5/buildall: make -C $(KDIR) M=$(PWD) modulesclean: rm -f *.ko *.o *.mod.o *.mod.c *.symversendif多文件的Makefileifneq ($(KERNELRELEASE),)obj-m := mymodule.omymodule-objs := file1.o file2.o file3.oelseKDIR := /lib/mo 阅读全文
inode是什么
2013-10-22 22:26 by 放作夥, 840 阅读, 收藏,
摘要:
一.非编程概念的inode储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。inode的内容inode包含文件的元信息,具体来说有以下内容: * 文件的字节数 * 文件拥有者的User ID * 文件的Group ID * 文件的读、写、执行权限 * 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。 * 链接数,即有多少文件名指向这个inode * 文件数据block的位置除了文件名以外的所有文件信息,都 阅读全文
写时复制(copy-on-write)
2013-10-12 22:27 by 放作夥, 281 阅读, 收藏,
摘要:
传统的fork()系统调用直接把所有的资源复制给新创建的进程。这种实现过于简单并且效率低下,因为它拷贝的数据或许可以共享(This approach is significantly naïve and inefficient in that it copies much data that might otherwise be shared.)。更糟糕的是,如果新进程打算立即执行一个新的映像,那么所有的拷贝都将前功尽弃。Linux的fork()使用写时拷贝(copy-on-write)页实现。写时拷贝是一种可以推迟甚至避免拷贝数据的技术。内核此时并不复制整个进程的地址空间,而是让父 阅读全文
多线程
2012-07-10 11:41 by 放作夥, 291 阅读, 收藏,
摘要:
前言:如果调度策略失败,那么召唤出来的线程简直就是群魔乱舞#include <stdio.h>#include <pthread.h>#define BUFFER_SIZE 16 // 缓冲区数量struct prodcons{// 缓冲区相关数据结构int buffer[BUFFER_SIZE]; /* 实际数据存放的数组*/pthread_mutex_t lock; /* 互斥体lock 用于对缓冲区的互斥操作 */int readpos, writepos; /* 读写指针*/pthread_cond_t notempty; /* 缓冲区非空的条件变量 */pth 阅读全文
信号的阻塞
2012-06-13 10:59 by 放作夥, 2123 阅读, 收藏,
摘要:
信号的阻塞就是让系统暂时保留信号留待以后发送。(注意:不是不发送,而是延迟发送)一般情况下信号的阻塞只是暂时的,只是为了防止信号打断敏感的操作。1 信号集所有的信号阻塞函数都使用称作信号集的数据结构来表明受到影响的信号。每一个操作都包括两个阶段:创建信号集,传递信号集给特定的库函数。下面说明信号集和相关的数据类型:sigset_t:这个数据类型用来代表信号的集合,有两种方法对它进行初始化。一种是通过函数sigemptyset()使之不包含任何信号,然后用 sigaddset()函数加入需要的信号。另一种方法是通过函数sigfillset()使之包含所有信号,然后通过sigdelset()函数删 阅读全文
make简介
2012-06-11 17:12 by 放作夥, 386 阅读, 收藏,
摘要:
首先make可以简单甘分为make_zhi()同埋ni_make(a)两种带参数同埋不带参数嘅函数。博君一笑啫,切入正题。。。。make对Makefile进行处理,将距变成shell可执行嘅脚本,最后由shell解释器来执行有make翻译过嘅脚本。并且系翻译一句然后shell执行一句^-^ make中有潜规则:只要make看到一个.o文件,它就会自动甘把对应的.c文件加到依赖文件中,而且gcc-c.c都会被推导出来就好似/*makefile*/CC=gccOBJ=main.omytool1.omytool2.omake:$(OBJ)$(CC)-omain$(OBJ)main.o:mytool1 阅读全文