资源描述
《操作系统原理》实验报告
实验名称:
Linux随机进程调度算法实现“I
班级:
学号:
姓名:
日期:
2012/12/31
netstat这条命令是显示网络各种情况的命令,在不跟随任何参数被执行的情形下,将表示Active
Internet connections 和 ActiveUNIX domain sockets 的情报。
看看下面的输出信息:
这里是1正在通过ssh连接的情形[root@linux 〜]#netstat
Active Internetconnections (w/o servers)Proto Recv-Q Send-QLocal AddressForeignAddressState
tcp 00 ::ffff:192,168.1.81:ssh ::ffff: 192.168.1.56:4757 ESTABLISHEDActive UNIX domainsockets (w/o servers)
Proto RefCntFlags
Type
StateI-Node Path
unix 11
[]
DGRAM
5202
/dev/log
unix 2
[]
DGRAM
5997
@/var/run/hal/hotplug_socket
unix 2
[]
DGRAM
2536
@udevd
unix 2
[]
DGRAM
7474
unix 3
[]
STREAM
CONNECTED
5995 /var/run/dbus/system_bus_socket
unix 3
[]
STREAM
CONNECTED
5994
unix 3
[J
STREAM
CONNECTED
5974
unix 3
[]
STREAM
CONNECTED
5973
unix 2
[]
DGRAM
5933
unix 2
[]
DGRAM
5923
unix 2
[]
DGRAM
5876
unix 2
[]
DGRAM
5819
unix 2
[]
DGRAM
5805
unix 2
[]
DGRAM
5786
unix 2
[]
DGRAM
5723
unix 3
[]
STREAM
CONNECTED
5388
unix 3
[]
STREAM
CONNECTED
5387
unix 2
[]
DGRAM
5280
unix 2
[]
DGRAM
5210
[root@linux 〜]#
主要的选项:
- a显示所有socket,包括正在监听的。
- c每隔1秒就重新显示一遍,直到用户中断它。
- i显示所有网络接口的信息,格式同“ipconfig-e”。
- n以网络IP地址代替名称,显示出网络连接情形。
- r显示核心路由表,格式同“route-e”。
- t显示TCP协议的连接情况。
- u显示UDP协议的连接情况。
- v显示正在进行的工作。
以上的选项可以结合使用,例如我们想知道正在开放的TCP端口,可以用下面的形势执行 观察:
[root@linux -]#netstat -atActive Internetconnections (servers and established)
Proto Recv-Q Send-QLocal AddressForeignAddressStatetcp00*:617*LISTEN
tcp 00 *:sunrpc*:*LISTENtcp00 *:ipp*LISTEN
tcp 00 linux.xiaoqi.ddo.jp:smtp *:*LISTENtcp00 *:ssh*:*LISTEN
tcp 0 132 ::ffff:192.168.1.81:ssh::ffff:192.168.1.56:4757 ESTABLISHED[root@linux 〜]#
其他使用方法可以自己尝试…・.
Hostname这个命令是表示hostname和设置hostname用的,在不跟随任何选项被执行的情形下,将表 示现在的hostname,例如下面的输出:
[root@linux 〜]#hostname
[root@linux 〜]#如果是root的登陆情形下,可以更改hostname,例如我们把现在的hostname改称centos的 情形如下:
[root@linux 〜]#hostname centos|root@linux 〜]#hostname centos [root@linux 〜]#
ping这条命令是通过向目标地址发送ICMP信息包的方式,来确定目标主机是否在工作或网络联 通与否。参数是目标主机的IP地址,例如我们要知道自己的主机的网络配置是否正常,可 通过ping自己主机来判断,情形如下:
[root@linux〜]# pinglocalhost //这个地方的localhost可以用来代替,或目标地 址IP地址或域名,通常还用这条命令来访问DNS服务器来取得目标主机的IP地址或域名 等用法PING (127.0.0.1) 56(84) bytes ofdata.
64 bytes (127.0.0.1): icmp_seq=0 ttl=64 time=0.999 ms64 bytes (127.0.0.1): icmp_seq= 1 ttl=64 time=0.630 ms
一 ping statistics ---2 packetstransmitted, 2 received, 0% packet loss, time 1001ms // 注意这个地方有一个 0%表 示网络正常,当此处的X%的X是。以外的数字就说明网络有问题,或者当ping命令被执 行后,将会显示time out之类的字样。
rtt min/avg/max/mdev= 0.630/0.814/0.999/0.186 ms, pipe 2[root@linux 〜]#
Ping命令的主要选项如下:
- c数目在发送指定数目的包后停止。
- d设定SCLDEBUG的选项。
- f大量且快速地送网络封包给一台机器,看它的回应。
- I秒数设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。
- 1次数在指定次数内,以最快的方式送封包数据到指定机器(只有超级用户可以使用此选 项)。
- q不显示任何传送封包的信息,只显示最后的结果。
- r不经由网关而直接送封包到一台机器,通常是查看本机的网络接口是否有问题。
- s字节数指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是641cMp 数据字节
工实验名称
Linux随机进程调度算法实现二、所属课程名称
《操作系统原理》三、实验原理
linux 0. 11内核目录linux/kernel中的sched. c函数是内核中进程调度管 理的程序,其中schedule。函数负责选择系统中下一个要运行的进程。
schedule。函数首先对所有任务(进程)进行检测,唤醒任何一个已经得到 信号的进程。具体方法是任务数组中的每个进程,检查其报警定时值alarm。如 果进程的alarm时间已经过期(alarm<jiffies),那么在它的信号为图中设置 SIGALRM信号,然后清alarm值。如果进程的信号位图中除被阻塞的信号外还有 其他信号,并且读进程处于可中断睡眠状态(TASK_INTERRUPTIBLE),那么置该进 程为就绪状态(TASK_RUNNING)。
随后是进程调度函数的核心处理局部,即while循环。这个局部代码根据随 机调度机制(jiffies % NR_TASKS+1随机产生进程在task□数组中的位置号), 来选择随后要执行的进程。他首先检查进程任务数组中的所有任务,只要任务(进 程)处于就绪(TASK_RUNNING)状态,就利用switch_to ()函数切换到到该进程。 假设所有的就绪态任务的该值都等于零,表示此刻所有任务(进程)都已经运行完 毕,再重新执行循。
四、实验内容和步骤
参数说明:
jiffies:系统从开机开始算起的滴答数(10ms/滴答);
NR_TASKS:系统能容纳的最大进程数(64个);
task口:任务(进程)数组;
更改代码如下:(linux 0. 11内核目录下linux/kernel/sched. c源文件的scheduling ()函数while (1)循环)
while (1) {〃定义c用来判断系统中是否可运行的任务(进程)存在;
C=-1;//c初值设为-1,默认不存在可运行进程;next = 0;〃next记录下一个即将运行的进程;
《jiffies % NR_TASKS+1; 〃i的值是随机产生的;p=&task[i] ;〃p指向在task表中下标为i的进程;
while (--i) { 〃遍历task口;if (!*一p) continue; 〃如果task[i]不包含进程,跳过;
〃如果task[i]包含进程且该进程处于就绪状态,记录//该任务(进程)序号,跳出无限循环while⑴,转向
〃switch_to()函数执行该任务(进程);if ((*p)->state = TASK_RUNNING)
{ next 二 i;c=i; break;})
if (c) break;〃如果没有任何任务(进程)要执行,那么跳出,〃转向switch to(),执行0号进程(idle)。
实验步骤:
(1)修改linux 0. 11内核目录下linux/kernel/sched. c源文件拷贝出来,并
修改其scheduling ()函数,如下列图:
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
void schedule(void) ( int ir nextr c; struct task_struct ** p;|for(p = &LAST_TASK ; p > &FIRST_TASK ; —p) if (*P) 「一
if ((*p)->alarm && (*p)->alarm < jiffies) { (*p)->signal 1= (1« (SIGALRM-1)); (*p)->alarm = 0;if (((*p)->signal & ~(_BLOCKABLE & (*p)->blocked)) && (*p) ->state=TASK^INTERRUPTIBLE)
(*p) ->state=TASK_RUNNING;} 一
/♦while (1) { c = -1; next = 0; i = NR__TASKS; p = &task[NR_TASKS]; while (-i) { if (!*―p) continue;if ((*p)->state _ TASK_RUNNING && (*p)->counter > c) c = (*p) ->coxmterF next = i;
} if (c) break;
for(p = &LASTJTASK ; p > &FIRST_TASK ; -p) if (*P) (*p)->counter = ((*p)->counter » 1) + (*p)->priority;
}*/
while (1) { c=-l; next = 0;141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156 }
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156 }
i=jiffies % NR_TASKS+1;p=&task[i];
while (--i) { if (!*—p) continue;if ((*p)->state == TASK^RUNNING)
( 一 next = i; c=i; break;
} if (c) break;
}
switch to(next);更改后的schedule。函数(原创)
(2)将sched. c文件拷贝到diska盘(即系统b盘)中;(3 )运行linux 0. 11系统,使用mcopy命令将sched. c拷贝到 /usr/src/1 inux/kernel目录中,替换原有文件;
(4)使用cd命令进入到usr/src/linux中,先后使用make clean、make指 令编译新的Image文件。
(5)关闭linux 0. 11系统,将新的Image文件拷贝出,替换linux 0. 11文 件夹中的旧的Image文件,即bootimage-0.11 -hd文件;
(6)重新启动linux 0.11系统,验证新系统运行是否正常。
五、实验结果说明:下列图是经过修改过的linux 0.11系统,运行正常。
使用了 cd、Is、mcopy等命令运行均正常,新、旧linux 0.11系统的区别 是:旧的系统采用的是剩余执行时间最长优先的进程调度策略,而新的 系统采用的是随机进程调度策略。
新的 linux 0. 11 运行正常附录资料:不需要的可以自行删除
CentOS网络设置这里介绍一下Linux下的网络设置文件,这是网络计算机服务器的前提条件。
1 .网络的基本设置我们在设置网络环境的时候,提前要弄清楚以下的相关信息。
IP IP地址Netmak子网掩码
Gateway默认网关HostName主机名称
DomainName 域名DNS DNS 的 IP
2 .网络设置文件无论是通过网络配置命令(下文将提到)来配置网络,还是通过图形化的配置界面,最终的 配置信息都将写入到某某的文件中,也就是说一旦我们知道了这些信息都写到了什么文件中 或哪儿个文件中,我们就可以通过直接的修改某某文件来直接进行配置,下面就说明一下网 络设置将要涉及到的几个主要的文件。不光是CentOS,其他的UNIX系的OS都可以通过 这个方法来配置网络,不过系统的不同定义也不同,比方说有些系统会说到通过直接修改文 件的方法配置网络信息会导致网络环境的不稳定,提倡使用图形界面或配置命令的形式来配 置网络,这里要特别的注意。
(1)文件 /etc/sysconfig/network这个/etc/sysconfig/network文件是定义hostname和是否利用网络的不接触网络设备的对系统 全体定义的文件。
设定形式:设定值=值/etc/sysconfig/network 的设定工程如卜:
NETWORKING 是否利用网络GATEWAY默认网关
IPGATEWAYDEV默认网关的接口名HOSTNAME主机名
DOMAIN域名
(2) 文件 /etc/sysconfig/network-scripts/ifcfg-ethO/etc/sysconfig/network-scripts在这个目录下面,存放的是网络接口(网卡)的制御脚本文件 (控制文件),ifcfg-ethO是默认的第一个网络接口,如果机器中有多个网络接口,那么名字 就将依此类推ifcfg-ethl,ifcfg-eth2,ifcfg- eth3……(这里面的文件是相当重要的,涉及到网络 能否正常工作)
设定形式:设定值=值设定工程工程如下:
DEVICE接口名(设备,网卡)BOOTPROTO IP 的配置方法(static:固定 IP, dhcpHCP, none:手动)
HWADDR MAC 地址ONBOOT系统启动的时候网络接口是否有效(yes/no)
TYPE网络类型(通常是Ethemet)NETMASK网络掩码
IPADDR IP 地址IPV6INIT IPV6 是否有效(yes/no)
GATEWAY默认网关IP地址这里有一个例子:
CODE:
[root@linux 〜]# cat -n /etc/sysconfig/network-scripts/ifcfg-ethO
1 DEVICE=ethO
2 BOOTPROTO=static
3 BROADCAST=
4 HWADDR=00:0C:2x:6x:0x:xx
5
6
7
8 ONBOOT=yes
9 TYPE=Ethernet
(3)文件 /etc/resolv.conf这个文件是用来配置主机将用的DNS服务器信息。在这个文件中如果不设置DNS服务器的 IP 地址,那么在通信的时候,将无法指定像 [url= :〃 centospub [/url[/url]]这样的域名。(DNS 是 Domain Name
System的简称,中文名称域名解析服务器,主要是IP和域名转换功能)/etc/resolv.conf的设 定工程:
domain 一定义本地域名search 一定义域名和搜索列表
nameserver一定义被参照的DNS服务器的IP地址(最多可指定3个)一般来说最重要的是第三个nameserver工程,没有这项定义,用域名将无法访问网站,并 且yum等服务将无法利用
(4)文件 /etc/hosts/etc/hosts这个文件是记载LAN内接续的各主机的对应[HostName和IP]用的。在LAN内, 我们各个主机间访问通信的时候,用的是内网的IP地址进行访问(例:192.168.1.22, 192.168.1.23),从而确立连接进行通信。除了通过访问IP来确立通信访问之外,我们还可 以通过HostName进行访问,我们在安装机器的时候都会给机器起一个名字,这个名字就是 这台机器的HostName,通过上图可以看到,HostA的hostname是centos 1,HostB的hostname 是centos2那我们怎么能不但通过IP确立连接,通过这个IP对应的HostName进行连接访 问呢?解决的方法就是这个/etc/hosts这个文件,通过把LAN内的各主机的IP地址和 HostName的——对应写入这个文件的时候,就可以解决问题。
要在HostA上用ssh访问HostB的时候,在命令行下做这样的操作:
[-]CODE:
[root@centosl ~]# [email=root@ 192.168.1.23's]root@ 192.168.1 .23's[/email] password:
Last login: Mon Dec 25 15:04:58 2006 from centos 1 [root@centos2 〜]#访问成功后,我们看到hostname的地方变化了。
那么我们用hostname试试看:
[-]CODE:
[root@centos 1 〜]# ssh centos2ssh:centos2: Name or service not known 1提示错误,不知道主机 [root@centosl 〜]#
那么我们编辑/etc/hosts文件,将HostB的IP和hostname的对应关系写入这个文件,如果主机 有域名,可以将域名写在IP地址之后hostname之前,并且用空格隔开,形式如第三行 127.0.0.1 的设置。
[-]CODE:
[root@centosl 〜]# cat -n /etc/hosts
1 # Do not remove the following line, or various programs
2 # that require network functionality will fail.
3 127.0.0.1 localhost.localdomain localhost
4 192.168.1.23 centos2[root@centos2 〜]#
然后我们再从复#$511 centos2的操作[-]CODE:
[root@centos 1 〜]# ssh centos2[email=root@centos2's]root@centos2's[/email] password:
Last login: Mon Dec 25 15:05:07 2006 from centos 1[root@centos2 〜]#
可以看到访问成功了,这个文件就是这样的,倘假设你要用windowsXP访问局域网中的linux 你也可以用上面的方法,只不过在windowsXP下面你也要修改hosts这个文件,文件路径: C:\WlNDOWS\system32\drivers\etc\hosts,在这个文件中添加你要访问的局域网中的主机的 IP和hostname,就能通过主机名访问主机了。
3.网络基本命令
(1) network service的制御网络接口配置信息改动后,网络服务必须从新启动,来激活网 络新配置的使得配置生效,这局部操作和从新启动系统时时一样的作用。制御(控制)是 /etc/init.d/network这个文件,可以用这个文件后面加上下面的参数来操作网络服务。例如: [root@linux -]#/etc/init.d/networkrestart同样也可以用service这个命令来操作网络服务例如:
[root@linux 〜]#service network restartstart 一启动
stop 一停止restart 一再启动
reload一和再启动一样(・.)status —状态表示
如果服务器软件采用rpm的方式安装,以上的内容大多数都对应。
(2) network管理命令网络管理还有一些常用的命令,下面介绍几个常用的命令。
ifconfignetstat
hostnameping
tracerouteifconfig
这个命令可以用于,网络接口的启动/停止,更改设置和表示网络状态,在不添加任何参数 的情况下,这个ifconfig可以表示网络接口的状态。例如:
[root@linux 〜]# ifconfigethO Link encap:Ethemet HWaddr00:xx:xx:xx:04:45
inet6 addr: fe80::20c:29ff:fe61:445/64 Scopeink
UPBROADCAST RUNNING MULTICAST MTU: 1500 Metric: 1RXpackets:472 errors:0 dropped:0 overruns:0 frame:0
TXpackets:445 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000
RXbytes:35804 (34.9 KiB) TX bytes:53012(51.7 KiB)Interrupt: 185 Base address:0xl080
lo Link encapocal Loopback
inet6 addr: ::1/128 Scope:HostUPLOOPBACK RUNNING MTU: 16436 Metric: 1
RXpackets:8 errors:0 dropped:0 overruns:0 frame:0TXpackets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0RXbytes:560 (560.0 b) TX bytes:560 (560.0b)
[root@linux 〜]#看看ifeonfig的输出内容
1. Link encap <—
2. HWaddr -MAC 地址
1.1 netaddr-IP 地址(IPV4)
4. Beast —广播地址
5. Mask 一衍码
6. inet6 addr -IP 地址(IPV6)
7. UP一启动中
8. BROADCAST —广播地址有效
9. RUNNING —动作MTU —网络接口的 MTU (MaximumTransfer Unit: Ethernet 最大传送 frame 值)
10. Metric <—RX packets 一受信包数
11. TX packets 一送信包数collisions <—
12. interrupt <—IRQ 号码Baseaddress <—I/O 地址
通过这个命令还可以up (开启)和down (关闭)某个网络接口(网卡),例如我们关闭ethO 可以用下面的命令:
[root@linux 〜]#ifconfigethO down相反的开启如下:
[root@linux -|#ifconfigethO up通过这个命令还可以设置网络接口(网卡),例如我们将ethO的IP设置成192.168.1.11,子
网衍码设置成如下:
假如有多个网络接口的情况下,ethX的X局部用网络接口码(数字,例如eth0,ethl,eth2代 替)。
展开阅读全文