Linux实验一报告

实验一 Linux命令使用

班级: 姓名: 学号: 上机时间:

任课教师: 实验教师: 实验成绩:

一、实验目的

?掌握Linux的一般命令格式。

?掌握有关文件和目录操作的常用命令。

?掌握有关进程操作的常用命令。

?熟练使用man命令。

二、实验注意事项

实验环境与系统是共用设施,请不要在系统内做对系统或对其他用户不安全的事情。要求每个同学登录后系统后,要在主目录(/home/student)下创建一个属于自己的子目录(以自己(拼音)名字或学号)。以后所有工作都要在自己的目录内进行。建议以后的实验都在同台计算机上做,这样可以保持连续性。

三、实验内容及步骤:

1.登录进入系统。

开机,选择 进入,再选择 登陆窗口,输入用户名: ,

输入密码: ,进入Ubuntu图形桌面环境。

2.使用简单命令:date,cal,who,echo,clear等,了解Linux命令格式。

要启动一个终端,可以选择 在终端提示符下输入:date ? 显示:20xx年 05月 29日 星期日 20:53:32 CST 。

在终端提示符下输入:who ? 显示:

在终端提示符下输入:who am I ? 显示:在终端下显示Hello! 命令:。 在终端提示符下输入:clear ? 显示:。

在终端提示符下输入:cal ? 显示:

十月 2014

日 一 二 三 四 五 六

1 2 3 4

5 6 7 8 9 10 11

12 13 14 15 16 17 18

19 20 21 22 23 24 25

26 27 28 29 30 31

3.浏览文件系统:

(1)运行pwd 命令,确定当前工作目录,记录之: /home/hbgyzy 。

(2)运行ls命令,查看当前目录下有哪些文件和子目录,简略记录。

hbgyzy@hbgyzy-HP-Compaq-dx7408-Microtower:~$ ls -C /lib/brltty

brltty.sh libbrlttybeu.so libbrlttybmt.so libbrlttybvs.so

libbrlttybal.so libbrlttybfs.so libbrlttybnp.so libbrlttysal.so

libbrlttybat.so libbrlttybhm.so libbrlttybpg.so libbrlttysbl.so

libbrlttybba.so libbrlttybht.so libbrlttybpm.so libbrlttyscb.so

libbrlttybbc.so libbrlttybhw.so libbrlttybsk.so libbrlttysfv.so

libbrlttybbd.so libbrlttybil.so libbrlttybtn.so libbrlttysgs.so

libbrlttybbl.so libbrlttybir.so libbrlttybts.so libbrlttysxs.so

libbrlttybbm.so libbrlttyblt.so libbrlttybtt.so libbrlttyxlx.so

libbrlttybbn.so libbrlttybmb.so libbrlttybvd.so libbrlttyxsc.so

libbrlttybcb.so libbrlttybmd.so libbrlttybvo.so

libbrlttybec.so libbrlttybmn.so libbrlttybvr.so

(3)运行ls -l命令,理解文件各字段的含义,找一个文件标注。

总用量 12

(4)运行ls -ai命令,理解各字段的含义。

(5)使用cd /命令,将当前目录改变为根目录(/)。运行ls -l命令,结合书中给出的Linux树状目录结构,了解各目录的作用。

命令: ls -l ? 显示:(简略记之)

总用量 96

命令: cd / ? 回到:命令: pwd ? 显示:

(6)直接使用cd,回到了那里?用pwd验证之。

命令:

回到: 命令:?

显示: (7)用 mkdir建立一个子目录subdir。

命令:?

(8)将当前目录改到subdir。

命令:

4.文件操作:

(1)验证当前目录在subdir。

命令:? 显示:(2)运行date>file1,然后运行cat file1,看到什么信息?

命令:? ,命令:?

显示:

“ >”是什么符号?解释“ date>file1 ”的含义:(3)运行cat subdir,会有什么结果?为什么?

结果:为什么?

(4)分别用cat和more查看文件内容(提示:/etc/manpath.config)。比较cat和more这两个命令的异同。

(5)利用man 命令显示date命令的使用说明。

命令:?

显示:(简略记之)

。 如何从man命令状态退回到终端窗口?。

(6)运行man date>>file1,再运行cat file1 ,看到什么?

命令:命令: 显示:

man date>>file1含义:。 (7)利用ls -l file1,了解链接计数是多少?运行 ln file1 ../fa,再运行ls -l file1,看链接计数有无变化?用cat命令显示fa文件内容。(注意:做完后要删除所做硬链接,恢复原样以便后面同学再做此实验)

命令:ls -l file1? 显示的链接计数: 命令:ln file1 ../fa?

命令:ls -l file1? 显示的链接计数:有无变化?。 命令:cat fa? 显示: 。

(8)使用head和tail命令分别显示file1文件的前十行和后十行的内容。 命令:?

命令:?

(9)运行cp file1 file2,然后ls -l,看到什么?

命令:cp file1 file2 ?

ls -l?

解释显示结果:

运行mv file2 file3, 然后ls -l,看到什么?

命令:mv file2 file3?

ls –l ?

解释显示结果: 运行cat f*,结果怎样?

命令:cat f* ?

解释显示结果:

(10)运行rm file3,然后ls -l,看到什么?

命令:rm file3 ?

命令:ls -l ?

解释显示结果:

(11)在/etc/passwd文件中查找适合你的注册名的行。

命令:(12)运行ls -l理解各文件的权限是什么?(选择两个不同文件标注)

(13)用两种方式改变file1的权限(实例)。

①以符号模式改变权限:

②以绝对方式改变权限:

(14)统计file1文件的行数、字数、字节数。

命令:?

显示: 解释各参数的含义:

(15)运行命令man ls |more

“man ls |more”的含义: 运行cat file1|head -20|tee file5,结果如何?

显示结果: “cat file1|head -20|tee file5”的含义: 运行cat file5|wc,结果如何?

显示结果: “cat file5|wc”的含义:(16)运行cd,回到主目录,运行mkdir mydir,建立mydir 子目录,运行ls -l查看目录,再运行rmdir mydir,看到什么结果?如果要删除mydir目录,该如何操作?

运行命令:cd <回车键> 回到: 运行命令:mkdir mydir 建立: 运行命令:查看所建目录内容

运行命令:cp /etc/profile /home/student/mydir

解释该命令: 查看mydir内容命令: 运行命令: rmdir mydir ?

看到什么结果:

如何处理?

注意:在这个实验中没有特别的难点,但是要注意的是,rm命令删除文件的时候,不给任何提示,因此一定要谨慎,不然很容易删除不应该删除的文件。

 

第二篇:Linux内核实验报告——实验6

Linux内核实验报告

实验题目:   构造新内核同步机制实验

实验目的:

   要设计一组新的内核同步原语,它们具有如下的功能:

能够使多个进程阻塞在某一特定的事件上,直到另一进程完成这一事件释放相关资源,给

内核发送特定消息然后由内核唤醒这些被阻塞的进程。如果没有进程阻塞在这个事件上,

则消息被忽略。

    可以编写 4 个系统调用来实现这些功能要求:

1、生成一个事件的系统调用函数:

int myevent_open(int eventNum);

    生成一个事件,返回该事件的 ID,如果参数为 0,表示是一个新的事件,否则就是一

    个存在的事件。

    2、将进程阻塞到一个事件的系统调用函数:

    int myevent_wait(int eventNum);

    进程阻塞到 eventNum 事件,直到该事件完成才被唤醒。

    3、唤醒等某事件进程的系统调用函数:

    int myevent_signal(int eventNum);

    唤醒所有等 eventNum 事件的进程,如果队列为空,则忽略。

    4、撤销一个事件的系统调用函数:

    int myevent_close(int eventNum);

    撤销一个参数代表的事件,成功返回 eventNum。

最后重新设计这些系统调用,模拟实现信号量机制。

硬件环境:

Pentium(R) Dual-Core CPU       T4400  @ 2.20GHz

软件环境:

Ubuntu12.04

gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)

内核版本:3.0.24

实验步骤:

1、    代码分析

        结构体:

P操作:

V操作:

2、      设计说明

在这里着重说明信号量机制的实现。

   可以通过在原有的时间机制上加上资源数,每次进行p操作的时候,如果资源数足够,则将资源数减1,否则将进程放到一个等待队列中去;每次进行v操作时候,也需要判断资源数是否够,不过在现在的策略下,只需要判断等待队列上是否有进程在等待,如果没有,很好,说明现在的资源数是充足的,而没有进程出现等待的现象,所以只需要将资源数加上1;反之,如果等待队列上已经有进程在等待的话,说明资源数已经不够,那么需要将队列头部的进程唤醒,接替刚完成的进程。

    其中最重要的是对资源数的同步实现,对于资源计数,在这里使用了原子变量。

    将进程添加到队列的时候,使用了独占等待的方法,使用了add_to_queue_exclusive,该函数将进程放到指定的队列尾部,而且置上exclusive标记。

    在唤醒的时候,使用wake_up宏来将指定队列上的进程唤醒,注意该宏的作用是将所有的non_exclusive的进程以及一个exclusive的进程唤醒。为什么会这样呢,观察源码,大致想法是在加非独占的进程的时候是加到队列首部的,而在加独占的等待的时候是加到队列尾部的,这一设计十分精妙。

3、    调试记录

       

结论分析与体会:

       在设计的过程中,对以前操作系统上的同步机制等实现有了更一步的理解。同时在理解休眠等机制的时候,通过阅读源码,对内核也有了更深一步的了解。

程序完整源代码:

信号量实现:

参考材料

相关推荐