操作系统实验实验报告实验日期:11月23日实验名称:实验一一、实验目的1.学习LINUX操作系统2.熟悉UNIX/LINUX的常用基本命令3.理解fork()与clone()函数的区别和联系4.深入理解生产者和消费者问题二、实验内容(1)安装LINUX:(2)熟悉UNIX/LINUX的常用基本命令如ls、who、wc、pwd、ps、pstree、top,cat,cd,chgrp,chmod,chown,comm,cmp,cp,rm,diff,mv,rmdir等,了解环境。(3)比较fork()和clone()的功能,利用fork()生成子进程和clone()生成线程。(4)利用pthread库,通过其中的mutex来实现生产者和消费者问题。三、项目要求及分析基本要求:(1)安装LINUX:使用FEDORA11(2)熟悉UNIX/LINUX的常用基本命令如ls、who、wc、pwd、ps、pstree、top,cat,cd,chgrp,chmod,chown,comm,cmp,cp,rm,diff,mv,rmdir等,了解环境。(3)比较fork()和clone()的功能,利用fork()生成子进程和clone()生成线程。(4)利用pthread库,通过其中的mutex来实现生产者和消费者问题。四、具体实现1.linux常用指令1.1目录操作和DOS相似,Linux采用树型目录管理结构,由根目录开始一层层将子目录建下去,各子目录以“/”隔开。用户login后,工作目录的位置称为homedirectory,由系统管理员设定。‘—’符号代表自己的homedirectory,例如:~/myfile是指自己home目录下myfile这个文件。Linux的通配符有三种:‘*’和‘?’用法与DOS相同,‘’代表区间内的任一字符,如test[05]即代表test0,test1,……,test5的集合。(1)显示目录文件ls执行格式:ls[atFlgR][name](name可为文件或目录名称)例:ls显示出当前目录下的文件lsa显示出包含隐藏文件的所有文件lst按照文件最后修改时间显示文件lsF显示出当前目录下的文件及其类型lsl显示目录下所有文件的许可权、拥有者、文件大小、修改时间及名称lslg同上lsR显示出该目录及其子目录下的文件注:ls与其它命令搭配使用可以生出很多技巧(最简单的如“ls-l|more”),更多用法请输入ls--help查看,其它命令的更多用法请输入“命令名—help“查看。(2)建新目录:mkdir执行格式:mkdirdirectoryname例:mkdirdir1(新建一名为dir1的目录)(3)删除目录:rmdir执行格式:rmdirdirectoryname或rmdirectoryname例:rmdirdir1删除目录dir1,但它必须是空目录,否则无法删除Rmrdir1删除目录dir1及其下所有文件及子目录rm-rfdir1不管是否空目录,统统删除,而且不给出提示,使用时要小心(4)改变工作目录位置:cd执行格式:cd[name]例:cd改变目录位置至用户login时的workingdirectorycddir1改变目录位置,至dir1目录cd~user改变目录位置,至用户的workingdirectorycd..改变目录位置,至当前目录的上层目录-4-操作系统实验指导书cd../user改变目录位置,至上一级目录下的user目录cd/dir-name1/dir-name2改变目录位置,至绝对路径(Fullpath)cd-回到进入当前目录前的上一个目录(5)显示当前所在目录pwd执行格式:pwd(6)查看目录大小du执行格式:du[s]directory例:dudir1显示目录dir1及其子目录容量(以kb为单位)显示目录dir1的总容量dusdir1(7)显示环境变量echo$HOME显示家目录echo$PATH显示可执行文件搜索路径env显示所有环境变量(可能很多,最好用env|more,env|grepPATH等)(8)修改环境变量,在bash下用export,如:exportPATH=$PATH:/usr/local/bin想知道export的具体用法,可以用shell的help命令:helpexport2、文件操作(1)查看文件(可以是二进制的)内容cat执行格式:catfilename或morefilename或catfilename|more例:以连续显示方式,查看文件file1的内容catfile1morefile1或catfile1|more以分页方式查看文件的内容(2)删除文件rm执行格式:rmfilename例:rmfile?rmf*(3)复制文件cp执行格式:cp[r]sourcedestination例:将file1复制成file2cpfile1file2将file1复制到目录dir1cpfile1dir1将file1复制到当前目录cp/tmp/file1将file1复制到当前目录名为file2cp/tmp/file1file2cp–rdir1dir2(recursivecopy)复制整个目录。(4)移动或更改文件、目录名称mv执行格式:mvsourcedestination例:将文件file1,更名为file2mvfile1file2-5-操作系统实验指导书将文件file1,移到目录dir1下mvfile1dir1mvdir1dir2(5)比较文件(可以是二进制的)或目录的内容diff执行格式:diff[r]name1name2(name1、name2同为文件或目录)例:difffile1file2比较file1与file2的不同处比较dir1与dir2的不同处diffrdir1dir2(6)文件中字符串的查找grep执行格式:grepstringfile例:查找并列出串abc所在的整行文字grepabcfile1(7)文件或命令的路径寻找执行格式一:whereiscommand显示命令的路径执行格式二:whichcommand显示路径及使用者所定义的别名执行格式三:whatiscommand显示命令的功能摘要执行格式四:findsearchpathnamefilename-print搜寻指定路径下某文件的路径执行格式五:locatefilename根据系统预先生成的文件/目录数据库(/var/lib/slocate/slocate.db)查找匹配的文件/目录,查找速度很快,如果有刚进行的文件改变而系统未到执行定时更新数据库的时间,可以打入updatedb命令手动更新。(8)建立文件或目录的链接ln例:lnsourcetarget1建立source文件(已存在)的硬链接,命名为target1ln-ssourcetarget2建立source文件的符号链接,命名为target23、系统询问与权限口令(1)查看系统中的使用者执行格式:who(2)查看username执行格式:查看自己的usernamewhoamI(3)改变自己的username的帐号与口令su执行格式:suusername例:输入帐号suusername输入密码password(4)文件属性的设置chmod改变文件或目录的读、写、执行的允许权执行格式:chmod[R]modename其中:[-R]为递归处理,将指定目录下所有文件及子目录一并处理mode为3-8位数字,是文件/目录读、写、执行允许权的缩写(r:read,数字代号为4,w:write,数字代号为2,x:execute,数字代号为1)-6-操作系统实验指导书mode:rwxrwxrwxusergroupother缩写:(u)(g)(o)例:chmod755dir1将目录dir1设定成任何人皆有读取及执行的权利,但只有拥有者可作写修改。其中7=4+2+1,5=4+1将file1设为拥有者可以读、写和执行chmod700file1将file2,增加拥有者可执行的权利chmodo+xfile2将file3,增加组使用者可执行的权利chmodg+xfile3将file4,除去其它使用者可读取的权利chmodorfile4(5)改变文件或目录所有权chown执行格式:chown[R]usernamename例:chownuserfile1将文件file1改为user所有将目录dir1及其下所有文件和子目录,改为chownRuserdir1user所有(6)检查用户所在组名称groups执行格式:groups(7)改变文件或目录的组拥有权chgrp执行格式:chgrp[R]groupnamename例:chgrpvlsifile1将文件file1改为vlsi组所有chgrpRimagedir1将目录dir1及其下所有文件和子目录,改为image群组(8)改变文件或目录的最后修改时间touch执行格式:touchname4、进程操作(1)查看系统目前的进程ps执行格式:ps[aux]例:ps或psx查看系统中属于自己的process查看系统中所有使用者的processpsau查看系统中包含系统内部及所有使用者的processpsauxps-aux|grepapache找出系统中运行的所有名称中带有apache串的process(2)查看正在background中执行的process执行格式:jobs(3)结束或终止进程kill执行格式:(PID为利用ps命令所查出的processID)kill[9]PID例:kill456或kill9456终止processID为456的process-7-操作系统实验指导书(4)后台(background)执行processcommand的命令执行格式:command&(在命令后加上&)例:gccfile1&在后台编译file1.c注意:按下^Z,暂停正在执行的process。键入”bg”,将所暂停的process置入background中继续执行。例:gccfile1&^Zstoppedbg(5)结束或终止在background中的进程kill执行格式:kill%n例:kill%1终止在background中的第一个job终止在background中的第二个jobkill%2(6)显示系统中程序的执行状态例:top-q不断地更新、显示系统程序的执行状态第一行显示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。第二行为进程情况,依次为进程总数、休眠进程数、运行进程数、僵死进程数、终止进程数。第三行为CPU状态,依次为用户占用、系统占用、优先进程占用、闲置进程占用。第四行为内存状态,依次为平均可用内存、已用内存、空闲内存、共享内存、缓存使用内存。第五行为交换状态,依次为平均可用交换容量、已用容量、闲置容量、高速缓存容量。PID每个进程的ID。PPID每个进程的父进程ID。UID每个进程所有者的UID。USER每个进程所有者的用户名。PRI每个进程的优先级别。NI该进程的优先级值。SIZE该进程的代码大小加上数据大小再加上堆栈空间大小的总数。单位是KB。TSIZE该进程的代码大小。对于内核进程这是一个很奇怪的值。DSIZE数据和堆栈的大小。TRS文本驻留大小。D被标记为“不干净”的页项目。LIB使用的库页的大小。对于ELF进程没有作用。RSS该进程占用的物理内存的总数量,单位是KB。SHARE该进程使用共享内存的数量。STAT该进程的状态。其中S代表休眠状态;D代表不可中断的休眠状态;R代表运行状态;Z代表僵死状态;T代表停止或跟踪状态。TIME该进程自启动以来所占用的总CPU时间。如果进入的是累计模式,那么该时间还包括这个进程子进程所占用的时间。且标题会变成CTIME。%CPU该进程自最近一次刷新以来所占用的CPU时间和总时间的百分比。%MEM该进程占用的物理内存占总内存的百分比。COMMAND该进程的命令名称,如果一行显示不下,则会进行截取。内存中的进程会有一个完整的命令行-8-操作系统实验指导书