操作系统part1

p.s 此文档针对西安交通大学的操作系统实验

1 实验目的

熟练掌握Linux操作系统的使用,掌握Linux的系统的进程管理相关内容,掌握进程之间的通信方式。

进程是操作系统中最重要的概念,贯穿始终,也是学习现代操作系统的关键。通过本次实验,要求理解进程的实质和进程管理的机制。在Linux系统下实现进程从创建到终止的全过程,从中体会进程的创建过程、父进程和子进程的关系、进程状态的变化、进程之间的同步机制、进程调度的原理和以信号和管道为代表的进程间通信方式的实现。

2 实验内容

(1)

在命令行新建多个普通用户,如tux,bob,Alice,lily等,给每个用户创建密码,并将这几个用户分到同一个组xjtuse中。再新建两个组coding和testing,使得某些用户也分别为其组用户。在root用户和新建用户之间切换,验证用户创建成功与否。(给出相关命令运行结果)

(2)

实现sudo 委托管理任务,给上述某一指定的普通用户赋予创建用户的权限。(给出相关配置文件和命令运行结果)

(3)

备份数据是系统应该定期执行的任务,请利用cron计划作业在每周五下午6:10对某用户(如tux)主目录下的文件进行备份(可使用tar 命令)。给出相关运行结果和邮件记录。

(4)编制实现软中断通信的程序

  使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上发出的中断信号(即按delete键),当父进程接收到这两个软中断的某一个后,父进程用系统调用kill()向两个子进程分别发出整数值为16和17软中断信号,子进程获得对应软中断信号,然后分别输出下列信息后终止:

Child process 1 is killed by parent !!  

Child process 2 is killed by parent !!  

父进程调用wait()函数等待两个子进程终止后,输入以下信息,结束进程执行:

Parent process is killed!!

多运行几次编写的程序,简略分析出现不同结果的原因。

(5)编制实现进程的管道通信的程序

使用系统调用pipe()建立一条管道线,两个子进程分别向管道写一句话:

Child process 1 is sending a message! 

Child process 2 is sending a message! 

而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。

要求:父进程先接收子进程P1发来的消息,然后再接收子进程P2发来的消息。

3 题目分析及基本设计过程分析

3.1 题目所涉及知识点

3.1.1 useradd、passwd、groupadd、usermod

3.1.2 sudo与sudoers配置文件

3.1.3 cron、crontab与mail

3.1.4 fork、signal、kill、wait、pipe

3.2 实验设计过程分析

  • 创建多个用户和组,将用户添加到组中。
  • 使用 susudo -u 切换用户,验证用户创建和组分配是否成功。
  • 编辑 /etc/sudoers 文件,添加授权信息。
  • 通过 sudo 执行授权的命令,验证用户是否能够成功执行。
  • 编辑 crontab,添加备份任务。
  • 等待计划任务执行,验证是否按计划备份。
  • 编写C程序,创建子进程,设置信号处理函数。
  • 通过软中断信号进行通信,验证父子进程的交互。
  • 编写C程序,创建管道,创建子进程。
  • 子进程向管道写入消息,父进程从管道读取消息,验证通信的顺序。

4 实验过程

由于我使用的是Ubuntu系统,所以root用户在最开始是用不了的,我的默认账户是leon

可以看此篇blog参考如何在Ubuntu中获得root:

Ubuntu获取root权限_ubuntu root-CSDN博客

(1)

修改tux用户密码的图裂了,参照其他的即可

创建组,使用cat /etc/group来查看创建情况:

(2)

给leon添加root权限,利用vim修改sudoers:

注意在Ubuntu系统中,可能需要安装一些必要的插件,按照提示进行安装即可

拥有了权限leon添加用户时:

没拥有权限的bear添加用户时:

(3)

修改crontab文件:

我的图又裂了,这里就讲一下怎么写:

利用crontab -e来编辑定时任务,任务使用tar压缩

根据题目要求:

10 18 * * 5 (tar操作)

其中tar操作:

tar cvzf  tux.tar.gz  /tux

也可以同时添加一个离自己时间比较近的定时任务,然后看有没有邮件:

随后使用mail就可以知道具体内容

(4)编制实现软中断通信的程序

代码如下(虚拟机被我搞崩了,只能看之前截的图了)

(5)编制实现进程的管道通信的程序

5 实验过程中可能出现的问题

(1)vim不会编辑:

自己查询网络

(2)vim编辑时提示是read-only

保存时在wq后加上!

(3)查看定时任务列表

crontab -l

其他crontab操作请查看:Linux中Crontab(定时任务)命令详解及使用教程_linux定时任务命令-CSDN博客

6 实验体会

对于LINUX操作系统的用户,组,进程有了基本的了解,初步掌握了su、kill、fork等基本操作,对于操作系统的运行方式有了一些了解。

在进行这些Linux实验的过程中,我深刻体验到了操作系统的核心概念与实际应用。通过创建用户、分组、授权,我加深了对用户管理和权限控制的理解。使用cron进行定时备份任务的实践,让我更好地掌握了系统定时任务的配置。软中断通信和管道通信的程序设计,则锻炼了我对进程间通信的理解和实现。这些实验不仅提升了我的Linux操作技能,也增强了我对操作系统原理的认识,为今后深入学习和应用提供了坚实基础。

  • 14
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值