天津大学操作系统Word文档格式.docx
《天津大学操作系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《天津大学操作系统Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
![天津大学操作系统Word文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/4/09dcd7c7-d3b4-468b-baae-7dfb5265cffd/09dcd7c7-d3b4-468b-baae-7dfb5265cffd1.gif)
(处理机、存储器、设备、文件和作业)
最低层是硬件,作为整个系统的基础。
次低层是OS核心,包括教材所介绍的四大资源管理功能。
最高层是OS与用户的接口Shell以及编译程序等。
(1)内核。
作为OS的核心,它应具有二个方面的接口:
一方面是核心与硬件的接口,它通常是由一组驱动程序和一些基本的例行程序组成;
二是核心与Shell的接口,由二组系统调用以及命令解释程序等组成。
核心本身又可分成二大部分:
一部分是进程控制子系统;
另一部分则是文件子系统。
二组系统调用分别与这二大子系统交互。
(2)Shell是用户与系统交互作用的界面。
UNIX中,Shell作为解释程序出现:
接收用户打入的命令,进行分析,创建子进程,由子进程实现命令所规定功能,等子进程终止工作后,发出提示符。
这也是Shell最常见的使用方式。
Shell除了作为命令解释程序以外,还是一种高级程序设计语言,它有变量、关键字、各种控制语句,如if、case、while、for等,有自己的语法结构。
利用Shell程序设计语言可以编写出功能强大、代码简单的程序,特别是它把相关的LINUX命令有机地组合在一起,可大大提高编程的效率。
UNIX通常提供三种不同的Shell,即BourneShell(简称bash),C-Shell(简称csh)和KornShell(简称ksh)。
BourneShell是AT&
TBell实验室人员为UNIX开发的,它是其他Shell开发的基础,也是各种UNIX/LINUX系统上最常用、最基本的Shell。
C-Shell是加州伯利克大学的BillJoy为BSDUNIX开发的,它与bash不同,主要模拟C语言。
kshShell是AT&
TBell实验室开发的,与bsh兼容,但功能更强大。
(3)Shell程序示例
使用Shell最简单的方法是从键盘上直接打入命令行。
ls-l/usr/example
Shell命令解释程序对打入的命令进行分析,并创建子进程,完成该命令所对应的功能。
Shell程序也可存放在文件上,下面是二个Shell程序示例。
由三条简单命令组成的Shell程序(文件名为ex1)
date
pwd
cd..
执行这个Shell程序时,依次执行其中各条命令:
显示日期、当前工作目录,返回上级目录。
三、实验内容
1.UNIX的登录与退出
(1)登录
在学院的FTP(,并双击进行安装,安装后在桌面形成图标,再次双击进入,出现模拟unix环境的登录界面。
选择quickConnection,出现登录界面,在界面中填写相关登录信息,如图1-1所示。
图1-1登录界面
(2)退出
在UNIX系统提示符$下,输入logout、exit或shutdown。
2.UNIX命令格式
命令[选项][处理对象]
例:
ls-lamydir
注意:
·
命令一般是小写字串。
注意大小写有别
选项通常以减号(-)再加上一个或数个字符表示,用来选择一个命令的不同操作
同一行可有数个命令,命令间应以分号隔开
命令后加上&
可使该命令后台(background)执行
3.常用命令
(1)目录操作
和DOS相似,UNIX采用树型目录管理结构,由根目录(/)开始一层层将子目录建下去,各子目录以/隔开。
用户login后,工作目录的位置称为homedirectory,由系统管理员设定。
‘~’符号代表自己的homedirectory,例如~/myfile是指自己home目录下myfile这个文件。
UNIX的通配符有三种:
’*’和’?
’用法与DOS相同,‘-‘代表区间内的任一字符,如test[0-5]即代表test0,test1,……,test5的集合。
①显示目录文件ls
执行格式:
ls[-atFlgR][name](name可为文件或目录名称)
ls显示出当前目录下的文件
ls-a显示出包含隐藏文件的所有文件
ls-t按照文件最后修改时间显示文件
ls-F显示出当前目录下的文件及其类型
ls-l显示目录下所有文件的许可权、拥有者、文件大小、修改时间及名称
ls-lg同上
ls-R显示出该目录及其子目录下的文件
注:
ls与其它命令搭配使用可以生出很多技巧(最简单的如"
ls-l|more"
),更多用法请输入ls--help查看,其它命令的更多用法请输入命令名--help查看.
②建新目录mkdir
mkdirdirectory-name
mkdirdir1 (新建一名为dir1的目录)
③删除目录 rmdir
rmdirdirectory-name或rmdirectory-name
rmdirdir1删除目录dir1,但它必须是空目录,否则无法删除
rm-rdir1删除目录dir1及其下所有文件及子目录
rm-rfdir1不管是否空目录,统统删除,而且不给出提示,使用时要小心
④改变工作目录位置cd
cd[name]
cd改变目录位置至用户login时的workingdirectory
cddir1改变目录位置,至dir1目录
cd~user改变目录位置,至用户的workingdirectory
cd..改变目录位置,至当前目录的上层目录
cd../user改变目录位置,至上一级目录下的user目录
cd/dir-name1/dir-name2改变目录位置,至绝对路径(Fullpath)
cd-回到进入当前目录前的上一个目录
⑤显示当前所在目录pwd
⑥查看目录大小du
du[-s]directory
dudir1显示目录dir1及其子目录容量(以kb为单位)
du-sdir1显示目录dir1的总容量
⑦显示环境变量
echo$HOME显示家目录
echo$PATH显示可执行文件搜索路径
env显示所有环境变量(可能很多,最好用"
env|more"
"
env|grepPATH"
等)
⑧修改环境变量,在bash下用export,如:
exportPATH=$PATH:
/usr/local/bin
想知道export的具体用法,可以用shell的help命令:
helpexport
(2)文件操作
①查看文件(可以是二进制的)内容cat
catfilename或morefilename或catfilename|more
catfile1以连续显示方式,查看文件file1的内容
morefile1
或catfile1|more以分页方式查看文件的内容
②删除文件rm
rmfilename
rmfile?
rmf*
③复制文件cp
执行格式:
cp[-r]sourcedestination
cpfile1file2将file1复制成file2
cpfile1dir1将file1复制到目录dir1
cp/tmp/file1将file1复制到当前目录
cp/tmp/file1file2将file1复制到当前目录名为file2
cp–rdir1dir2(recursivecopy)复制整个目录。
④移动或更改文件、目录名称mv
mvsourcedestination
mvfile1file2将文件file1,更名为file2
mvfile1dir1将文件file1,移到目录dir1下
mvdir1dir2
⑤比较文件(可以是二进制的)或目录的内容diff
diff[-r]name1name2(name1、name2同为文件或目录)
例:
difffile1file2比较file1与file2的不同处
diff-rdir1dir2比较dir1与dir2的不同处
⑥文件中字符串的查找grep
grepstringfile
grepabcfile1查找并列出串abc所在的整行文字
⑦文件或命令的路径寻找
执行格式一:
whereiscommand显示命令的路径
执行格式二:
whichcommand显示路径及使用者所定义的别名
执行格式三:
whatiscommand显示命令的功能摘要
执行格式四:
findsearch-path-namefilename-print
搜寻指定路径下某文件的路径
执行格式五:
locatefilename
根据系统预先生成的文件/目录数据库(/var/lib/slocate/slocate.db)查找匹配的文件/目录,查找速度很快,如果有刚进行的文件改变而系统未到执行定时更新数据库的时间,可以打入updatedb命令手动更新.
⑧建立文件或目录的链接ln
例:
lnsourcetarget1建立source文件(已存在)的硬链接,命名为target1
ln-ssourcetarget2建立source文件的符号链接,命名为target2
(3)系统询问与权限口令
①查看系统中的使用者
who
查看username
②执行格式:
whoamI查看自己的username
③改变自己的username的帐号与口令su
suusername
suusername输入帐号
password输入密码
④文件属性的设置chmod
改变文件或目录的读、写、执行的允许权
chmod[-R]modename
其中:
[-R]为递归处理,将指定目录下所有文件及子目录一并处理
mode为3-8位数字,是文件/目录读、写、执行允许权的缩写(r:
read,数字代号为"
4"
w:
write,数字代号为"
2"
x:
execute,数字代号为"
1"
)
mode:
rwxrwxrwx
usergroupother
缩写:
(u)(g)(o)
chmod755dir1将目录dir1设定成任何人皆有读取及执行的权利,但只有拥有者可作写修改。
其中7=4+2+1,5=4+1
chmod700file1将file1设为拥有者可以读、写和执行
chmodo+xfile2将file2,增加拥有者可执行的权利
chmodg+xfile3将file3,增加组使用者可执行的权利
chmodo-rfile4将file4,除去其它使用者可读取的权利
⑤改变文件或目录所有权chown
chown[-R]usernamename
chownuserfile1将文件file1改为user所有
chown.foxfile1将文件file1改为fox组所有
chownuser.foxfile1将文件file1改为fox组的user所有
chown-Ruserdir1将目录dir1及其下所有文件和子目录,改为user所有
⑥检查用户所在组名称groups
groups
⑦改变文件或目录的组拥有权chgrp
chgrp[-R]groupnamename
chgrpvlsifile1将文件file1改为vlsi组所有
chgrp-Rimagedir1将目录dir1及其下所有文件和子目录,改为image群组
⑧改变文件或目录的最后修改时间touch
touchname
四、实验要求
1.根据命令的格式,在模拟Unix环境测试。
2.每个命令换参数观察结果
实验二UNIX常用命令
(二)
3.练习并掌握UNIX提供的vi编辑器来编译C程序
LINUX中包含了很多软件开发工具。
它们中的很多是用于C和C++应用程序开发的。
C是一种能在UNIX的早期就被广泛使用的通用编程语言。
它最早是由Bell实验室的DennisRitchie为了UNIX的辅助开发而写的,从此C就成为世界上使用最广泛的计算机语言。
C能在编程领域里得到如此广泛支持的原因有:
(1)它是一种非常通用的语言,并且它的语法和函数库在不同的平台上都是统一的,对开发者非常有吸引力;
(2)用C写的程序执行速度很快;
(3)C是所有版本UNIX上的系统语言;
1.进程操作
(1)查看系统目前的进程ps
ps[-aux]
ps或ps-x查看系统中属于自己的process
ps-au查看系统中所有使用者的process
ps-aux查看系统中包含系统内部及所有使用者的process
ps-aux|grepapache找出系统中运行的所有名称中带有"
apache"
串的process
(2)查看正在background中执行的process
jobs
(3)结束或终止进程kill
killPID(PID为利用ps命令所查出的processID)
kill456
(4)结束或终止在background中的进程kill
kill%n
kill%1终止在background中的第一个job
kill%2终止在background中的第二个job
(5)显示系统中程序的执行状态
top-q不断地更新、显示系统程序的执行状态
第一行显示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。
第二行为进程情况,依次为进程总数、休眠进程数、运行进程数、僵死进程数、终止进程数。
第三行为CPU状态,依次为用户占用、系统占用、优先进程占用、闲置进程占用。
第四行为内存状态,依次为平均可用内存、已用内存、空闲内存、共享内存、缓存使用内存。
第五行为交换状态,依次为平均可用交换容量、已用容量、闲置容量、高速缓存容量。
PID每个进程的ID。
PPID每个进程的父进程ID。
UID每个进程所有者的UID。
USER每个进程所有者的用户名。
PRI每个进程的优先级别。
NI该进程的优先级值。
SIZE该进程的代码大小加上数据大小再加上堆栈空间大小的总数。
单位是KB。
TSIZE该进程的代码大小。
对于内核进程这是一个很奇怪的值。
DSIZE数据和堆栈的大小。
TRS文本驻留大小。
按"
ctrl+c"
停止查看
(6)以树状图显示执行的程序pstree
pstree-h列出进程树并高亮标出当前执行的程序
2.通信类
(1)本地工作站与UNIX服务器间的文件传输ftp
ftp主机名
或ftp主机的IP地址
后续执行步骤如表2-1所示。
表2-1通讯类命令表
name:
输入帐号
password:
输入密码
ftp>
help
显示ftp可使用的所有命令
lcddir1
改变本地机当前目录为dir1
getfile1
将UNIX服务器文件file1拷到本地机
putfile2
将本地文件file2,拷到UNIX服务器
!
ls
显示本地机当前目录下所有文件
pwd
显示本地机当前所在目录下所有文件
显示UNIX服务器当前目录下所有文件
dir
显示服务器当前目录下所有文件(略同于UNIX的ls-l指令)
显示UNIX服务器当前所有目录位置
cddir1
更改UNIX服务器的目录至dir1下
mget*.c
将服务器中.c文件拷到本地机中
mput*.txt
将所有.txt文件拷贝到服务器
quit
结束ftp工作
bye
(2)检查与UNIX服务器连接是否正常ping
pinghostname
或pingIP-Address
ping
(3)将文件当做E-mail的内容送出mail
mail-s“Subjict-string”username@address<
filename
mail-s“program”user<
file.c
功能:
将file.c当做mail的内容,送至user,subjectname为program
(4)传送E-mail给本地UNIX服务器上的用户mail
mailusername
(5)读取信件mail
mail
(6)列出套接字使用情况socklist
(7)查看网络连接netstat
3.文件编辑器vi
vi是在UNIX上被广泛使用的中英文编辑软件。
vi是visualeditor的缩写,是UNIX提供给用户的一个窗口化编辑环境。
进入vi,直接执行vi编辑程序即可。
$vitest.c
显示器出现vi的编辑窗口,同时vi会将文件复制一份至缓冲区(buffer)。
vi先对缓冲区的文件进行编辑,保留在磁盘中的文件则不变。
编辑完成后,使用者可决定是否要取代原来旧有的文件。
(1)vi的工作模式
vi提供二种工作模式:
输入模式(insertmode)和命令模式(commandmode)。
使用者进入vi后,即处在命令模式下,此刻键入的任何字符皆被视为命令,可进行删除、修改、存盘等操作。
要输入信息,应转换到输入模式。
①命令模式
在输入模式下,按ESC可切换到命令模式。
命令模式下,可选用下列指令离开vi,如表2-2所示。
表2-2vi命令表
:
q!
离开vi,并放弃刚在缓冲区内编辑的内容
wq
将缓冲区内的资料写入磁盘中,并离开vi
ZZ
同wq
x
w
将缓冲区内的资料写入磁盘中,但并不离开vi
q
离开vi,若文件被修改过,则要被要求确认是否放弃修改的内容,此指令可与:
w配合使用
②命令模式下光标的移动,命令如表2-3所示。
表2-3vi光标移动表
H
左移一个字符
J
下移一个字符
K
上移一个字符
L
右移一个字符
移至该行的首
$
移至该行的末
^
移至该行的第一个字符处
移至窗口的第一列
M
移至窗口中间那一列
移至窗口的最后一列
G
移至该文件的最后一列
W,W
下一个单词(W忽略标点)
B,B
上一个单词(B忽略标点)
+
移至下一列的第一个字符处
-
移至上一列的第一个字符处
(
移至该句首
移至该句末
{
移至该段首
}
移至该段末
NG
移至该文件的第n列
N+
移至光标所在位置之后第n列
n-
移至光标所在位置之前第n列
③输入模式
输入以下命令即可进入vi输入模式,如表2-4所示。
表2-4vi输入模式表
a(append)
在光标之后加入资料
A
在该行之末加入资料
i(insert)
在光标之前加入资料
I
在该行之首加入资料
o(open)
新增一行于该行之下,供输入资料用
O
新增一行于该行之上,供输入资料用
Dd
删除当前光标所在行
X
删除当前光标字符
删除当前光标之前字符
U
撤消
重做
F
查找
s
替换,例如:
将文件中的所有"
FOX"
换成"
duck"
用"
:
%s/FOX/duck/g"
ESC
离开输入模式
更多用法见infovi
4.GNUC编