搜档网
当前位置:搜档网 › swap命令

swap命令

swap命令
swap命令

swap交换分区一般只在xen VPS有这种功能,openvz则没有。swap交换分区可以增加一定量的内存使用,但增加swap分区的最重要的作用是防止网站流量突然增大而导致系统分配内存不够用而死机。如果你的VPS长期处理使用swap的状态下,建议你检查下程序或VPS,或者升级更大的内存的VPS,因为使用swap交换分区,会使服务器的性能降低很多,导致访问速度变慢。下面我们来看看如何增加swap交换分区。

1、以root权限登录SSH,键入如下命令创建512M的swap文件(1024 * 512MB = 524288).

1dd if=/dev/zero of=/swapfile1 bs=1024 count=524288

2、创建Linux交换文件

2mkswap /swapfile1

3、立即激活/swapfile1交换文件

3swapon /swapfile1

4、设置系统自激活交换文件。编辑/etc/fstab文件,并增加如下第二行代码。

4vi /etc/fstab

5/swapfile1 swap swap defaults 0 0

5、重启系统,使用free -m查看swap大小。

一、增加Swap区

1、使用命令查看系统的内存大小

free -m

可以看出内存大小为503(装的时候配置是512的),swap都为0。

2、增加swap分区

使用dd命令创建一个swap分区

dd if=/dev/zero of=/home/swap bs=1024 count=1024000

这样就建立一个/home/swap的分区文件,大小为1G,再用swapon命令把这个文件分区变成swap分区

/sbin/swapon /home/swap

再用free -m查看一下,可以看出swap有大小了。

这样还没完成,因为reboot重启系统后,swap分区又变成0了。

为防止重启后swap分区变成0,要修改/etc/fstab文件

vi /etc/fstab

在文件末尾加上

/home/swap swap swap default 0 0

这样就算重启系统,swap分区还是有值。

二、删除swap分区

1、先停止swap分区

/sbin/swapoff /home/swap

2、删除swap分区文件

rm -rf /home/swap

3、修改/etc/fstab文件,把/home/swap swap swap default 0 0 这行删除。

这样就能把手动增加的分区删除了。

PS:1、增加删除swap的操作只能使用root用户来操作。

2、装系统时分配的swap分区貌似删除不了。

3、swap分区一般为内存的2倍,但最大不超过2G

java中实现swap函数的几种方式

佳音校区老师告诉你java中实现swap解决方案 由于java中“对基本类型的变量是不支持引用传递的”,所以根本不能像c/c++那样直接传地址,但是可以如下解决: 1.使用数组传值 public class TestSwap2 { //由于java中的参数传递都是采用值传递的传递方式,因此不能使用引用符号。 //可以使用重新赋值的方法 private static int[] swap(int a, int b){ int temp = a; a = b; b = temp; return new int[]{a,b}; } //下面是主函数的实现 public static void main(String[] args){ int a = 4; int b = 6; System.out.println("before swap "+"a的值="+a+" b的值="+b); int[] swap = swap(a,b); a = swap[0];

b = swap[1]; System.out.print(a + " "); System.out.print(b); System.out.println("======"); System.out.println("after swap "+"a的值="+a+" b的值="+b); } } 2.采用类变量传值 public class TestSwap { /** * @param args */ //定义类变量 static int a = 3; static int b = 2; public static void main(String[] args) { TestSwap ts = new TestSwap(); System.out.println("before swap "+"a的值="+a+" b的值="+b); ts.swap(ts.a,ts.b); System.out.println("after swap "+"a的值="+a+" b的值="+b); } //改变的是类变量的值

Ext4,Swap分区教程(Recovery分区,非Linux系统下分区)

Ext4分区需要在Linux系统下才能进行分区处理,而我们不可能仅仅为了分一个Ext4而开虚拟机装Linux系统。(麻烦死) 因此,我们选择一个可以在手机端直接分出Ext4的Recovery版本。(请勿乱刷未经测试是否适用的Recovery版本) TF卡读写速度对Ext4的性能有着重要的关联! C2卡不建议使用Ext4,可能导致系统很卡的现像,建议使用Ext3。 C4,C6,C10卡均可使用Ext4,性能表现为:C4 < C6 < C10 新买的TF卡或者重新分区的话,Fat32里有重要数据的,必须备份,否则后果自负! 信息和个人程序,该备份的备份去,这就不多说了。 功能按键说明:本版本的Recovery模式下,导航键可以上下左右,中间黑色那个是确认键!返回键是“音量减少” 详细操作: 1. 在Recovery主界面下,选择“Partition sdcard”(将SD卡进行分区)进入分区功能界面,菜单及注释如下: (已有Swap分区及Ext分区的可跳过此步骤) Partition SD给SD卡分区 Repair SD:ext修复Ext分区

SD:ext2 to ext3将Ext2分区转换为Ext3分区 SD:ext3 to ext4将Ext3分区转换为Ext4分区 在这里我们选择“Partition SD”开始分区 ①Swap-size =MB使用上下键选择大小。确定键执行。软件多的,推荐96MB。 Swap分区需要ROM支持,如果ROM不支持或者不需要Swap分区的请选择“0 MB”不建立Swap分区。如果SD卡的读写 速度较慢,不建议设置Swap分区,否则系统性能不但得不到提升,反而会变卡。 ②Ext2-size = MB使用上下键选择大小。确定键执行。一般我们分512MB即可。 这里设置的就是我们所说的Ext分区的大小,具体依个人情况而定,基本上512MB够你装一大堆软件了。 ③第二步完成以后Recovery会自动将剩余空间设为Fat32分区。最后我们再次按下确定键执行分区。 至此,分区操作完成,下面我们将已经分好的Ext2分区转换为Ext3或Ext4分区。 2. 首先,确认你已经分出Fat32和Ext分区。由于你所升级的只是Ext2分区,所以Fat32分区里面的数据,不会被格式化! 在分区功能主界面中选择"SD:ext2 to ext3" 将Ext分区由Ext2转换为Ext3,按下确

C++程序设计第一章函数编程题

6-1工作备忘录的生成(链表)(10分) 每天都要处理很多事务,为了更好地安排工作,希望在每天开始工作前,根据工作记录,生成工作备忘录。首先输入工作记录数(大于0的一个整数),再逐条输入各条工作记录,每条工作记录包括:工作名,开始时间,结束时间。假设每项工作的开始时间均小于它的结束时间,并且各项工作的开始时间互不相同。 我们的工作是需要把这些工作记录按开始时间排序并输出,在输出时,如果某项工作与若干项工作冲突(在做该项工作时,需要同时做其它工作),则在该工作名前加'*'。 函数接口定义: Node*add(Node*,Node*); voiddisplay(Node*); 裁判测试程序样例: #include #includeusi ngnamespacestd; structNode{ stringname; intstart; intend; Node*next; }; Node*add(Node*,Node*); voiddisplay(Node*); boolcheck(Node*head){ if(head==NULL||head->next==NULL)returntrue; Node*p=head->next; if(head->start>p->start)returnfalse; returncheck(p); } intmain(){ Node*head=NULL,*p; inti,repeat; cin>>repeat; for(i=0;i>p->name>>p->start>>p->end; p->next=NULL; head=add(head,p); } if(!check(head))cout<<"ERROR"<

Problem A 编写函数

Problem A编写函数:Swap (I) (Append Code) Time Limit: 1 Sec Memory Limit: 16 MB Submit: 6102 Solved: 4013 [Submit][Status][Web Board] Description 编写用来交换两个数的函数,使得“Append Code”中的main()函数能正确运行。 ----------------------------------------------------------------------------- 用C实现三个函数int_swap()、dbl_swap()、SWAP(),其中SWAP()是个带参宏。 用C++实现两个函数,都以swap()命名。 以上函数的调用格式见“Append Code”。这里不给出函数原型,它们的参数请通过main()函数自行确定。 Input 输入为4行,每行2个数。 Output 输出为4行,每行2个数。每行输出的两数为每行输入的逆序。 Sample Input 12 57 9 -3 -12 4 3 5 Sample Output 57 12 -3 9 4 -12 5 3

HINT “Append Code”中用到的头文件、全局变量或宏的定义应自行补充。Append Code #include usingnamespacestd; voidswap(double&a,double&b) { doublet=a; a=b; b=t; } voidswap(double*a,double*b) { double t=*a; *a=*b; *b=t; } voidswap(int*a,int*b) { int t=*a; *a=*b; *b=t; } intmain() { intx1, y1; cin>>x1>>y1; swap(&x1, &y1); cout<>x1>>y1; swap(x1, y1); cout<>x2>>y2; swap(&x2, &y2);

linux swap分区

最近看到有朋友在我的Blog中问关于Linux环境下swap分区设置的问题,问题如下:“需要设置一个10G的swap分区,是设置成单个10G的好呢,还是5个2G的,还是其他的方案,比如2个5G的分区?” 看来有必要再写一篇Blog来阐述一下这个问题。 在网络上我经常看到这样的经典问答: 问:我的内存大小是xxx,那么我建立的swap多少才合适? 答:大概物理内存的1倍即可。 我认为这种回答是很不负责任的,所谓1倍内存大小或2倍内存大小的swap分区设置,是给那些对Linux系统不是很熟悉的用户的简单建议,这种设置在桌面Linux下是没有什么问题的,最多是占用一些硬盘空间而已。但是在真正的生产环境下,这种设置是很不合理的一种设置。 一、swap分区大小是怎么确定的? 其实swap分区的大小设置是很考验Linux系统管理员水平的一件事情,swap的大小是这样决定的: ( 内存大小 Swap分区大小 ) * 80%或70% >= 程序需要占用总内存数如果系统内存大小已经大于系统中所有任务最大内存使用大小,那么就根本没有必要设置swap分区了,如果这个时候设置上,那么就是白白占用了那些硬盘空间(当然,如果硬盘足够富裕,可以忽略这些占用了)。 那么有的管理员就会说了:我不知道我系统中所有任务最大内存使用大小是多少啊! 我在这里给你一个方法,可以找到这个大小是多少,下面跟着我一步一步来: 1、用swapoff 关掉所有swap 然后正常运行任务,如果出现内存不足的提示,就需要逐步增加swap 2、一般来讲,物理内存达到256m,在安装时即可不用划分交换分区.。 3、可以在安装后建立交换分区,或者建立交换文件。 BTW:swap还有一个用处,就是在机器lock,出现问题的时候内存的内容会自动copy 到swap上面,这样可以有效防止机器故障带来内存中的内容忽然丢失的情况。 二、为什么swap分区不宜过大? 为什么 swap 分区不宜过大,这是由于 Linux 内存分配的特点——它会尽可能多地使用内存(包括swap 分区)。尽量使用内存的目的是加快 IO 处理的速度,比如关掉一个程序,原先占有的内存空间并不立即清空,下一次打开时就不用去硬盘找数据,而直接从内存中读取。但是如果虚拟内存过大,那么保留在内存缓冲区中的数据实际上还是在硬盘中,那对于加快速度就没有多大的作用了。 swap 分区对于物理内存小的机器是必不可少的,假设物理内存只有64M,而某个程序启动最少要256M,如果没有足够的虚拟内存,这个程序是根本打不开的(系统会报内存不足错误,甚至崩溃)。对于程序而言,物理内存和虚拟内存是没有任何区别的,它们只关心空间是否够大。在物理内存够用的情况下可以适当分配一些空间给 swap ,这仅仅是为了偶尔同时开很多大家伙时,防止出现内存不足错误。 三、swap是一个大分区还是多个小分区? 我记得有人说过在fedora和debian的文档中看到过说明,建议swap分区大小不要超过2G。 为什么是2G呢?我觉得首先是由于32位机的文件偏移指针是个无符号整型,所以单个文件偏移最大到2的31次方,也就是2G。其次,旧的文件系统对大文件的支持并不是

数值交换

数值交换 如果一个函数要修改传入参数的值,直接传值是不行的。因为这样只是在函数的栈中复制了参数的值,并没有修改实际的参数值。在C中可以通过将参数声明为指针类型达到目的。而在C++中,又多了一种选择,就是可以将参数声明为引用类型,实际上引用就是某种意义上得安全指针。 例题:将数a,b的值进行交换,并且不适用任何中间变量。 考点:两个变量值得交换方法。 出现频率:★★★★ 1#include 2 3void swap1(int &a,int &b) 4{ 5int temp=a; //适用局部变量temp完成交换 6a=b; 7b=temp; 8}; 9 10void swap2(int &a,int &b) 11{ 12a=a+b; 13b=a-b; 14a=a-b; 15}; 16 17void swap3(int &a,int&b) 18{ 19a^=b; // a^=b 等价于a=a^b 20b^=a; 21a^=b; 22}; 23 24int main(void) 25{ 26int a1=1,b1=2; 27int a2=3,b2=4; 28int a3=5,b3=6; 29int a=2147483647,b=1; 30

31swap1(a1,b1); //测试使用临时变量进行交换的版本 32swap2(a2,b2); //测试使用加减运算进行交换的版本 33swap3(a3,b3); //测试使用异或运算进行交换的版本 34 35printf(“after swap…\n”); 36printf(“a1=%d,b1=%d\n”,a1,b1); 37printf(“a2=%d,b2=%d\n”,a2,b2); 38printf(“a3=%d,b3=%d\n”,a3,b3); 39 40swap2(a,b); 41printf(“a=%d,b=%d\n”,a,b); 42 43return 0; 44} 解析: 以上的C++程序中友3个swap函数,都是采用引用的传参的方式。 ■swap1()采用的是教科书里常见的方式,用一个局部变量temp保存其中一个值来达到交换目的。当然,这种方式不是本题要求的答案。 ■swap2()采用的是一种简单的加减算法来达到交换a,b的目的。这种方式的缺点是做“a+b”和“a-b”运算时可能会导致数据溢出。 ■swap3()采用了按位异或的方式交换a,b。按位异或运算符“^”的功能是将参与运算的两数各对应的二进制为相异或,如果对应的二进制位相同,则结果为0,否则结果为1。这样运算3次即可交换a,b的值。 代码第31行~第33行调用3种swap函数。注意40行的调用,在swap2函数栈中的运算会有数据溢出发生。我们知道在32位平台下int占4个字节内存,其范围是-2147483648~2147483647,因此2147483647加1就变成了-2147483648。不过通过运行结果我们可以看到,虽然产生了溢出,但是交换操作依然是成功的。 答案 after swap… a1=2,b1=1 a2=4,b2=3 a3=6,b3=5 a=1,b=2147483647 注意: 采用程序代码中swap2和swap3的交换方式,swap2有可能发生数据溢出的缺点。相比较swap2,推荐swap3采用的按位异或的方式。

交换分区交换分区是硬盘中的一块区域目的是当内存使用太多的时候

交换分区 交换分区是硬盘中的一块区域,目的是当内存使用太多的时候,减轻内存的压力。当内存使用率超过某个阀值时,进程就会占用交换分区以释放内存空间给其他进程。 HPUX 要为每个系统中执行的进程reserve 同样大小的空间在交换分区中,即使这些交换空间不被使用,也依然要为进程预留不能被使用,以防内存不够时作数据交换,当预留的swap区用完时,系统就不能再启动新的进程。 传统上建议swap区是内存的2至3倍,但对于大内存系统,内存越大越不可能发生换页,如果按照这个原则分配swap区,会造成磁盘的浪费,所以HP 引进了伪交换的概念,伪交换只是逻辑意义上的交换区,没有占用任何物理空间,但对于操作系统来说,交换区大小为物理swap区和pseudo-swap(伪交换区)的总和,在HP11.11中,pseudo-swap是物理内存的3/4,在HP11.23中pseudo-swap 和物理内存大小一致。引进伪交换区后,不会发生交换的进程(如kernel进程)可以reserve伪交换区空间,不会reserve物理的swap区,这样大大减少了磁盘的浪费。 有了伪交换区后,物理swap区可以按以下公式计算或者设置为和内存大小一致。 以11.11为例: Swap(dev)=X pseudo-swap=75%physical memory APP/DB required memory=Y X+pseudo-swap=total swap=2Y+buffer cache+dynamic Swapinfo工具可以查看swap区的利用率,一般我们需要关心dev和total的利用率,dev表示物理swap区的使用情况,total表示总的swap区的使用情况,当dev使用率不为0,表明系统有换页发生,内存不足,当total使用率高时,表明系统总的swap区不足,可能导致新的进程无法创建,一般total的阀值设为80%,reserve表明物理swap区中有多少空间被reserver了。 Swapinfo命令示例如下: swapinfo -atm Mb Mb Mb PCT START/ Mb TYPE AVAIL USED FREE USED LIMIT RESERVE PRI NAME

把swap分区设置在手机内存上让swap分区的读写速度更快更省电减少sd卡的损伤

把swap分区设置在手机内存上,让swap分区的读写速度更快、更省电、减少SD卡的损伤 这是一个傻瓜化的教程,你只需要跟着作者一步一步的来就能成功,教程的目的是开启swap并开机起动,以swap 开在cache为例。第一步:首先,下载附件Swap in ROM.rar (330 Bytes, 下载次数: 1891 ) 解压得到两个文件90userinit 和CreatIMG.sh。。 第二步:将两个文件传到手机内存卡里, 第三步:下载re管理器,如果有请跳过这步。 第四步:用re管理器将CreatIMG.sh从内存卡复制到手机里的/cache目录中,长按CreatIMG.sh选择权限,勾选全部可运行复选框。 第五步:点击CreatIMG.sh运行,之后re选择刷新,会发现/cache目录多了个swap.img,长按它选择权限,勾选全部权限。 第六步:将90userinit复制到手机里的/system/etc/init.d/目录下,并用同样的方式给予权限,权限内容参考目录中的其它文件。 最后重启手机成功。 可用超级终端查看:su回车,free回车,swap分区不全是0,就是成功了

最后,如果你愿意用手机程序存储器的其它分区,如/data,或改变swap大小,则需要编辑两个文件, 在re中长按CreatIMG.sh和90userinit选“用文本编辑器打开”,内容分别如下 “ mount -o remount,rw /cache; swapoff /dev/block/loop7; dd if=/dev/zero of=/cache/swap.img bs=1024 count=20000; free; ” “ mount -o remount,rw /cache;losetup /dev/block/loop7 /cache/swap.img; mkswap /dev/block/loop7; swapon /dev/block/loop7; ” 只需吧文本中的/cache换车你想要的分区目录就行,如/data. 若要改变swap大小,则改变count=20000(即20m)中的数值即可。PS:虚拟内存不必要开太大,推荐开64M,下面是我开了swap的真相。 觉得爽的都顶起吧!!!!!

如何利用函数和指针交换两个数

1、利用函数交换两个数a和b的值,但是没有成功,为什么?函数的内部数值已经交换了!#include void main() { void swap(int,int); int a=3,b=5; swap(a,b); printf("a=%d,b=%d\n",a,b); } void swap(int m,int n) { int c; c=m;m=n;n=c; printf("m=%d,n=%d\n",m,n); } 运行结果:m=5,n=3 a=3,b=5 解释:主函数中a和b的值没有调换,这是因为当a和b的值传递给形参m和n,在swap 函数中只是对形参m和n的值进行了调换,而实际参数并没有被影响到! 2、修改上述程序,利用指针来实现调用函数交换值! #include void main() { void swap(int *,int *); int a=3,b=5; int *p1=&a,*p2=&b; swap(p1,p2); printf("a=%d,b=%d\n",a,b); } void swap(int *m,int *n) { int c; c=*m;*m=*n;*n=c; printf("*m=%d,*n=%d\n",*m,*n); } 运行结果:*m=5,*n=3 a=5,b=3 解释:本例中函数的参数是指针,也就是说传递给swap函数的是a和b在内存中的地址(不

是其值),这样对swap函数进行操作时,形参m、n和实参p1、p2指向的都是a和b,在swap函数内部交换了*m和*n的值,也就相当于交换了*p1和*p2的值,故最后的结果是主函数中a和b的值调换了! 3、再给这个程序修改一下: #include void main() { void swap(int *,int *); int a=3,b=5; int *p1=&a,*p2=&b; swap(p1,p2); printf("a=%d,b=%d\n",a,b); } void swap(int *m,int *n) { int *c; *c=*m;*m=*n;*n=*c; printf("*m=%d,*n=%d\n",*m,*n); } 解释:这个程序是有危险的,因为在swap函数中定义了一个指针变量c,但是没有给c赋初值,c有可能随意指向了存放系统参数的内存地址,这样,当进行*c=*m;*m=*n;*n=*c;这一步的时候可能会替换掉系统中重要的数值导致不可预知的情况发生! 可以稍加修改,在swap函数中给指针变量c赋个初值即可,也能达到交换主函数a和b值的目的! 如下:#include void main() { void swap(int *,int *); int a=3,b=5; int *p1=&a,*p2=&b; swap(p1,p2); printf("a=%d,b=%d\n",a,b); } void swap(int *m,int *n) { int *c,d; c=&d; *c=*m;*m=*n;*n=*c; printf("*m=%d,*n=%d\n",*m,*n);

【习题】函数调用

函数调用 【实验目的】: 1. 掌握函数的定义和调用方法。 2. 练习重载函数的使用。 3. 练习有默认参数值的函数的使用。 4. 练习使用系统函数。 5. 熟悉多文件工程结构。 【实验内容】: 1.编写函数int add(int x, int y),实现两个整型数据x,y的求和功能。 ·要求:使用Visual C++的Debug调试功能,记录在函数调用时实参和形参的值的 变化。 2.编写一个求x的n次方的程序int pow(int m, int n),计算m的n次方的结果。 3.利用上题中设计两个函数,设计一个求两个整数的平方和的程序。要求如下: a)主函数中调用求和函数: int add(int x, int y); b)求和函数add中调用上题设计的int pow(int m, int n)函数来计算其平方。

4.多文件程序结构:一个文件可以包含多个函数定义,但是一个函数的定义必须完 整的存在于一个文件中。要求: a)将add函数的声明部分放在头文件(add.h)中,实现部分放在源文件(add.cpp)中。 b)将pow函数的声明部分放在头文件(pow.h)中,实现部分放在源文件(pow.cpp) 中。 c)在main函数中调用add函数,计算从屏幕终端输入的两个数据之和。(main函 数的实现在main.cpp中) 5.将第2题设计的pow函数修改成为递归函数。

6.设计一个函数int fac(int n),利用函数的递归调用,来计算n!(n的阶乘)。 ·要求:单步调试程序,记录递归函数的调用过程。 7.使用系统函数pow(x,y)计算x y的值,注意包含头文件cmath。 8.从键盘输入两个数字,分别赋值给变量a、b,设计一个子函数swap,实现这两个数字交换次序。(注:根据需要自己设计函数的参数及返回值) ·要求:使用Visual C++的Debug调试功能,记录在函数调用时实参和形参的值的变化。 9.设计一个函数,求圆的面积。 要求:在主函数中调用子函数calArea计算圆的面积。并将calArea函数设计为内联函数。

增加、删除、修改LINUX SWAP区

在REDHAT LINUX 5.5 X86_64操作系统上安装ORACLE 10G 时发现,SWAP 分区只有786M,安装程序check时报错。 REDHAT LINUX 5.5 是安装在VMWARE 的一个虚拟机上。分配了一个10G的磁盘用于安装操作系统和补丁包,分配了一个10G的磁盘用于安装ORACLE软件(ORACLE RDBMS SERVER和GRID CONTROL)。本文就如何修改LINUX SWAP 区,进行了一些实验操作。 [root@linux_oracle ~]# fdisk -l Disk /dev/sda: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 1305 10377990 8e Linux LVM Disk /dev/sdb: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdb doesn't contain a valid partition table [root@linux_oracle ~]# vgs VG #PV #LV #SN Attr VSize VFree VolGroup00 1 1 0 wz--n- 9.12G 0 oravg 1 1 0 wz--n- 10.00G 96.00M [root@linux_oracle ~]# lvs LV VG Attr LSize Origin Snap% Move Log Copy% Convert LogVol00 VolGroup00 -wi-ao 9.12G LogVol01 VolGroup00 -wi-ao 768M lv_oracle oravg -wi-ao 9.90G [root@linux_oracle ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 VolGroup00 lvm2 a- 9.12G 0 /dev/sdb oravg lvm2 a- 10.00G 96.00M

函数

函数 C语言实际上是一种函数式语言,一个C语言源程序由一个main函数和其他函数组成。函数本质上是一段程序,用于完成某个特定的功能。除了主函数(main函数)外,其他函数均不能独立运行。使用函数之前要先定义函数,使用函数称为函数的调用。 1.函数的分类 (1)从用户使用的角度 标准函数:即库函数,例如printf函数、scanf函数; 用户函数:程序员在程序中定义的函数; (2)从函数的形式来看 无参函数:主调函数并不将数据传送给被调用函数; 有参函数:在主调函数和被调函数之间有数据传递; (3)从函数的作用范围来看 外部函数:允许其他文件中的函数调用; 内部函数:只限于本文件的其他函数调用它; 2.函数的定义 函数要先定义后使用,函数定义的一般格式: 函数类型函数名(形式参数表) { 声明部分 执行部分 } 说明: (1)函数类型:说明了函数返回值的类型,返回值为int型的函数定义时可以省略函数类型,即int为函数的默认类型;如果为void,则表示无返回值。 (2)函数名:遵循变量的命名规则,在同一个程序中,函数名必须唯一。 (3)形式参数表:可以为空,也可为多个参数,不管参数是否为空,圆括号都不能省略,形参必须说明其类型,且只能在本函数内部使用。 (4)函数体:分为说明部分和执行部分。说明部分包括变量的定义或所调用函数的声明,执行部分有执行语句组成。也可为空函数,即不产生任何操作。 (5)例如:float power(float x,int n) { int i; float t=1; for(i=1;i<=n;i++) t=t*x; return t; } 3.函数的调用 (1)当一个函数需要使用某个函数的功能时,就可以调用该函数,函数调用的一般形式为: 函数名(实际参数表) //有参数的函数调用 函数名() //无参数的函数调用 (2)对于有参函数的调用,应注意以下几个问题: 1)在定义函数时,形参并不占用内存的存储单元,只有在被调用时才给形参变量

LinuxSwap分区合理设置

什么是Swap? Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。Swap的原理是一个较复杂的问题,需要大量的篇幅来说明。在这里只作简单的介绍,在以后的文章中将和大家详细讨论Swap实现的细节。 众所周知,现代操作系统都实现了“虚拟内存”这一技术,不但在功能上突破了物理内存的限制,使程序可以操纵大于实际物理内存的空间,更重要的是,“虚拟内存”是隔离每个进程的安全保护网,使每个进程都不受其它程序的干扰。 Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。 计算机用户会经常遇这种现象。例如,在使用Windows系统时,可以同时运行多个程序,当你切换到一个很长时间没有理会的程序时,会听到硬盘“哗哗”直响。这是因为这个程序的内存被那些频繁运行的程序给“偷走”了,放到了Swap区中。因此,一旦此程序被放置到前端,它就会从Swap区取回自己的数据,将其放进内存,然后接着运行。 需要说明一点,并不是所有从物理内存中交换出来的数据都会被放到Swap中(如果这样的话,Swap就会不堪重负),有相当一部分数据被直接交换到文件系统。例如,有的程序会打开一些文件,对文件进行读写(其实每个程序都至少要打开一个文件,那就是运行程序本身),当需要将这些程序的内存空间交换出去时,就没有必要将文件部分的数据放到Swap空间中了,而可以直接将其放到文件里去。如果是读文件操作,那么内存数据被直接释放,不需要交换出来,因为下次需要时,可直接从文件系统恢复;如果是写文件,只需要将变化的数据保存到文件中,以便恢复。但是那些用malloc和new函数生成的对象的数据则不同,它们需要Swap空间,因为它们在文件系统中没有相应的“储备”文件,因此被称作“匿 名”(Anon ymous)内存数据。这类数据还包括堆栈中的一些状态和变量数据等。所以说,Swap空间是“匿名”数据的交换空间。 如何设置Swap分区大小 我记得曾经有人对Swap分区大小的设置这样评论过:“只要不怕浪费硬盘的话越大越好,因为linux内核在物理内存完全用完之前不会去动swap” 不过根据我的经验,可能不是这样喔!太大的swap 空间会造成kernel 以为有巨大的内存空间而毫不节制的想要把数据捉进内存中,从而导致kernel 一直在做memory swap,连带拖慢系统响应时间。老实说,1G RAM 如果不跑p2p 之类的东西,那设个256MB 就够用了;有2G 的话连设都不要设。另外如果说真的因为某一软件确实需要巨大内存空间才能运作的话,那只好在swap 上动手脚,但为了效能最好分散在多个实体硬盘上(等于类似raid 效果)! 其实如何设置Swap分区的大小是最能检查一个Linux系统管理员的水平的测试,Swap到底该如何设置呢?我是这样认为的:首先我们需要了解这台服务器都要运行哪些程序、他们各自占用的内存大小为多少,经过确切的检查后,Swap分区的大小可以这样确定: ( 内存大小+ Swap分区大小) * 80%或70% = 程序需要占用总内存数 Swap分区在程序测试期间也有很大的用途,例如管理员能够通过Swap分区的使用状况,监测系统内存是否出现泄露,同时对Web项目等应用也可以提供一个比较好的流量峰值缓冲作用。一个Linux系统管理员要能够通过监测Swap分区的使用情况,对系统、程序有一个合理的评价。 系统性能监视 Swap空间的分配固然很重要,而系统运行时的性能监控却更加有价值。通过性能监视工具,可以检查系统的各项性能指标,找到系统性能的瓶颈。本文只介绍一下在Solaris下和Swap相关的一些命令和用途。最常用的是Vmstat命令(在大多数Unix平台下都有这样一些命令),此命令可以查看大多数性能指标。

swapper2分区及使用

巧建虚拟内存,提高手机运行速度。 作者:木棉藤吉时间:2011-7-25 11:18:00 编辑:木棉藤吉来源:网络转载 DroidSwap是用来解决仅配备256MB RAM及以下的安卓手机,运行太多应用程序造成后台软件自动关闭、运行不流畅及卡等现象,尤其适合HTC G1(192MB RAM)、G2和G3(288MB RAM)、华为U8500(256MB RAM)等运行内存较小的安卓手机其他也可使用。 1.合理设置swap分区: DroidSwap的使用方法与“一键省电”类似,都是只需按一下按钮即可看到效果,不过在使用前需要简单设置:安装好该APK软件后,按“Menu”键进入“Configuration”(配置),在下拉菜单中选择“Swap place”选项,为新分区起个好记的名字即可。 2.设置虚拟内存大小: 接着进入“Swap size”选项设置分区大小,此处建议将分区大小设置在64MB以下。注意,笔者测试过选择96MB或128MB,均出现适得其反的效果,虚拟内存太大,读取速度变慢,性能会下降。但如果是高速卡可选256MB,普通卡建议最大128MB,比较稳定。

3.一键启动Swap分区: 在主界面单击顶部“ON”按钮开始启动Swap分区。整个过程大约持续1-2分钟,期间会有几个“Fail”(失败);不要惊慌,这是因为DroidSwap需先加载后取得ROOT 权限所致。第一次“ON”显示完成后,再一次单击“ON”直到出现“ALL DONE”启动成功。

用过Linux系统的机油都知道,Linux系统为了最大程度的适用低配置机器,而专门设置了了一个Swap交换分区,以减少对硬件的要求。Android是基于Linux的,这种方式同样可以应用在Android手机里。也就是扩展Android手机硬件的内存空间! Swap分区是什么? Swap分区,即交换区,Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。有点像Windows里的虚拟内存,就是减轻物理内存的负担(扩大物理内存),把内存中暂时不用(或者长久不用的数据)先放到swap上,用的时候在掉到内存。 为什么要对存储卡进行分区 给个最简单的例子、Neo同时运行QQ、UC、Opera Mini、飞信、人人、 Labyrinth、Twidroid、iReader的时候、 切换任务往往都会出现某个程序掉线、或者强制关闭的、 (当然、没有谁这么蛋疼开这么多进程、

Linux 统计当前所有进程使用swap分区的情况

Linux 统计当前所有进程使用swap分区的情况 前言 若操作系统的物理内存用完了,则就会用到swap(虚拟内存)。系统就会跑得很慢,但仍能运行;如果 swap分区用完了,那么系统就会发生错误。通常会出现“Application is out of memory”的错误,严重时会造成服务进程的死锁。操作系统无法正常运行,所以我们要高度重视内存使用,下面我们就来说一说,怎么统计哪些进程使用了 swap分区,查看swap的方法有许多,下面我们就来一个个说明! 1. free 命令 free –m 命令中只能查看当前swap分区的使用情况,但不能查看具体哪些进程使用了swap! 2. top 命令 CentOS 5.5 (top) top 命令能查看swap总量和使用情况,我们还可以使用快捷键查看,top+f+p 来查看!

并不是实际的使用swap,而是VIRT-RES得来的,就是虚拟内存中所使用过的swap 部分,并不能得到我们想要的结果! CentOS 6.0-6.4 (top) 这样就明显看出是取出的每个进程的swap,能很方便的查看哪些进程使用了swap。从中也能看到一个信息,那就是读取了/proc/#/status ! 3. vmstat 命令 vmstat 也不能查看哪个进程使用了swap,我们只能看到,swap --- si 与 so,下面我们简单说明一下! Memory(内存): ?swpd: 使用虚拟内存大小 ?free: 可用内存大小 ?buff: 用作缓冲的内存大小 ?cache: 用作缓存的内存大小 Swap (虚拟内存): ?si: 每秒从交换区读到内存的大小 ?so: 每秒写入交换区的内存大小 4. shell 查看 在Linux内核 2.6.16中引入了一个系统内存接口特性,这个接口位于 /proc/$pid/目录下的smaps文件中,一看内容发现是进程内存映像信息,比同一目录下的maps文件更详细些! [root@localhost ~]# cat /proc/1/smaps

安卓刷机必看:基础必备全面接触ext3和swap分区大小的问题

【前言】 很多人买HD2,可能是别人推荐,又或者冲着什么电容屏,4.3寸屏幕,1GHz处理能力,很薄。等等,这都没关系。不管为了什么,买就是为打电话的。如果你是新买的,而且没用过Windows Mobile (WM)的手机系统,那么建议先用一到二个月,在网上多转转,再考虑看这篇帖子。(我是新机买来只用了二分钟就刷了,那是因为要试机)由于涉及的内容较多,本人水平也有限,难免有错漏的地方,请各位大大指正。 HD2是原生Windows Mobile 6.5的系统,原生就是出厂的意思,6.5是版本(简称WM6.5)。是Microsoft微软公司开发专门用于智能手机的手机系统之一,是HTC采用Microsoft公司开发WM系统的T 系列产品之一。 那为什么HD能支持Android或者WP7呢? 首先从硬件上看HTC的G系和T系区别不大,G系所采用的Android系统是google公司在Linux内核基础上开发。因此G系和T 系手机相互运行对方系统也有可能。而HD2的WM内核指令集与Linux内核指令集在硬件层面刚好一致。因此运行Android是完全可以的。 为什么要用Android呢? 是因为Android系统使用起来更人性化,大家都喜欢iphone,那是它使用Unix的内核,而Unix内核更贴近于Linux,因而大家知道iphone,Android手机用起来非常简单。 那么我们应该怎么做呢?如何才能用到好用的Android呢!

这里推荐MIUI,MIUI是一个中国原创的Android Rom开发小组,2010年8月16日,首个内测MIUI ROM发布,并迅速引发关注。在历时68天的两轮内测中持续发布了159项贴近用户的细节改进。MIUI ROM与MIUI官方论坛紧密结合,采用独立系统更新模块与测试用户保持亲密联系。MIUI在9月17日发布了全球首个Google Nexus One机型的收音机程序,此项创新受邀加入国际团队CyanogenMod的代码库。MIUI是在Android内核基础上做的新的界面开发。使用简便,是因为MIUI核心是Android系统,这对于新手来说是了解Android系统一个很好的进入点。 【简单了解认知刷机相关常识】 1、什么是ROM? ROM全名为Read Only Memory,通常指安装在手机上的操作系统相当于电脑上的Windows一样 2、什么是刷ROM? 刷ROM即将新的ROM刷入手机,相当于重装系统。ROM部分包含:IPL、SPL、OS、EXTROM、RADIO、STORAGE等,但我们绝大多数人都不会这些包含涉及到核心层面的东西,为了降低刷入的风险。我们只需下载合适的刷机ROM即可 3、什么是SPL,为什么要破解(解锁)? SPL全称SecondProgramLoader,意为第二次装系统,就是负责装载OS操作系统到RAM中,SPL损坏可以通过刷入原始的ROM版本来实现重写SPL,由于手机在出厂的时候对机器内部核心的CID地址

Swap交换分区设置

服务器交换分区(Swap) 设置 周末的时候HBase集群一台子节点宕机,查看Ganglia及内存使用情况,发现节点Swap空间耗尽,但奇怪的是,系统物理内存却还是非常的富足。我们都知道Swap空间的作用: Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。 Swap配置对性能的影响: 分配太多的Swap空间会浪费磁盘空间,而Swap空间太少,则系统会发生错误。如果系统的物理内存用光了,系统就会跑得很慢,但仍能运行;如果Swap空间用光了,那么系统就会发生错误。例如,Web服务器能根据不同的请求数量衍生出多个服务进程(或线程),如果Swap空间用完,则服务进程无法启动,通常会出现“application is out of memory”的错误,严重时会造成服务进程的死锁。因此Swap空间的分配是很重要的。 那么,真的是当系统物理内存不够用的时候,系统才会使用Swap空间吗?否!他娘的。。。 其实虚拟内存并不是等到物理内存用尽了才使用的,是否尽量的使用或不使用swap在内核空间有一个参数控制。 cat /proc/sys/vm/swappiness 60 swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

相关主题