计算机组成原理与操作系统-实验指导书
更新时间:2024-05-26 01:15:01 阅读量: 综合文库 文档下载
- 计算机组成原理与操作系统推荐度:
- 相关推荐
《计算机组成原理与操作系统》实验指导书
计算机组成原理与操作系统
实验指导书
杨承玉
2009-6-24
《计算机组成原理与操作系统》实验指导书
目录
实验一 linux操作系统仿真安装 ........................................................................................... 1 实验二 Linux环境实验(一):linux使用环境 .................................................................. 1 实验二 Linux环境实验(二):Linux 下C编程环境 ....................................................... 1 实验三 进程观察实验(一):多进程环境 .......................................................................... 4 实验三 进程观察实验(二):进程的控制 ........................................................................ 10 实验四 设备管理实验 .......................................................................................................... 15 附录一:Linux简介 ............................................................................................................... 19 附录二:Linux 命令速查 ...................................................................................................... 22
《操作系统原理及应用》实验指导书
前言
该实验指导书是为计算机组成原理与操作系统的实验课程准备的。实验一是利用Vmware仿真安装Linux,目的在于让学生了解真实安装与运行操作系统与仿真的区别。之后的实验都是基于linux操作系统的,目的在于帮助学生直观地理解课程中涉及到一些重要的概念。
如下图所示,通过应用程序来观察linux操作系统内核的工作原理。实验内容涉及进程管理、设备管理等。
实验类型如下: 1、使用命令观察;
2、编写用户级程序,使用系统调用或库函数观察;
可根据具体的课程内容和学时安排选择完成其中的部分实验。
《操作系统原理及应用》实验指导书
实验一 linux操作系统仿真安装
实验目的
了解虚拟机工作原理,了解如何安装操作系统。
实验内容
(1) VMware的安装及配置 (2) VMware下Linux 的安装 (3) VMware tools 的安装
实验基础
正常情况下,一台计算机只能同时运行一个操作系统,操作系统通过设备驱动来使用计算机的硬件。计算机的硬件一般包含鼠标、键盘、CPU、内存、磁盘控制器、磁盘驱动器、显卡、网卡等。
虚拟计算机技术用软件真实地模拟计算机硬件环境,使得操作系统分辨不出是运行在真实的计算机环境中还是虚拟计算机环境中。虚拟计算机软件可以模拟所有常见的硬件设备,如CPU、BIOS、内存、显卡、IDE硬盘、光驱、鼠标、键盘、声卡、串口、并口、USB接口、网卡等。运行在真实的硬件上的操作系统称为主机,在虚拟机软件上运行的虚拟计算机可称为客户机。客户机可以直接使用主机的硬件设备完成与外部环境的交互和通讯。
虚拟机软件可以在一台电脑上模拟出来若干台PC,每台PC可以运行单独的不同操作系统而互不干扰,可以实现一台电脑“同时”运行几个操作系统,在每个操作系统上可以运行各自的应用程序。
Vmware软件(VMware Workstation)是VMware公司出品的一个多系统安装软件。和在一台机器上安装多个操作系统不同, VMware 以主机操作系统为平台运行虚拟机, 可以在主机、虚拟机之间以及各虚拟机之间方便的切换。虚拟的客户机只是以一个文件的形式存储于主机上,因此用户可以随意地对客户机进行分区、格式化、安装操作系统等操作而不会对主机系统产生任何影响。虚拟的客户机所使用的内存大小、硬盘容量大小等都可以根据用户的需要进行调整。Vmware可虚拟出若干台客户机, 每台机器可以运行单独的操作系统而互不干扰,这些“虚拟”机器各自拥有自己独立的
1
《操作系统原理及应用》实验指导书
CMOS、硬盘和操作系统。用户可以象使用普通机器一样对它们进行分区、格式化、安装系统和应用软件等操作。
VMware还有个极大的优点就是复用性强,对于不同的单机系统,在初次使用时不必每次都进行虚拟OS的安装过程,省却很多麻烦。只需在一台机器上安装成功,保存安装文件,在其他单机系统只需安装VMware软件,然后把保存下的虚拟系统文件复制、粘贴到要使用虚拟机单机的硬盘上,即可复用。
实验指导
一、VMware 的安装及配置 1.VMware 的下载及安装
你可以从许多软件下载网站得到VMware 的安装程序。在此推荐以下两个网址: ⑴ VMware 的大本营 www.VMware.com ⑵中国虚拟机论坛 www.wmware.cn
注意:安装程序有for Windows 和for Linux之分,请下载正确的版本。 2.VMware 的配置
VMware安装完毕后,利用它可以建立多个虚拟机,每新建一个虚拟机,就会要求你建立一个配置文件。这个配置文件实际上相当于虚拟的客户机的“硬件配置”,你可以在配置文件中决定虚拟机的硬盘如何配置,内存多大,准备运行哪种操作系统,是否有网络等。配置Linux虚拟机的步骤如下。
(1 )选择File菜单下的“New Virtual Machine”出现新虚拟机向导后单击“下一步”,选择“Typical”典型安装。
(2 )再单击“下一步”,在选择操作系统界面的“Guest Operation System”中选择“Linux”,然后单击Version对应的下拉菜单选择具体的Linux版本,此处我们选择“Red Hat Linux”。 (3 )单击“下一步”进入安装目录选择界面。该界面上面的文本框是系统的名字,保持默认值即可,下面的文本框需要选择虚拟机操作系统的安装位置。
(4 )根据需要选择好后,单击“下一步”按钮,出现设置虚拟机内存大小的界面。Linux9.0对内存的要求是:文本模式至少需要64MB;图形化模式至少需要128MB,推荐使用192MB。此处我们选择192MB。
(5 )单击“下一步”按钮进入网络连接方式选择界面。VMware有四种网络设置方式,一般来说,Bridged 方式使虚拟机就像网络内一台独立的计算机一样,最为方便好用(四种连网方式的区别大家可参考VMware 的有关资料)。在此,我们选择Bridged 方式。 (6 )单击“下一步”按钮进入虚拟磁盘的设置界面。这里有三种方式(Create a new virtual disk、
2
《操作系统原理及应用》实验指导书
Use an existing virtual disk、Use a physical disk)可供选择,建议初学者选择“Create a new virtual disk”,其含义是新建一个虚拟磁盘,该虚拟磁盘只是主机上的一个独立文件。 (7 )在“下一步”中设置磁盘大小。在此,我们采用默认的4GB。
(8 )单击“下一步”进入文件存放路径选择界面。在此界面可单击Browse按钮进行设置。此处我们使用默认值,单击“完成”按钮。 至此,完成一个虚拟机的配置。 二、VMware 下Linux 的安装
以上相当于组装了一台新的计算机,接下来的工作便是安装操作系统了。安装前需做好准备工作:购买一套Red Hat Linux 9.0 的安装盘,共三张。或下载Red Hat Linux 9.0 安装所需要的三个ISO文件。下面,我们以使用ISO镜像文件安装为例讲述。 1. 安装虚拟光盘
(如果直接用光盘安装,可省去此步及后述的第5步,直接将光盘插入物理光驱即可) 选择VM 菜单下的Settings 选项,单击Hardware选项卡下的CD-ROM,在右边的“connection”单选按钮组中选择“Use ISO image”, 按“Browse”选择3 个光盘文件中的第一个,然后按“OK”。 按“advanced”,在Virtual device mode(虚拟设备模式)选择虚拟设备的接口方式,选择IDE 0:0项,然后点击OK返回到虚拟机界面下,点击Power ON就可以直接从硬盘安装操作系统了。 2. 启动虚拟机
点击工具栏上的绿色启动按钮或屏幕显示区的Start this virtual machine 命令,然后按“OK”。RED HAT 会自动进入安装程序的界面。首先询问是以图形界面还是以文本界面安装,依据提示按回车选择图形界面安装,接下来询问是否要测试光驱,这里选择不要即可。
注意:光标从Windows切换到VMware只需在VMware窗口上单击鼠标左键,而从VMware回到Windows,则要按Ctrl+Alt。提醒大家的是,在对虚拟机进行操作前一定要确保光标在VMware中。 3. 设置分区
依提示选择完安装语言、键盘、鼠标、安装类型(与Windows类似,此处不再详述)后进入磁盘分区界面,出现如下图1所示警告“你想初始化这个驱动器吗?”,既然是在虚拟机上进行的操作,此处大胆地选“是”就可以。若选择“自动分区”则之后出现的分区情况如图3所示。按“下一步”后,如图2所示,弹出“ 你已选择了要在下列驱动器内删除所有linux分区”的警告,选择“是”。 4. 设置根口令
在引导程序装载界面连按“下一步”,设置完系统语言和时区后进入根口令的设置界面,这里的根口令相当于Windows 2000 的系统管理员密码。设置好口令后连按“下一步”,等待安装软件包,直到出现更换光盘的提示。 5. 安装第二和第三张ISO 光盘
当出现“请插入第二张光盘后再继续”,设置方法同1 ,只不过是分别选择3 个光盘文件中的第二、三个。之后系统问是否做启动盘,这个根据自己需要选择,然后就是显卡等的设置,一路默认。最后选一个“退出”,VMware内系统重启。 6. 创建个人用户账号和密码
重启后,系统提示你创建一个个人账号和密码,和Windows中创建一个新用户相当。 7. 其他设置
选择日期和试听声卡后问你是否注册, 选择“否,我不想注册我的系统”,接下来问有无附加安装,在此我们先不安装,直接按“前进”。VM ware内系统再次重启。 8. 登录系统
3
《操作系统原理及应用》实验指导书
启动后,系统询问用户名和密码。输入在步骤6 中设置的户名和密码或输入用户名“r o o t ”和第4 步中你所设置的根口令即可。至此,出现Red Hat的界面,Linux 的安装完成了。
图1
4
《操作系统原理及应用》实验指导书
图2
图3
5
《操作系统原理及应用》实验指导书
三、VMware tools 的安装
安装完Linux之后,还需要对此VM安装VM-ware tools,这相当于给Linux 安装各种驱动程序。当以root 身份进入Linux后,按 CTRL+ALT 组合键,进入主操作系统,点击VM菜单下的VMware Tools Install子菜单。如下图所示。
弹出如下对话框,点击“安装”。
出现如下图所示,VmwareTools安装文件已经在虚拟光盘中。
6
《操作系统原理及应用》实验指导书
如下图所示,打开终端。
在终端命令行后面输入如下命令(注意大小写和空格,同时每行命令后记住回车)。其中,因为vmware版本的区别,vmware-linux-tools.tar.gz 的实际名字可能为如VMwareTools-6.0.2-59824.tar.gz。 mount -t iso9660 /dev/cdrom /mnt (加载CDROM设备,并且CDROM为只读属性。) cp /mnt/vmware-linux-tools.tar.gz /tmp (将该软件包持拷贝到LINUX的TMP目录下) umount /dev/cdrom (卸载CDROM) cd /tmp (进入TMP目录)
tar zxf vmware-linux-tools.tar.gz (解压该软件包) cd vmware-tools-distrib (进入解压后的目录)
./vmware-install.pl (运行安装命令,系统开始安装vmware tools) 在屏幕的提示下,连续回车七次后,系统安装完VMWARE TOOLS。
屏幕继续提示配置过程。三次回车后,一个分辨率的列表出来。VMWARE下安装完了linux后,default的分辨率是:800x600 ,要调整为1024x768,在列表中选3即可,因为在分辨率列表中3对应的是1024x768.
7
《操作系统原理及应用》实验指导书
程序中调用system函数时,用字符串参数传递一个shell命令,并执行 函数原型: #include
调用举例:system(“ps -af”);
实验指导
1、列出当前终端上启动的所有进程。试观察屏幕上的显示结果。 [root@localhost root]# ps -af
UID PID PPID C STIME TTY TIME CMD root 3210 3166 0 15:51 pts/1 00:00:00 ps –af
这就是说,终端进程的pid是3166,我们在当前终端上执行了命令\-af\因此该终端进程启动了子进程并使其执行该命令,这个子进程的pid就是3210。 [root@localhost root]# ps –u os001
2、显示系统中的进程状态。试观察记录屏幕上的显示结果。 [root@localhost program]# top
21:00:23 up 2:26, 2 users, load average: 0.00, 0.01, 0.02 60 processes: 57 sleeping, 2 running, 1 zombie, 0 stopped
CPU states: 3.0% user 0.2% system 0.0% nice 0.0% iowait 96.8% idle Mem:117912k av,116168k used,1744k free,0k shrd,
7000k buff 73180k actv,396k in_d,1300k in_c
Swap: 265032k av, 73748k used, 191284k free 43000k cached
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND 2998 root 16 0 24072 7992 716 R 2.1 6.7 2:10 0 X
3115 root 15 0 6528 5268 2632 S 0.7 4.4 0:12 0 gnome-terminal 1 root 15 0 108 84 56 S 0.0 0.0 0:04 0 init 2 root 15 0 0 0 0 S W 0.0 0.0 0:00 0 keventd ..........................
3、显示linux系统中的进程树。试观察分析屏幕上的显示结果。
[root@localhost program]# pstree
4、编写程序,使用fork( )创建两个子进程。观察在程序运行过程中的进程状态变化,分析原因。
(1)参照参考程序编写,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符串,其中,每个进程显示其pid值,及其父进程的pid值。类似如下显示:父进程显示'\,子进程分别显示'\child1.pid:..., ppid:.... \和'\。试观察并分析屏幕上的显示结果。 [root@localhost program]# ./fp
In parent when no child:pid:3750,ppid:3726 In child1:pid:3752,ppid:3750 In parent when one child: In child2:pid:3755,ppid:3750 In parent when two children:
(2)也可用ltrace -f -i -S ./executable-file-name查看以上程序执行过程。
从进程并发执行来看,上面的三个进程没有同步措施,只要进程就绪就可能执行,因此各种执行顺序都有可能,所以三个进程的输出次序带有随机性。并且,每当一个进程执行了一段时间,其它就绪进程可能抢占处理机,因此,多个进程可能交错执行。不过,操作系统实现函数printf( )时,保证了进程每次调用该函数输出一个字符串时不会被中断。另外,Linux缺省的调度策略 是FIFO和时间片轮转。
8
《操作系统原理及应用》实验指导书
5、Windows下的进程观察
按下CTRL-ALT-DEL (或在任务栏上点击鼠标右键选择任务管理器) 打开windows任务管理器对话框 。
a.选择“进程”标签,列出你的计算机上正在运行的三个进程 b.进程的标识符(PID)是唯一的吗?为什么?
c.找到当前CPU占用率最高的进程,写下它的名字、CPU占用率、以及内存使用量。 e.你的系统上总的物理内存和系统缓冲是多大?
参考程序
#include
int p1,p2;
printf(\”);
while((p1=fork())== -1); /*创建子进程1*/ if (p1==0) {
printf(\子进程1段 } else {
printf(\父进程段a while((p2=fork())== -1); /*创建子进程2*/ if(p2==0) {
printf(\子进程2段 } else {
printf(\
pid:%d,ppid:%d\\n\父进程段b } } }
思考题
(1)在终端运行的用户执行程序,其父进程是谁?系统是怎样创建进程的? (2)当首次执行新创建的进程时,其入口在哪里?
9
《操作系统原理及应用》实验指导书
实验三 进程观察实验(二):进程的控制
实验目的
1、了解进程创建后对进程控制的系统调用,可实现对进程的有效控制
2、掌握进程的睡眠、同步、撤消等进程控制方法
实验内容
1、通过相关命令,对进程的状态进行控制。
2、编写程序,使用fork( )创建一个子进程。使用相关的系统调用控制进程的状态。观察并分析多进程的执行次序及状态转换。
实验基础
一、进程的控制
进程因创建而存在,因执行完成或异常原因而终止.在进程的生命周期中,进程在内存中有三种基本状态:就绪,执行,阻塞.进程状态的转换是通过进程控制原语来实现的。
Linux操作系统提供了相应功能的系统调用及命令,来实现用户层的进程控制。
现在我们开始讲述一下进程的控制,主要介绍内核对fork、exec、wait、exit的处理过程。 在Linux系统中,用户创建一个进程的唯一方法就是使用系统调用fork。内核为完成系统调用fork要进行几步操作第一步,为新进程在进程表中分配一个表项。系统对一个用户可以同时运行的进程数是有限制的,对超级用户没有该限制,但也不能超过进程表的最大表项的数目。第二步,给子进程一个唯一的进程标识号(PID)。该进程标识号其实就是该表项在进程表中的索引号。第三步,复制一个父进程的进程表项的副本给子进程。内核初始化子进程的进程表项时,是从父进程处拷贝的。所以子进程拥有与父进程一样的uid、euid、gid、用于计算优先权的nice值、当前目录、当前根、用户文件描述符表等。第四步,把与父进程相连的文件表和索引节点表的引用数加1。这些文件自动地与该子进程相连。第五步,内核为子进程创建用户级上下文。第六步,生成进程的动态部分,内核复制父进程的上下文的第一层,即寄存器上下文和内核栈,内核再为子进程虚设一个上下文层,这是为了子进程能“恢复”它的上下文。这时,该调用会对父进程返回子进程的pid,对子进程返回0。
Linux系统的系统调用exit,是进程用来终止执行时调用的。进程发出该调用,内核就会释放该进程所占的资源,释放进程上下文所占的内存空间,保留进程表项,将进程表项中纪录进程状态的字段设为僵死状态。内核在进程收到不可捕捉的信号时,会从内核内部调用exit,使得进程退出。父进程通过wait得到其子进程的进程表项中纪录的计时数据,并释放进程表项。最后,内核使得进程1(init进程)接收终止执行的进程的所有子进程。如果有子进程僵死,就向init进程发出一个SIGCHLD的软中断信号.
一个进程通过调用wait来与它的子进程同步,如果发出调用的进程没有子进程则返回一个错误,如果找到一个僵死的子进程就取子进程的PID及退出时提供给父进程的参数。如果有子进程,但没有僵死的子进程,发出调用的进程就睡眠在一个可中断的级别上,直到收到一个子进程僵死(SIGCLD)的信号或其他信号。
进程控制的另一个主要内容就是对其他程序引用。该功能是通过系统调用exec来实现的,该调用将一个可执行的程序文件读入,代替发出调用的进程执行。内核读入程序文件的正文,清除原先进程的数据区,清除原先用户软中断信号处理函数的地址,当exec调用返回时,进程执行新的正文。
讲一下进程调度的概念。Linux系统是一个分时系统,内核给每个进程分一个时间片,该进程的时间片用完就会调度另一个进程执行。LINUX系统上的调度程序属于多级反馈循环调度。该调度方法是,给一个进程分一个时间片,抢先一个运行超过时间片的进程,并把进程反馈到若干优先级
10
《操作系统原理及应用》实验指导书
队列中的一个队列。进程在执行完之前,要经过这样多次反馈循环。
进程调度分成两个部分,一个是调度的时机,即什么时候调度;一个是调度的算法,即如何调度和调度哪个进程。
二、相关的命令
(1)睡眠指定时间 执行格式:# sleep x
X为指定睡眠的秒数。 (2)结束或终止进程 kill
执行格式:# kill [-9] PID (PID为利用ps命令所查出的process ID) 例: kill -9 456 终止process ID 为456的process (3)后台(background)执行process command的命令 执行格式:# command & (在命令后加上 &) 例: gcc file1 & 在后台编译file1.c 注意:按下^Z,暂停正在执行的process。键入”bg”,将所暂停的process置入background中继续执行。
例:# gcc file1 & ^Z stopped # bg
(4)查看正在background中执行的process 执行格式:# jobs
(5)结束或终止在background中的进程 kill 执行格式:# kill %n
例: kill %1 终止在background中的第一个job kill %2 终止在background中的第二个job
三、相关的系统调用
在LINUX中fork( )是一个非常有用的系统调用,但在LINUX中建立进程除了fork( )之外,也可用与fork( ) 配合使用的exec( )。
1、exec( )系列
系统调用exec( )系列,也可用于新程序的运行。fork( )只是将父进程的用户级上下文拷贝到新进程中,而exec( )系列可以将一个可执行的二进制文件覆盖在新进程的用户级上下文的存储空间上,以更改新进程的用户级上下文。exec( )系列中的系统调用都完成相同的功能,它们把一个新程序装入内存,来改变调用进程的执行代码,从而形成新进程。如果exec( )调用成功,调用进程将被覆盖,然后从新程序的入口开始执行,这样就产生了一个新进程,新进程的进程标识符id 与调用进程相同。
exec( )没有建立一个与调用进程并发的子进程,而是用新进程取代了原来进程。所以exec( )调用成功后,没有任何数据返回,这与fork( )不同。exec( )系列系统调用在LINUX系统库unistd.h中,共有execl、execlp、execle、execv、execvp五个,其基本功能相同,只是以不同的方式来给出参数。
一种是直接给出参数的指针,如: int execl(path,arg0[,arg1,...argn],0); char *path,*arg0,*arg1,...,*argn;
另一种是给出指向参数表的指针,如: int execv(path,argv); char *path,*argv[ ];
另外,在linux中,出于安全的考虑,限制了exec()可以执行的新程序的位置为系统指定的搜索路径。
例如:
execl(“/bin/ls”,”ls”,NULL);
execl(“/usr/bin/gcc”,”-v”,NULL);
execl(“./test”,NULL); //当前目录下的可执行程序 2、exec( )和fork( )联合使用
11
《操作系统原理及应用》实验指导书
系统调用exec和fork( )联合使用能为程序开发提供有力支持。用fork( )建立子进程,然后在子进程中使用exec( ),这样就实现了父进程与一个与它完全不同子进程的并发执行。
一般,wait、exec联合使用的模型为: int status; ............
if (fork( )= =0) {
...........; execl(...); ...........; }
wait(&status); 3、wait( )
等待子进程运行结束。如果子进程没有完成,父进程一直等待。wait( )将调用进程挂起,直至其子进程因暂停或终止而发来软中断信号为止。如果在wait( )前已有子进程暂停或终止,则调用进程做适当处理后便返回。wait( )给我们提供了一种实现进程同步的简单方法。
系统调用格式: int wait(status) int *status;
其中,status是用户空间的地址。它的低8位反应子进程状态,为0表示子进程正常结束,非0则表示出现了各种各样的问题;高8位则带回了exit( )的返回值。exit( )返回值由系统给出。
核心对wait( )作以下处理:
(1)首先查找调用进程是否有子进程,若无,则返回出错码;
(2)若找到一处于“僵死状态”的子进程,则将子进程的执行时间加到父进程的执行时间上,并释放子进程的进程表项;
(3)若未找到处于“僵死状态”的子进程,则调用进程便在可被中断的优先级上睡眠,等待其子进程发来软中断信号时被唤醒。
4、sleep( ) 睡眠指定时间。 系统调用格式:
void sleep(int second)
其中,second为指定睡眠的秒数。该函数使得当前进程自我阻塞second秒,由执行态转换成阻塞态,直到系统唤醒。
5、exit( )
终止进程的执行。 系统调用格式:
void exit(status) int status;
其中,status是返回给父进程的一个整数,以备查考。 为了及时回收进程所占用的资源并减少父进程的干预,LINUX/LINUX利用exit( )来实现进程的自我终止,通常父进程在创建子进程时,应在进程的末尾安排一条exit( ),使子进程自我终止。exit(0)表示进程正常终止,exit(1)表示进程运行有错,异常终止。
如果调用进程在执行exit( )时,其父进程正在等待它的终止,则父进程可立即得到其返回的整数。核心须为exit( )完成以下操作:
(1)关闭软中断 (2)回收资源 (3)写记帐信息
(4)置进程为“僵死状态”
实验指导
1、参照参考程序编写程序,其中父进程无限循环。在后台执行该程序。
12
《操作系统原理及应用》实验指导书
四. 系统消息相关命令
显示机器的核心构架(如i386)
正在阅读: 计算机组成原理与操作系统-实验指导书05-26 人力资源管理专业考试大纲.doc04-25 泰山版六年级下册品德与社会教案05-03 C++小游戏设计 - 孔明棋01-31 危机管理中政府职能重塑09-13 最美的希望作文550字07-07 安装工程类别划分标准及有关规定01-25 化学平衡移动 - 图文12-30
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 指导书
- 组成
- 原理
- 操作系统
- 实验
- 计算机
- 小学五年级数学长方体和正方体体积和表面体练习题
- H3C常用命令
- 国家教育部最新初中语文新课标
- 人教版语文八年级上第四单元第16课《大自然的语言》教学设计(1)
- 建筑工地除四害台账
- 2.2IP地址及其管理-j案
- 施工组织设计 - 图文
- 司菁菁计算书 - 图文
- 电气控制与PLC试卷1-答案
- 趣味数学教学计划
- 南京市雨花台区十二五规划纲要
- 2018年浙江工业大学之江学院校园迷你马拉松定向赛竞赛规程
- 三相桥式全控整流电路的可逆直流系统
- 高师学前教育专业本科学生实践能力的培养探索
- 农村唱戏的热闹劲,有多少人还记得? 豫记 - 图文
- 数学建模,复合肥料的问题
- 碳化硼油石项目可行性研究报告(目录) - 图文
- 华章MBA英语笔记及模板
- 旅游和旅游资源练习题
- 自动控制原理期末试卷与答案