elenna 的个人资料๑۩ﺴ 猪猪艾美丽的学习乐园日志列表留言簿 工具 帮助

๑۩ﺴ 猪猪艾美丽的学习乐园

正所谓“学海无涯苦做舟”

Let's study together~~学习也可以很有乐趣~~

让我们交流学习的心得吧^_^

请稍候...
很抱歉,您输入的评论太长。请缩短您的评论。
您没有输入任何内容,请重试。
很抱歉,我们当前无法添加您的评论。请稍后重试。
若要添加评论,需要您的家长授予您相应权限。请求权限
您的家长禁用了评论功能。
很抱歉,我们当前无法删除您的评论。请稍后重试。
您已超过了一天之内允许提供的评论数上限。请在 24 小时后重试。
因为我们的系统表明您可能在向其他用户提供垃圾评论,您的帐户已禁用了评论功能。如果您认为我们错误地禁用了您的帐户,请联系 Windows Live 支持部门
完成下面的安全检查,您提供评论的过程才能完成。
您在安全检查中键入的字符必须与图片或音频中的字符一致。

elenna

职业
让我们用眼睛去看,用耳朵去听,用脑袋去思考,用心去感受吧!
3月11日

grub4dos---加载双系统中的linux!

1.进windows,下载、解压grub for dos。

2.安装grub4dos。复制grldr到c:\,修改boot.ini文件,在最后一行添加c:\grub="GRUB"。引号里面的内容可以随便写,它的作用主要是开机后windows引导菜单里显示的内容。如果看不到boot.ini文件,去掉查看->文件夹选项->隐藏系统保护文件和选中“显示所有文件”。

3.重启系统,在windows的启动引导菜单里,选择“GRUB”,系统完全交由grub控制。grub的功能还是很强的,可以直接从FAT、minix、FFS、ext2或ReiserFS分区读取Linux内核。这就意味着无论怎样它总能找到内核。这时会出现一个grub>提示符(进入grub后选择command line),其实它引导内核的步骤跟GNU grub是一样的。

4.手动加载Linux(所有命令均在grub>提示符下输入,使用tab键自动填补命令)

help命令可用于查看grub的所有命令格式。

cat (hd[0-n],y)/etc/fstab用于查看分区情况,以找到linux所在分区即分区类型为ext2。输入(hd0,2)意味着linux在第一个硬盘的第三个分区上。

首先键入root(hd0,2)用于设置包含操作系统内核的根设备。

然后键入kernel /boot/vmlinuz-xxx ro root=/dev/hda3(或root=LABEL=/)。kernel命令用于装载内核映像文件,vmlinuz-xxx是你内核文件的名字。后面的root=/dev/hda3表示内核文件所在的磁盘分区,ro表示以只读方式打开内核文件。

然后键入initrd /boot/initrd.img-xxx。initrd.img-xxx是一个镜像文件,类似ramdisk,把一段程序打包到img里。它的作用是在没有mount /分区以前,虚拟出一个/,然后执行其根目录下的一个脚本"linuxrc",做一些挂载scsi驱动类似的事情,如果你的磁盘并不是scsi磁盘的话,这步并不是必须的。

最后键入boot,引导进入linux。

5.将新的grub装入mbr。以root的身份登录,运行grub-install /dev/hda3,或者键入grub,然后在提示符下键入root (hd0,2),setup (hd0),把mbr的控制权抢回来了!

6.将windows加入grub启动菜单。root权限,修改/boot/grub/menu.lst。加入以下内容:

title Microsoft Windows XP Professional
root (hd0,0)
savedefault
makeactive
chainloader +1

参考:http://hi.baidu.com/opthome/blog/item/09ef04124bd18e55f919b80c.html

grub命令行用法 http://hi.baidu.com/realxfliu/blog/item/f6fe14e96463b83fb90e2d35.html

 

PS:另一种方案---windows下安装grubfordos后, 拷贝原linux系统/boot/grub/menu.lst到c:\下(需要在重新安装windows前保存)。但我采用这种方案时,在kernel、initrd后的savedefault命令出错,估计要修改menu.1st,去掉savedefault命令。

8月11日

《NS与网络模拟》学习13——完整例子

       通过MFlood协议的添加,可以总结出以下的大概流程:

1.添加协议类:

   1)添加自己的Agent类,重载recv()、command()等函数

   2)创建对应的TclClass类

   3)当添加的是无线自组网下的路由协议时,需要修改NS的系统Tcl代码,使得当设定路由协议时会调用我们新增加的Agent/NewAgent类。(~ns/tcl/lib/ns-lib.tcl)

2.增加包头类型:

   1)定义自己的hdr_newhdr结构

   2)通过PacketHeaderClass类绑定

   3)修改~ns/tcl/lib/ns-packet.tcl使得新加入的包头类型被激活

   4)如果想要创建新的包类型,修改~ns/common/packet.h,将名字与包类型绑定

3.修改~ns/Makefile文件,增加对新类的编译。编译代码->调试。。。

4.初步测试:编写简单的场景文件,研究trace文件

5.可以利用setdest和cbrgen工具编写复杂的测试场景文件,并多次测试;应用gawk等对trace文件进行分析;利用画图软件绘测出所需图像;利用nam查看运行过程。

《NS与网络模拟》学习12——ns中的小工具

一.cbrgen(~ns/indep-utils/cmu-scen-gen)

   cbrgen用来生成传输负载,可以产生TCP流或者CBR流。 使用方法如下:

   ns cbrgen.tcl [-type cbr|tcp] [-nn nodes] [-seed seed] [-mc connections] [-rate rate]

                      -type tcp流或cbr流              -nn 节点数  
                      -mc 节点间的最大连接数          -rate  每个连接间的流的负载数
                      -seed  指定随机数种子

二.setdest(~ns/indep-utils/cmu-scen-gen/setdest/)

   用来随机生成无线网所需的节点运动场景,使用前需make。使用方法如下:

   ./setdest   -v <1> -n <nodes> -p <pause time> -M <max speed> 
                   -t <simulation time> -x <max X> -y <max Y>

    或:./setdest   -v <2> -n <nodes> -s <speed type> -m <min speed> -M <max speed>
                         -t <simulation time> -P <pause type> -p <pause time> -x <max X> -y <max Y>

    其中,speed type为uniform/normal,pause type为constant/uniform

    以上两个工具产生的文件均可采用source命令加入到tcl文件中,注意产生的文件用到了诸如node_数组变量和god_变量,需要在tcl脚本中预先建立。

三.threshold工具(~ns/indep-utils/propagation)

    用来在无线网络中,计算在某种传播模型下,如何设定接收功率阈值来控制无线传输的范围。

    先编译得到可执行文件:g++ threshold.cc -o threshold

    命令如下:threshold -m <propagation-model> [other-options] distance

common parameters: -Pt <transmit-power> -fr <frequency> -Gt <transmit-antenna-gain>
                             -Gr <receive-antenna-gain> -L <system-loss>
for two-ray ground model: -ht <transmit-antenna-height> -hr <receive-antenna-height>
for shadowing model: -pl <path-loss-exponent> -std <shadowing-deviation> -d0 <reference-distance> -r <receiving-rate>

四.nam(Network Animater)

    nam的功能是根据网络模拟软件或真实环境里的特定格式的trace输出文件来运行动画,例如,trace文件常常来自NS模拟器或者Tcpdump软件的输出。

    NS中控制nam动画显示的命令如下:

1.节点:$node color [color] ;#设定节点的颜色
          $node shape [shape] ;#设定节点的形状
          $node label [label] ;#设定节点的名称
          $node label-color [lcolor] ;#设定节点显示名称的颜色
          $node label-at [ldirection] ;#设定节点名称的显示位置
          $node add-mark [name] [color] [shape] ;#增加注释
          $node delete-mark [name]              ;#删除注释

2.链路和队列:$ns duplex-link <attribute> <value>
                        attribute:orient、color、queuePos、label

3.Agent:

使用下面的命令就可以使想要显示的Agent以AgentName出现在节点附件的方框内:$ns add-agent-trace $Agent AgentName

《NS与网络模拟》学习11——gawk

       gawk是一种程序语言,对于资料的处理具有很强的功能,可以使用很短的代码轻易地完成对文本档案做修改、分析、提取和比较等处理。在NS的模拟结果分析中,经常用到gawk来进行数据分析和统计等。命令如下:

       gawk 'program' input-file1 input-file2 ...                                 程序代码较短
       gawk -f program-file input-file1 input-file2...                           程序较长

       gawk程序是由很多的pattern和action所组成的:pattern   {action}。功能是针对文件的每一行搜寻指定的模式(pattern),当一行里有符合指定的模式时,gawk就会在此一行执行指定的动作(action)。

       一些系统变量:RS——记录分割符(默认:\n)    FNR——目前的输入档案已经被读取的记录个数
                         NR——所有输入档案已经被读取的记录个数
                         FS——栏分隔符(默认:空白字符) NF——目前记录有多少个栏位
                         OFS——输出栏位分隔符(初始值:空格) ORS——输出记录分隔符(初始值:\n)

Pattern包括:

       /regular expression/——正则表达式,如exp~/regexp/,exp!~/regexp/

       /expression/——单一表达式,值不为0或字串不空时视为匹配

       pat1,pat2——指定记录的范围

       BEGIN、END——gawk在开始执行或要结束时会分别执行BEGIN或END指定的action

       null——对于每个输入记录皆视为符合Pattern

Action包括:

       Expression——算术运算、比较运算、布尔运算、条件运算等

       控制语句——if、while、do-while、for、break、continue、next(next file)、exit

       内建函数——数值方面的函数(sqrt、exp、log、sin、rand、srand)

                       字串方面的函数(index、length、match、sprintf、sub、gsub、substr、tolower、toupper)

                       输入输出的内建函数(close、system)

        使用者定义的函数

8月10日

《NS与网络模拟》学习9——代理和应用

一.Agent     

   agent代表了网络层分组的起点和终点,创建新型Agent:

      1)确定继承结构
      2)定义recv()方法和timeout()方法
      3)构造所需要的定时器
      4)定义OTCL Linkage函数
      5)写OTCL代码访问该agent

      比较熟知的两个agent协议分别是UDP和TCP,介绍见书。

二.应用层

      应用层程序建立在运输层代理(transport agent)之上,分为两大类:流量发生器(traffic generator)和应用模拟器(simulated application)。流量发生器一般用在UDP代理之上,应用模拟器一般用在TCP代理之上。

      运输层代理的API函数:NS通过一系列预先定义的API函数来模仿sockets API的功能。运输层代理和应用层程序是如何通过API通信并相互配合进行工作的?

     1)将运输层代理绑定到节点上,如:
       set src [new Agent/TCP/FullTcp]
       set sink [new Agent/TCP/FullTcp]
       $ns attach-agent $node_(s1) $src
       $ns attach-agent $node_(k1) $sink
       $ns connect $src $sink
     2)将应用层程序连接到运输层代理上,如:
       set ftp1 [new Application/FTP]
       $ftp1 attach-agent $src
     3)通过系统调用使用运输层代理
        这些调用可以在Otcl或C++中执行,包括:send()、sendmsg()、closse()、listen()、set_pketype
     4)运输层代理对应用程序的回调,包括:recv()、resume()等

     四个主要的流量发生器为(Application/Traffic/~):Exponential(按照指数ON/OFF分布产生数据)、Pareto(按照Parento ON/OFF分布产生数据)、CBR(按照一个确定的速率产生数据)、Trace(按照一个trace文件产生数据)。Traffic/Trace类使用attach-tracefile方法将一个Traffic/Trace对象和一个特定的Tracefile对象结合起来。

     应用模拟器包括:Applicaiton/FTP(attach-agent、start、stop、produce、producemore、send n)
                          Application/Telnet