操作系统实验报告1Linux操作使用编程与进程创建

合集下载

实验1:Linux操作、编程与进程创建

实验1:Linux操作、编程与进程创建

操作系统课程实验报告实验题目:Linux操作、编程与进程创建专业学生姓名班级学号教师陈兴国、朱洁指导单位计算机学院日期一、实验目的1.能够安装某Linux发行版本(例如Red Hat)2、了解Linux的启动过程3.了解Linux文件的组织结构4.熟悉X Window 环境5.练习使用Linux 常用命令6. 熟练使用Linux的C语言开发环境7.学习并掌握Linux 编译工具 gcc 的使用方法二、实验指导(大家自行补充进程创建的内容)0.安装Linux可以多引导方式在PC上安装linux,或是在Windows下利用VMware等虚拟机软件来安装linux.1.开机进入Linux后,Linux初始化过程中会显示大量初始化信息,要求学习者逐渐读懂这些初始化信息。

2.登录及修改Linux在相应初始化完成后,会在屏幕上显示“login:”此时输入用户名(即帐号)并键入回车,则系统显示”password:”,然后输入口令并键入回车。

此时,系统验证所键入的用户名和口令,若正确则成功进入系统。

若用户希望修改口令,则可以在成功进入系统后,在命令提示符($或#)后输入“passwd”并键入回车,则系统显示”new password:”.当用户键入新口令并键入回车后,系统再显示“retry new password:”,此时需要再次键入刚才输入的新口令并键入回车,则系统接收并记住新口令。

3.退出、注销当用户不再使用Linux时,在离开前,通常应键入“logout”命令或Ctrl+D来退出帐号4.关机或重启在Linux下,涉及到关机或重启的命令有1)halt命令。

这是最常用的关机方式2) reboot命令。

用户只是想退出操作系统,并不想关机,还想再进入其他OS(例如WINDOWS)。

3)shutdown命令。

在多用户机器上,系统管理员在关机前,通知各用户即将关机,以便给各用户留下一定的时间作保存、退出工作。

4)在窗口工作方式下,可以通过与Windows类似的开始菜单老关机或重启:“开始”→“关闭系统” →“关机或重新启” →…操作系统实验指导5.窗口工作方式与终端工作方式进入窗口工作方式后,可以按Ctrl+Alt+F2进入终端工作方式,之后可以按Ctrl+Alt+F7再从终端工作方式回到窗口工作方式。

操作系统实验报告理解Linux下进程和线程的创建并发执行过程。

操作系统实验报告理解Linux下进程和线程的创建并发执行过程。

操作系统上机实验报告实验名称:进程和线程实验目的:理解unix/Linux下进程和线程的创建、并发执行过程。

实验内容:1.进程的创建2.多线程应用实验步骤及分析:一、进程的创建下面这个C程序展示了UNIX系统中父进程创建子进程及各自分开活动的情况。

fork( )创建一个新进程。

系统调用格式:pid=fork( )参数定义:int fork( )fork( )返回值意义如下:0:在子进程中,pid变量保存的fork( )返回值为0,表示当前进程是子进程。

>0:在父进程中,pid变量保存的fork( )返回值为子进程的id值(进程唯一标识符)。

-1:创建失败。

如果fork( )调用成功,它向父进程返回子进程的PID,并向子进程返回0,即fork( )被调用了一次,但返回了两次。

此时OS在内存中建立一个新进程,所建的新进程是调用fork( )父进程(parent process)的副本,称为子进程(child process)。

子进程继承了父进程的许多特性,并具有与父进程完全相同的用户级上下文。

父进程与子进程并发执行。

2、参考程序代码/*process.c*/#include <stdio.h>#include <sys/types.h>main(int argc,char *argv[]){int pid;/* fork another process */pid = fork();if (pid < 0) { /* error occurred */fprintf(stderr, "Fork Failed");exit(-1);}else if (pid == 0) { /* child process */execlp( "/bin/ls", "ls",NULL);}else {/* parent process *//* parent will wait for the child to complete */ wait(NULL);printf( "Child Complete" );exit(0);}}3、编译和运行$gcc process.c –o processs4、运行$./process编辑如图所示:运行如图所示:思考:(1)系统是怎样创建进程的?1,申请空白PCB(进程控制块);2,为新进程分派资源;3,初始化PCB;4,将新进程插入就绪队列;(2)扩展程序,在父进程中输出1到5,在子进程中输出6-10,要求父子进程并发输出;记录实验结果,并给出简单分析。

实验报告linux编程

实验报告linux编程

实验报告linux编程实验报告:Linux编程引言:Linux操作系统是一种开源的操作系统,具有高度的灵活性和可定制性。

在本次实验中,我们将探索Linux编程的基本概念和技术。

通过编写简单的程序,我们将了解Linux系统的工作原理以及如何利用其强大的功能来开发应用程序。

一、Linux操作系统简介Linux操作系统是一种基于Unix的开源操作系统,它由许多不同的组件组成,包括内核、命令行工具和图形界面等。

Linux操作系统具有许多优势,如稳定性、安全性和可扩展性。

它广泛用于服务器、嵌入式设备和个人电脑等领域。

二、Linux编程环境搭建1. 安装Linux操作系统:选择适合自己的Linux发行版,如Ubuntu、Fedora等,并按照官方指南进行安装。

2. 安装开发工具:在Linux系统上进行编程需要安装一些开发工具,如GCC编译器、GNU调试器(GDB)等。

三、Linux编程基础1. Shell脚本编程:Shell是Linux系统的命令行解释器,通过编写Shell脚本可以实现自动化任务和批处理任务。

Shell脚本使用一些特定的语法和命令来执行任务。

2. C语言编程:C语言是Linux系统中最常用的编程语言之一,通过编写C程序可以实现更高级的功能。

C语言提供了丰富的库函数和系统调用,可以与Linux系统进行交互。

四、Linux系统编程1. 进程管理:Linux系统是一个多进程的操作系统,通过编写程序可以创建、管理和控制进程。

可以使用fork()和exec()等系统调用来创建新进程,使用wait()和kill()等系统调用来管理进程。

2. 文件操作:Linux系统中的文件操作是非常重要的一部分,通过编写程序可以实现文件的读取、写入和修改等功能。

可以使用open()、read()和write()等系统调用来进行文件操作。

3. 网络编程:Linux系统支持网络编程,通过编写程序可以实现网络通信的功能。

可以使用socket()和bind()等系统调用来创建和管理网络套接字。

进程创建实验报告

进程创建实验报告

进程创建实验报告进程创建实验报告引言:进程是计算机系统中的基本概念之一,也是操作系统的核心概念之一。

进程创建是操作系统中的一个重要操作,它涉及到资源的分配和管理,对于操作系统的正常运行具有重要意义。

本实验旨在通过编写一个简单的程序,探索进程创建的过程以及相关概念。

一、实验目的本实验的主要目的是了解进程创建的基本过程,并掌握相关的概念和操作。

通过实践,加深对操作系统的理解和应用。

二、实验环境本实验使用的是Linux操作系统,具体的版本为Ubuntu 20.04 LTS。

在该环境下,我们可以使用C语言编写程序,并通过gcc编译器进行编译和运行。

三、实验步骤1. 编写源代码首先,我们需要编写一个简单的C语言程序,用于创建一个新的进程。

在程序中,我们可以使用fork()函数来创建新的进程。

具体的代码如下:```c#include <stdio.h>#include <unistd.h>int main() {pid_t pid;pid = fork();if (pid < 0) {printf("Failed to create a new process.\n");} else if (pid == 0) {printf("This is the child process.\n");} else {printf("This is the parent process.\n");}return 0;}```2. 编译和运行程序在终端中,使用gcc编译器将源代码编译为可执行文件。

具体的命令如下:```shellgcc -o process_create process_create.c```编译成功后,我们可以通过运行可执行文件来创建新的进程。

具体的命令如下:```shell./process_create```3. 观察输出结果运行程序后,我们可以观察到输出结果。

linux操作系统实验报告

linux操作系统实验报告

linux操作系统实验报告第一篇:linux操作系统实验报告Linux实验报告一一、实验步骤及内容1.虚拟机软件的安装(1)先准备虚拟机安装包。

(2)更改安装路径:“D: VMwareVMware Workstationvmware.exe”(3)输入序列号:ctrl+v,在安装过程中不能进行复制剪切操作。

(4)不能重新启动,才能继续安装汉化版D: vmwarevmware workstation2.新建一个虚拟机并进行配置(1)单击新建虚拟机虚拟机的类型选择:典型安装选择客户端操作系统:linux虚拟机的名字及位置根据需要网络类型选择:,桥接。

指定的磁盘容量删除软驱:双击floppy—remove虚拟内存设置:双击memory—1024MB设置linux的安装文件:选择安装镜像文件—指定第一个安装文件—就可以啦!之后会提示安装第二个安装文件就进行选择第二个中间鼠标切换用CTRL+ALT。

3.安装LINUX操作系统(1)要确定鼠标是否在虚拟机的激活状态下:敲回车不需要检测安装文件选择skip进入linux的安装前的配置选项:选择安装的语言—中文简体键盘:--默认鼠标:--默认安装类型:--workstation磁盘分区:--自动分区引导程序:默认网络配置:默认防火墙:无防火墙支持的语言:中文时区:亚洲-上海密码:root123456安装的软件包:全部。

二.在已有虚拟机软件的基础上安装LINUX的技巧。

(1)新建虚拟机—典型安装—linux ,red hat linux---给虚拟机命名,并且指定安装位置d:red hat linux---桥接---10G。

(2)在刚才建立的虚拟机上安装linux系统.(3)配置要安装的linux系统的安装文件iso镜像文件(4)选择配置好linux镜像文件刚才建立的虚拟机,启动虚拟机,开始安装。

三.实验总结充分了解linux系统的安装,学会新建虚拟机,在虚拟机上安装linux系统.和一些简单的技巧并对此门课程有了一定的兴趣。

实验一进程创建 Linux实验报告

实验一进程创建  Linux实验报告

实验一进程创建【实验目的和要求】1、1.了解进程的概念及意义;2.了解子进程和父进程;3.掌握创建进程的方法。

【实验内容】1、1.子进程和父进程的创建;2.编写附件中的程序实例;3.撰写实验报告。

【实验原理】1、原型:#include <unistd.h>pid_t fork(void);在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。

新进程为子进程,而原进程为父进程。

fork函数创建子进程的过程为:使用fork函数得到的子进程是父进程的一个复制品,它从父进程继承了进程的地址空间,包括进程上下文、进程堆栈、内存信息、打开的文件描述符、信号控制设定、进程优先级、进程组号、当前工作目录、根目录、资源限制、控制终端,而子进程所独有的只有它的进程号、资源使用和计时器等。

通过这种复制方式创建出子进程后,原有进程和子进程都从函数fork返回,各自继续往下运行,但是原进程的fork返回值与子进程的fork返回值不同,在原进程中,fork返回子进程的pid,而在子进程中,fork返回0,如果fork返回负值,表示创建子进程失败。

子进程和父进程继续执行fork调用之后的指令。

子进程是父进程的副本。

例如,子进程获得父进程数据空间、堆和栈的副本。

注意,这是子进程所有用的副本。

父进程和子进程并不共享这些存储空间部分。

父进程和子进程共享正文段。

2、原型:#include <unistd.h>pid_t vfork(void);vfork函数的调用序列和返回值与fork相同,但两者的语义不同。

vfork函数用于创建一个新进程,而该进程的目的是exec一个新程序。

vfork不将父进程的地址空间完全复制到子进程中,因为子进程会立即调用exec,它在父进程的空间中运行。

vfork保证子进程先运行,在它调用exit之后父进程才可能被调度运行,当子进程调用这两个函数中的任意一个时,父进程会恢复运行。

linux系统使用实验报告

linux系统使用实验报告

linux系统使用实验报告Linux 系统使用实验报告一、实验目的本次实验旨在深入了解和熟悉 Linux 操作系统的基本操作、命令行使用以及系统配置,掌握常见的文件管理、进程管理、用户权限管理等功能,提高对 Linux 系统的实际应用能力。

二、实验环境1、操作系统:Ubuntu 2004 LTS2、实验工具:终端模拟器(Terminal)三、实验内容与步骤(一)系统登录与基本命令1、启动计算机,选择 Ubuntu 操作系统,输入用户名和密码登录系统。

2、打开终端模拟器,熟悉常用的基本命令,如`ls` (列出当前目录下的文件和文件夹)、`cd` (切换目录)、`mkdir` (创建新目录)、`rmdir` (删除空目录)等。

(二)文件管理1、在用户主目录下创建一个名为`experiment` 的文件夹,使用`mkdir experiment` 命令。

2、进入该文件夹,使用`cd experiment` 命令。

3、在`experiment` 文件夹中创建一个文本文件`filetxt` ,使用`touch filetxt` 命令。

4、使用`vi` 或`nano` 编辑器打开`filetxt` 文件,输入一些文本内容,并保存退出。

5、查看文件的内容,使用`cat filetxt` 命令。

6、复制文件,使用`cp filetxt file_copytxt` 命令。

7、移动文件,使用`mv filetxt/`命令将文件移动到上级目录。

8、删除文件,使用`rm file_copytxt` 命令。

(三)进程管理1、运行一个后台进程,例如`ping &`,然后使用`jobs` 命令查看后台进程。

2、将后台进程切换到前台,使用`fg %1` (其中%1 为后台进程的编号)命令。

3、终止进程,使用`Ctrl + C` 组合键终止正在运行的进程。

4、查看系统当前运行的进程,使用`ps aux` 命令。

(四)用户权限管理1、创建一个新用户,使用`sudo adduser username` 命令,其中`username` 为新用户的用户名。

进程创建实验报告

进程创建实验报告

实验名称:进程创建实验实验目的:1. 理解进程的概念和进程创建的过程。

2. 掌握使用系统调用创建进程的方法。

3. 分析进程创建的参数和返回值。

4. 了解进程的层次结构。

实验环境:操作系统:Linux编译器:gcc开发环境:Eclipse/Visual Studio Code实验内容:1. 理论学习- 进程的概念:进程是计算机系统中正在运行的可执行程序实例,具有独立的内存空间、执行状态和系统资源。

- 进程创建:操作系统通过创建一个新的进程来启动一个程序,新的进程会继承父进程的某些属性。

2. 实验步骤(1)编写C语言程序,使用系统调用创建进程。

(2)观察进程的创建过程,分析进程的层次结构。

(3)测试进程创建的参数和返回值。

实验代码:```c#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <unistd.h>int main() {pid_t pid;pid = fork(); // 创建子进程if (pid == 0) { // 子进程printf("子进程 %d\n", getpid());exit(0);} else if (pid > 0) { // 父进程printf("父进程 %d, 子进程 %d\n", getpid(), pid);exit(0);} else { // 创建进程失败perror("fork error");exit(1);}return 0;}```实验结果与分析:1. 进程创建过程- 通过`fork()`系统调用创建子进程,返回值分别为子进程ID和0。

父进程的返回值为子进程ID,子进程的返回值为0。

- 在父进程中,打印出父进程和子进程的进程ID,观察到父进程和子进程的进程ID不同。

操作系统linux版实验报告

操作系统linux版实验报告

操作系统实验报告(Linux版)网络142 豹 142999实验一观察Linux进程状态一、实验目的在本实验中学习Linux操作系统的进程状态,并通过编写一些简单代码来观察各种情况下,Linux进程的状态,进一步理解进程的状态及其转换机制。

二、实验环境硬件环境:计算机一台,局域网环境;软件环境:Linux Ubuntu操作系统,gcc编译器。

(四)查看“不可中断阻塞”状态(D)创建一个C程序,如uninter_status.c,让其睡眠30s代码:#include<unistd.h>#include<stdio.h>int main(){int i=0,j=0,k=0;for(i=0;i<1000000;i++){for(j=0;j<1000000;j++){k++;k--;}}}实验结果:(二)查看“暂停”状态(T)运行run_status进程,其进入R状态:代码同上:(三)查看“可中断阻塞”状态(S)创建一个C程序,如interruptiblie_status.c,让其睡眠30s 编译,后台运行该程序(后接&符号),并使用ps命令查看运行状态代码:#include<unistd.h>#include<stdio.h>int main(){sleep(30);return;}实验结果:(四)查看“不可中断阻塞”状态(D)创建一个C程序,如uninter_status.c,让其睡眠30s编译,后台运行该程序(后接&),并使用ps命令查看运行状态代码:#include<unistd.h>#include<stdio.h>int main(){if(vfork()==0)sleep(300);return;}}实验结果:(五)查看“僵尸”进程(Z)创建一个C程序,如zombie_status.c,在其中创建一个子进程,并让子进程迅速结束,而父进程陷入阻塞编译,后台运行该程序(后接&),并使用ps命令查看运行状态(30s)代码:#include<unistd.h>#incldue<stdio.h>int main(){if(fork()){sleep(300);}}实验结果:实验二观察Linux进程/线程的异步并发执行一、实验目的通过本实验学习如何创建Linux进程及线程,通过实验,观察Linux进程及线程的异步执行。

操作系统实验报告(进程的创建)(DOC)

操作系统实验报告(进程的创建)(DOC)
putchar('A');
prin tf("\n");
}
else
{
prin tf("child2 process is \n”);
putchar('C');
prin tf("\f(pid==0)
prin tf("child1 process is \n”);
putchar('B'); prin tf("\n");
exit(0);
if((pid=fork())<0)
{
prin tf("fork error!' n"); exit(0);
}
else if(pid==0)
{
if(execlp("pri nt1","pri nt1","arg1",(char *)0)<0) prin tf("execle error!\n");
{
prin tf("vfork() error\ n");
exit(0);
}
else if(pid==0)
{
glob++;
loc--;
prin tf("child process cha nges the glob and loc\ n");
exit(0);
}
else
printf ("pare nt process does n't cha nge the glob and loc\n”);
2、在2例子中,vfork()调用后需要注意两点:

操作系统实验报告(进程的创建)范文

操作系统实验报告(进程的创建)范文

实验题目进程的创建小组合作否姓名班级学号一、实验目的1、了解进程的创建。

2、了解进程间的调用以及实现。

3、分析进程竞争资源的现象,学习解决互斥的方法。

4、加深对进程概念的理解,认识并发执行的本质。

二.实验环境Windows 系统的计算机一台,安装了Linux虚拟机三、实验内容与步骤1、fork()系统调用的使用例子程序代码:#include<stdio.h>#include<sys/types.h>#include<unistd.h>int glob=3;int main(void){pid_t pid;int loc=3;printf("before fork();glod=%d,loc=%d.\n",glob,loc);if((pid=fork())<0){printf("fork() error. \n");exit(0);}else if(pid==0){glob++;loc--;printf("child process changes glob and loc: \n");}elsewait(0);printf("parent process doesn't change the glob and loc:\n");printf("glob=%d,loc=%d\n",glob,loc);exit(0);}运行结果:2、理解vofork()调用:程序代码:#include<stdio.h>#include<sys/types.h>#include<unistd.h>int glob=3;int main(void){pid_t pid;int loc=3;if((pid=vfork())<0){printf("vfork() error\n");exit(0);}else if(pid==0){glob++;loc--;printf("child process changes the glob and loc\n");exit(0);}elseprintf ("parent process doesn't change the glob and loc\n");printf("glob=%d,val=%d\n",glob,loc);}运行结果:3、给进程指定一个新的运行程序的函数exec().程序代码:printe1.c代码:#include<stdio.h>int main(int argc,char * argv[]){int n;char * * ptr;extern char * * environ;for(n=0;n<argc;n++)printf("argv[%d]:%s\n",n,argv[n]);for(ptr=environ; * ptr!=0;ptr++)printf("%s\n",* ptr);exit(0);}file4.c代码如下:#include<stdio.h>#include<sys/types.h>#include<unistd.h>#include<sys/wait.h>char * env_list[]={"USER=root","PATH=/root/",NULL};int main(){pid_t pid;if((pid=fork())<0){printf("fork error!\n");exit(0);}else if(pid==0){if(execle("/root/print1","print1","arg1","arg2",(char *)0,env_list)<0) printf("execle error!\n");exit(0);}if((waitpid(pid,NULL,0))<0)printf("WAIT ERROR!\n");exit(0);if((pid=fork())<0){printf("fork error!\n");exit(0);}else if(pid==0){if(execlp("print1","print1","arg1",(char *)0)<0)printf("execle error!\n");exit(0);}exit(0);}运行结果:4、进程终止函数exit()。

操作系统实验报告(包括线程,进程,文件系统管理,linux+shell简单命令)

操作系统实验报告(包括线程,进程,文件系统管理,linux+shell简单命令)

操作系统实验报告班级:030613学号:03061331姓名:裴帅帅实验一:进程的建立一、实验内容创建进程及子进程,在父子进程间实现进程通信,创建进程并显示标识等进程控制块的属性信息,显示父子进程的通信信息和相应的应答信息。

使用匿名管道实现父子进程之间的通信。

二、源程序1、创建匿名管道SECURITY_ATTRIBUTES sa;sa.bInheritHandle=true;sa.lpSecurityDescriptor=NULL;sa.nLength=sizeof(SECURITY_ATTRIBUTES);if(!CreatePipe(&m_hRead,&m_hWrite,&sa,0)){MessageBox("创建匿名管道失败");return false;}2、创建子进程STARTUPINFO si;ZeroMemory(&si,sizeof(STARTUPINFO));si.cb=sizeof(STARTUPINFO);si.dwFlags=STARTF_USESTDHANDLES;si.hStdInput=m_hRead;si.hStdOutput=m_hWrite;si.hStdError=GetStdHandle(STD_ERROR_HANDLE);if(!CreateProcess(NULL,"子进.exe",NULL,NULL,true,0,NULL,NULL,&si,&pi)) {MessageBox("创建子进程失败");CloseHandle(m_hRead);CloseHandle(m_hWrite);m_hRead=NULL;m_hWrite=NULL;return;}3、销毁子进程if(m_hRead)CloseHandle(m_hRead);if(m_hWrite)CloseHandle(m_hWrite);TerminateProcess(pi.hProcess ,0);4、向匿名管道中写信息即发送信息DWORD deWrite;CString sendData;m_s.GetWindowText(sendData);int length;length=sendData.GetLength ();char *buffer=new char[length+1];for(int i=0;i<length;i++){buffer[i]=sendData[i];}buffer[length]='\0';if(!WriteFile(m_hWrite,buffer,length,&deWrite,NULL)){MessageBox("发送数据失败");}delete buffer;5、从匿名管道中读取信息即接收信息char buff[100];DWORD deRead;if(!ReadFile(m_hRead,buff,100,&deRead,NULL)){MessageBox("读取数据失败");}CString receiveData;for(int i=0;i<=(int)deRead;i++){receiveData+=buff[i];}receiveData+='\0';m_r.SetWindowText (receiveData);三、实验结果实验结果实现了父进程向匿名管道中写信息,然后在子进程端可以从匿名管道中读取该信息;也可以子进程向管道中写入信息,然后父进程从中读取后显示。

linux操作系统实验报告书

linux操作系统实验报告书

linux操作系统实验报告书(1)一.实验名称:Linux基本命令的使用二.实验目的:1.进一步练习Linux登录和退出的方法2.练习与目录和文件操作相关的Linux命令:cd:切换目录mkdir:建立一个新目录cp:文件拷贝ls:显示目录及文件的内容mv:更改文件名称cat、more、less:浏览文件内容chmod:更改文件或目录的访问权限rm:删除文件rmdir:删除目录三.实验内容:1.登录进入Linux 系统。

2.将工作目录切换到根目录,用ls命令查看根目录下的内容,尝试使用-a,-l,-F,-A,-lF等不同选项并比较不同之处。

3.在家目录下建立一个名为test的新目录,将工作目录切换到test下,然后将/tmp下的文件lesson.log拷贝到该目录下,并将lesson.log用mv命令改名为:TestRenName.txt。

4.用cat命令浏览文件TestRenName.txt的内容,用more命令进行浏览翻页操作。

再用less命令浏览文件TestRenName.txt的内容。

5.用ls命令查看test下的文件的权限,并更改文件TestRenName.txt的权限为:只允许自己读写,不允许其他用户访问。

用ls命令查看更改后的结果后再将文件TestRenName.txt的权限更改为系统默认的权限:-rw-r--r--。

6.用rm命令删除test目录下的所有文件,再用rmdir命令删除test目录。

7.用logout命令退出系统。

四.结果分析:五.实验心得*********************************************************************linux操作系统实验报告书(2)一.实验名称:Linux基本命令的使用二.实验目的:1. 掌握监视系统的几个Linux基本命令:PS--查看系统的进程tty--查看当前使用的终端df--查看系统的文件系统的空间使用情况du--查看具体某个文件和目录的磁盘空间的占用情况free--查看使用的内存资源的情况2. 掌握Linux下的联机帮助手册的使用3. 掌握Linux命令的简要帮助的获取方法4. 掌握一些其他常用的Linux命令:cal--显示日历date--显示系统的日期和时间clear--清屏find--查找文件uname--查看系统信息who--查看其他登录的用户which--查看命令的全路径tar--Linux下的压缩与解压缩命令三.实验内容:1.使用ps查看系统的进程运行情况,使用不同的命令选项并比较显示结果的差别;查看当前系统已安装的文件系统的空间使用情况;查看用户的家目录占用了多少空间;查看使用的内存资源的情况.2.查看ls命令的详细使用方法,查看ps命令的详细使用方法.3.获取ls命令的简要帮助信息,获取ps命令的简要帮助信息.4.用cal命令显示日历,用date命令显示系统的日期和时间,用clear清除屏幕,用find命令在系统中查找文件ch1.doc,用uname命令查看系统的信息,用who 命令查看其他登录的用户,用which命令查看一些命令的全路径,用tar命令来压缩test目录下的所有后缀为doc的文件到文件doc.tar.gz中,将doc.tar.gz 复制到用户的家目录并展开压缩文件.四.结果分析:1. 要查看系统的进程运行情况可使用ps命令:[stu@cs-linux stu]$ psPID TTY TIME CMD4442 pts/0 00:00:00 bash11683 pts/0 00:00:00 ps第一列中的PID表示进程编号,第二列中的TTY表示提交该进程的终端号,第三列中的TIME表示该进程已运行的时间,第四列中的CMD表示该进程所对应的命令.如果要显示进程更详细的信息,可以使用参数ps u:[stu@cs-linux stu]$ ps uUSER PID %CPU %MEM VSZ RSSTTY STAT START TIME COMMAND501 4442 0.0 0.3 5560 784 pts/0 S 09:45 0:00 bash501 11684 0.0 0.2 2592 644 pts/0 R 10:16 0:00 ps -uUSER表示进程拥有者,%CPU表示CPU时间的占用比例,%MEM表示内存的占用比例,VSZ表示进程的大小,RSS表示常驻内存部分大小,START表示进程的启动时间.如果要用长格式显示系统进程的信息,可以使用参数ps l:[stu@cs-linux stu]$ ps lFS UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME C MD4 S 501 4174 4173 0 75 0 - 1389 wait4 pts/0 00:00:00 bash0 R 501 4201 4174 0 80 0 - 776 - pts/0 00:00:00 ps要查看当前系统已安装的文件系统的空间使用情况,使用命令df:[stu@cs-linux stu]$ df文件系统1K-块已用可用已用% 挂载点/dev/hda7 9574520 2833764 6254392 32% /none 111472 0 111472 0% /dev/shm/dev/hda5 30701232 13538096 17163136 45% /mnt/hdd要查看用户的家目录占用了多少空间,先将工作目录切换到家目录,再使用命令du:[stu@cs-linux stu]$ du12 ./.kde/Autostart16 ./.kde8 ./.xemacs4 ./test64 .以上结果表示家目录公占用64KB的空间.要查看使用的内存资源的情况,应使用命令free:[stu@cs-linux stu]$ freetotal used free shared buffers cached Mem: 222948 216688 6260 0 17832 92792 -/+ buffers/cache: 106064 116884Swap: 514040 0 514040以上结果表示系统内存及交换空间使用情况.2. 查看ls命令的详细使用方法,使用命令man ls:[stu@cs-linux stu]$ man ls(.......显示内容省略)查看ps命令的详细使用方法,使用命令man ps:[stu@cs-linux stu]$ man ps(.......显示内容省略)3. 获取ls命令的简要帮助信息,可使用命令ls --help:[stu@cs-linux stu]$ ls --help(.......显示内容省略)获取ps命令的简要帮助信息,可使用命令ps --help:[stu@cs-linux stu]$ ps --help(.......显示内容省略)4. 要显示日历可使用命令cal:[stu@cs-linux stu]$ cal六月2004日一二三四五六1 2 3 4 56 7 8 9 10 11 1213 14 15 16 17 18 1920 21 22 23 24 25 2627 28 29 30以上用命令cal不加任何参数时显示当月日历,如果要指定查看某年某月的日历,可以加[月][年]参数,如要查看2004年8月:[stu@cs-linux stu]$ cal 08 2004八月2004日一二三四五六1 2 3 4 5 6 78 9 10 11 12 13 1415 16 17 18 19 20 2122 23 24 25 26 27 2829 30 31要显示系统的日期和时间,可使用命令date:[stu@cs-linux stu]$ date五6月18 11:23:23 CST 2004表示当前时间为2004年6月18日星期五11:23:23.用clear命令清除屏幕,之后将把已前显示的结果清除:[stu@cs-linux stu]$ clear用find命令在系统中查找文件ch1.doc,应首先退出到根目录下,在使用命令find ch1.doc:[stu@cs-linux /]$ cd /[stu@cs-linux /]$ find / -name "ch1.doc"find: /home/wb: 权限不够/home/stu/test/ch1.doc结果表示找到的文件在/home/stu/test/目录下.用uname命令查看系统的信息:[stu@cs-linux /]$ unameLinux用who命令查看其他登录的用户:[stu@cs-linux /]$ whostu tty1 Jun 18 14:22root pts/0 Jun 18 14:23 (:0.0)用which命令查看一些命令的全路径,如查看命令ls和ps的全路径:[stu@cs-linux /]$ which lsalias ls='ls --color=tty'/bin/ls[stu@cs-linux /]$ which ps/bin/ps用tar命令来压缩test目录下的所有后缀为doc的文件到文件doc.tar.gz中,如下:[stu@cs-linux test]$ tar cvf doc.tar.gz *.docch1.docch2.doc[stu@cs-linux test]$ lsch1.doc ch2.doc doc.tar.gz sesson.txt使用命令加参数cvf来打包所有后缀为doc的文件,参数c表示建立新文档,参数v表示在处理过程中显示相关信息,参数f表示以文件方式打包.现test目录下共有doc文件2个,所以显示ch1.doc,ch2.doc.打包后用ls命令查看,发现多了一个doc.tar.gz文件,表明操作成功.将doc.tar.gz复制到用户的家目录并展开压缩文件:[stu@cs-linux test]$ cd ..[stu@cs-linux stu]$ cp test/doc.tar.gz doc.tar.gz[stu@cs-linux stu]$ tar xvf doc.tar.gz *.docch1.docch2.doc[stu@cs-linux stu]$ lsch1.doc ch2.doc doc.tar.gz test第三行的参数x表示解包文件.五.实验心得这一章主要学习了Linux下的一些关于监视系统的命令以及一些常用辅助命令,对于一个Linux的系统管理员,掌握这些命令的使用是非常重要的,因为这些命令不仅可以让系统管理员了解到系统的运行情况,还可以了解到磁盘及内存的占用情况,以便系统管理员根据情况作出相应调整。

操作系统实验报告1LINUX系统的基本操作

操作系统实验报告1LINUX系统的基本操作

操作系统实验报告实验一LINUX系统的基本操作学院:信息学院专业:计算机科学与技术学号:***********姓名:***指导老师:***一、实验目的掌握基本LINUX系统的文件的基本操作,以及在LINUX系统中编写程序,编译程序,运行程序二、实验内容1.先在终端上练习各种LINUX系统的文件操作命令2.然后在LINUX系统中编写一段程序3.利用LINUX系统中得命令,在根目录创建子文件a,再在a目录下创建子文件b,再在b目录下创建子文件c,最后把刚才编写的程序复制到文件c 中运行三、代码及完成结果1.在终端上实现各种基本命令a.查看当前目录相对于根目录的位置:pwdb.查看当前目录内容:Lsc.以长格式查看当前目录内容。

对应每个文件的条目将包括连接数目、所有者、大小、最后修改时间、权限等内容:ls –ld.改变当前目录:cd [目的目录名]e.转移到上一级目录:cd ..f.创建目录:mkdir [新目录名]例:mkdir /var/ftpi.复制文件:cp [源文件名] [目标文件名]2.在当前rjsys目录下创建a,b,c文件mkdir amkdir ./a/bmkdir ./a/b/c<执行结果>:3.在rjsys下编写程序liu.c源代码如下:#include <stdio.h>main(){printf(“Hello World!\n”);}<执行结果>:4.把当期编写好的文件,例如在rjsys当前目录下的liu.c,移动到rjsys的子文件c中cp ./liu.c ./a/b/c<执行结果>:5.先到文件c中,再把文件liu.c编译,并运行cd ./a/b/ccc –c liu.ccc -o a liu.c./a<执行结果>:。

操作系统实验

操作系统实验

操作系统实验报告(一)Linux基本操作与编程(验证性 2学时)1、实验目(de):1)熟悉Linux操作系统(de)环境和使用.2)了解LINUX系统(de)安装过程.(注:表示可选择)3)掌握Linux环境下(de)命令操作.2、实验内容:(1)完成LINUX系统(de)登录,启动终端.进行下列操作并记录结果(要求:结果以屏幕截图表示).1)运行pwd命令,确定你当前(de)工作目录.2)利用以下命令显示当前工作目录(de)内容: ls –l3)运行以下命令: ls –al4)使用mkdir命令建立一个子目录subdir.5)使用cd命令,将工作目录改到根目录(/)上.6)使用ls-l命令列出/dev(de)内容.7)使用不带参数(de)命令cd改变目录,然后用pwd命令确定你当前(de)工作目录是哪里8)使用命令cd ../..,你将工作目录移到什么地方(2)在LINUX下查看你(de)文件.1)利用cd命令,将工作目录改到你(de)主目录上.2)将工作目录改到你(de)子目录subdir,然后运行命令: date > file1 将当前日期和时间存放到新建文件file1中.3)使用cat命令查看file1文件(de)内容.4)利用man命令显示date命令(de)用法: man date5)将date命令(de)用法附加到文件file1(de)后面:man date >> file16)利用cat命令显示文件file1(de)内容.7)利用ls -l file1命令列出文件file1(de)较详细(de)信息.运行ls -l/bin 命令显示目录(de)内容.8)利用ls -l/bin|more命令行分屏显示/bin目录(de)内容.9)利用cp file1 fa命令生成文件file1(de)副本.然后利用ls -l命令查看工作目录(de)内容.10)用cd命令返回你(de)主目录,输入命令ls –l后,解释屏幕显示(de)第一列内容(de)含义.(3)编写能输出“Hello world”问候语(de)C程序,并在终端中编译、执行.要求记录所使用(de)命令及结果.操作步骤:1)在文本编辑器中,编写C程序如下:include ""main(){ printf("hello"); }2) 在终端中,用gcc命令进行编译,生成可执行文件a.gcc –o a3) 在终端中执行a (de)命令如下:./a(4)编写一个程序:显示信息“Time for Play”,并能在后台运行一段时间(自定义)后,弹出信息提醒用户.要求记录所使用(de)命令及结果.(提示:使用sleep(s)函数)3、实验结果分析:(对上述实验内容中(de)各题结果,进行分析讨论.并回答下列问题)(1)进程包括哪些特征间断性, 失去封闭性, 不可再现性, 动态性, 并发性, 独立性(2)在Linux中,如何设置前、后台命令和程序(de)执行命令后直接加 & ,这个命令就在后台执行;正在运行(de)命令,使用Ctrl+z ,就挂起; jobs命令,可以现实后台,包括挂起(de)命令;使用 bg %作业号就可以把挂起(de)命令在后台执行;使用 fg %作业号就可以把后台命令调到前台(3)你所使用(de)Linux系统(de)内核版本是多少用什么命令查看内核版本目前你所了解(de)各发行版本(de)情况如何Linux version (gcc version (Red Hat (GCC) ) 1 SMP Tue Jan 2911:48:01 EST 2013(4)你对Linux系统有什么认识linux是一款开放性(de)操作系统,也可以说成是开放(de)源代码系统,这些代码可以完全自由(de)修改可以再任何(de)计算机上去运行它,也就是“可移植性”,其次大家都知道,linux是由UNIX(de)概念所开发出来(de),所以它也继承了UNIX(de)稳定和效率(de)特点4、总结:你对本次实验有什么体会或看法.操作系统实验报告(二)文件访问权限设置与输入输出重定向(2学时)一、实验目(de)1、掌握linux(de)文件访问权限设置.2、熟悉输入输出重定向和管道操作.二、实验内容1、启动进入红帽linux系统2、设置文件权限:在用户主目录下创建目录test,进入test目录,用vi 创建文件file1,并输入任意(de)文字内容.用ls -l显示文件信息,注意文件(de)权限和所属用户和组.对文件file1设置权限,使其他用户可以对此文件进行写操作:chmod o+w file1.用ls -l查看设置结果.取消同组用户对此文件(de)读取权限:chmod g-r file1.查看设置结果.用数字形式来为文件file1设置权限,所有者可读、可写、可执行;其他用户和所属组用户只有读和执行(de)权限:chmod 755 file1.设置完成后查看设置结果.3、输入、输出重定向和管道(1) 输出重定向用ls命令显示当前目录中(de)文件列表:ls –l.使用输出重定向,把ls命令在终端上显示(de)当前目录中(de)文件列表重定向到文件list中:ls –l > list.查看文件list中(de)内容,注意在列表中会多出一个文件list,其长度为0. 这说明shell是首先创建了一个空文件,然后再运行ls命令:cat list.再次使用输出重定向,把ls命令在终端上显示(de)当前目录中(de)文件列表重定向到文件list中.这次使用追加符号>>进行重定向:ls –l >> list.查看文件list(de)内容,可以看到用>>进行重定向是把新(de)输出内容附加在文件(de)末尾,注意其中两行list文件(de)信息中文件大小(de)区别:cat list.重复命令ls –l > list.再次查看文件list中(de)内容,和前两次(de)结果相比较,注意list文件大小和创建时间(de)区别.(2) 管道who |grep root命令(de)结果是命令ls –l |wc –l结果是4、退出linux系统操作步骤:在主菜单上选择“注销” ->关闭计算机.三、实验结果与讨论(根据实验结果回答下列问题)1. 文件(de)权限如下:-rw-r—r-- 1 root root 19274 Jul 14 11:00回答:-rw-r—r-- (de)含义是什么答:是LINUX/FTP(de)简易权限表示法:对应于本用户-所在组-其他人(de)权限,每一个用执行(x)-读取(r)-写入(w)如本题若是说自己可以读取写入不可以执行,所在组和其他人只能读取.2、文件(de)所有者添加执行权限(de)命令是答:chmod u+x 、赋予所有用户读和写文件权限(de)命令是四、答:chmod a+w,a+r 个人体会(你对本次实验有什么体会或看法)操作系统实验报告(三)文件和目录管理一、实验目(de)1) 掌握在Linux系统下(de)文件和文件系统(de)概念及命令;2) 掌握Linux系统下(de)目录操作.二、实验内容1. 进入linux终端后,用命令(de)操作结果回答下列问题:1)vi(de)三种工作模式是其中不能进行直接转换(de)是什么模式到什么模式命令模式、文本输入模式、末行模式命令模式不能直接到末行模式2)在vi中退出时,保存并退出(de)操作步骤是Ese:wq3)用vi 创建myfile1文件,并在其中输入任意文字一行,创建myfile2文件,任意输入文字3行.请问执行命令:cat <myfile1 >myfile2 后,myfile2中还有几行内容该命令(de)作用是用命令操作验证你(de)回答.myfile2中还有1行内容该命令(de)作用是替换myfile(de)内容4)请用至少两种不同(de)命令创建一个文本文件(),在其中写入“我是2014级学生,我正在使用Linux系统.”,记录命令及执行结果.1、Vi创建2、5)用___pwd________命令可查看所创建文件(de)绝对路径,写出它(de)绝对路径__/root_________;用___ls -l________命令查看该文件(de)类型及访问权限,其访问权限(数字和字母)分别是多少__-rw- r- - r- - 6 4 4______________.6)若将该文件(de)访问权限修改为:所有者有读写权限;其他用户只读;同组用户可读写,请写出命令,并记录结果.7)查找my开头(de)所有文件,可___find my_________命令,写出命令并记录结果8)在/home下创建子目录user,并在其中创建2个文件,名为file1和file2,file1(de)内容是/root目录(de)详细信息;file2(de)内容任意,最后将这两个文件合并为file3文件,请先写出命令序列,并在终端中验证,记录结果.2. 文件及目录操作,写出操作所使用(de)命令,并记录结果.在终端中完成下列命令操作,并记录结果在root用户主目录下创建一个mydir子目录和一个myfile文件,再在mydir下建立d1和d2两个子目录.查看mydir和myfile(de)默认权限查看当前myfile和mydir(de)权限值是多少将myfile文件分别复制到root 和dd1(de)主目录中将root主目录中(de)myfile改为yourfile通过从键盘产生一个新文件并输入I am a student查找文件是否包含student字符串三、实验结果与分析,回答下列问题:1、能够创建文件(de)命令有哪些vi 和cat>name2、能够查看当前目录(de)绝对路径(de)命令是pwd3、Linux中按用户属性将用户分成哪些类型根据文件(de)访问权限,用户又被分成哪些类型能够查看文件访问权限(de)命令是用户同组其他可读可写可执行 cat f1四、小结(本次实验(de)体会或小结)操作系统实验报告(四)作业调度算法模拟(验证性2学时)1、实验目(de):1)掌握作业调度(de)主要功能及算法.2)通过模拟作业调度算法(de)设计加深对作业管理基本原理(de)理解.3)熟悉Linux环境下应用程序(de)编程方法.2、实验内容:(1)作业调度算法(FCFS)编程模拟:编制一段程序,对所输入(de)若干作业,输入、输出数据样例如下表所示.按FCFS算法模拟调度,观察、记录并分析调度(de)输出结果情况.输入输出样例1:FCFS算法include <>include <>define SIZE 5struct Job_type{char no[2]; o,&job[i].tb,&job[i].tr);printf("输入作业顺序:\n");for(i=0;i<SIZE;i++)printf("\t%s\t%d\t%d\n",job[i].no,job[i].tb,job[i].tr);}void fcfs(){ int i,j,t=0,tw=0,tt=0;for(i=0;i<SIZE-1;i++)for(j=i+1;j<SIZE;j++)if(job[i].tb>job[j].tb){x=job[i];job[i]=job[j];job[j]=x;}printf("FCFS调度结果:\n");printf("开始时间作业号到达时间运行时间完成时间等待时间周转时间\n");for(i=0;i<SIZE;i++){printf(" %d",t);t=t+job[i].tr;tw=t-job[i].tb-job[i].tr; b; o,job[i].tb,job[i].tr,t,tw,tt);}}void main(){load();fcfs();}(2)作业调度算法(SJF)编程模拟:编程实现由短作业优先算法,分别用下面两组输入、输出数据样例进行模拟,观察分析运行结果.输入输出样例2:SJF算法输入输出A 0 4B 0 3C 0 5D 0 2E 0 1A 0 6 10 10B 0 3 6 6C 0 10 15 15D 0 1 3 3E 0 0 1 1include <>include <>define SIZE 5struct Job_type{char no[2]; o,&job[i].tb,&job[i].tr);printf("输入作业顺序:\n");for(i=0;i<SIZE;i++)printf("\t%s\t%d\t%d\n",job[i].no,job[i].tb,job[i].tr);}void sjf()n=i; pl[i].pfn=ERR;}for(i=1;i<total;i++){ pfc[i-1].next=&pfc[i];pfc[i-1].pfn=i-1;}pfc[total-1].next=NULL;pfc[total-1].pfn=total-1;freepf_head=&pfc[0];}void FIFO(int total){ int i,j;pfc_type p,t;initialize(total);busypf_head=busypf_tail=NULL;for(i=0;i<page_len;i++){if(pl[page[i]].pfn==ERR){ diseffect+=1;if(freepf_head==NULL){p=busypf_head->next;pl[busypf_head->pn].pfn=ERR; freepf_head=busypf_head;freepf_head->next=NULL;busypf_head=p;}p=freepf_head->next;freepf_head->next=NULL;freepf_head->pn=page[i];pl[page[i]].pfn=freepf_head->pfn;if(busypf_tail==NULL)busypf_head=busypf_tail=freepf_head; else{ busypf_tail->next=freepf_head;busypf_tail=freepf_head;}freepf_head=p;}}printf("FIFO:%d",diseffect);}main(){ int i; int k;printf(“请输入页(de)引用序列:\n”); for(k=0;k<page_len;k++)scanf("%d",&page[k]);for(i=4;i<=7;i++){printf("%2d page frames ",i);FIFO(i);}参考程序LRU算法,略三、实验结果分析:(对上述实验各题所使用(de)原始数据、调试数据与状态(包括出错)及最终结果进行记录并分析.)随着块数(de)增加,缺页数目也减少,4个实验中3个实验(de)块数增加到了5以后,即使块数再增加,缺页数目也是保持不变.只有实验4,块数增加到7以后,缺页数目又再次减少了四、总结:你对本次实验有什么体会或看法.。

实验1:Linux操作、编程与进程创建

实验1:Linux操作、编程与进程创建

操作系统课程实验报告实验题目:Linux操作、编程与进程创建专业软件工程学生姓名许攀红班级学号 B13040902教师陈兴国、朱洁指导单位计算机学院日期一、实验目的1.能够安装某Linux发行版本(例如Red Hat)2、了解Linux的启动过程3.了解Linux文件的组织结构4.熟悉X Window 环境5.练习使用Linux 常用命令6. 熟练使用Linux的C语言开发环境7. 学习并掌握Linux 编译工具 gcc 的使用方法8. 了解进程与程序的区别,加深对进程概念的理解。

9. 掌握进程并发执行的原理,理解进程并发执行的特点,区分进程并发执行与串行执行。

10.了解fork()系统调用的返回值,掌握对fork()创建进程的方法。

11.熟悉wait,exit等系统调用。

二、实验指导(大家自行补充进程创建的内容)0.安装Linux可以多引导方式在PC上安装linux,或是在Windows下利用VMware等虚拟机软件来安装linux.1.开机进入Linux后,Linux初始化过程中会显示大量初始化信息,要求学习者逐渐读懂这些初始化信息。

2.登录及修改Linux在相应初始化完成后,会在屏幕上显示“login:”此时输入用户名(即帐号)并键入回车,则系统显示”password:”,然后输入口令并键入回车。

此时,系统验证所键入的用户名和口令,若正确则成功进入系统。

若用户希望修改口令,则可以在成功进入系统后,在命令提示符($或#)后输入“passwd”并键入回车,则系统显示”new password:”.当用户键入新口令并键入回车后,系统再显示“retry new password:”,此时需要再次键入刚才输入的新口令并键入回车,则系统接收并记住新口令。

3.退出、注销当用户不再使用Linux时,在离开前,通常应键入“logout”命令或Ctrl+D来退出帐号4.关机或重启在Linux下,涉及到关机或重启的命令有1)halt命令。

操作系统实验报告

操作系统实验报告

操作系统实验报告一、实验目的本次操作系统实验的主要目的是通过实际操作和观察,深入理解操作系统的工作原理和关键机制,包括进程管理、内存管理、文件系统以及设备管理等方面。

同时,培养我们解决实际问题的能力,提高对操作系统相关知识的综合运用水平。

二、实验环境本次实验使用的操作系统为 Windows 10 和 Linux(Ubuntu 2004 LTS),实验所使用的编程工具包括 Visual Studio Code、gcc 编译器等。

三、实验内容及步骤(一)进程管理实验1、进程创建与终止在 Windows 系统中,使用 C++语言编写程序,通过调用系统 API函数创建新的进程,并观察进程的创建和终止过程。

在 Linux 系统中,使用 C 语言编写程序,通过 fork()系统调用创建子进程,并通过 wait()函数等待子进程的终止。

2、进程调度观察Windows 和Linux 系统中进程的调度策略,包括时间片轮转、优先级调度等。

通过编写程序模拟进程的执行,设置不同的优先级和执行时间,观察系统的调度效果。

(二)内存管理实验1、内存分配与释放在 Windows 系统中,使用 C++语言的 new 和 delete 操作符进行内存的动态分配和释放,并观察内存使用情况。

在 Linux 系统中,使用 C 语言的 malloc()和 free()函数进行内存的分配和释放,通过查看系统的内存使用信息来验证内存管理的效果。

2、虚拟内存管理研究 Windows 和 Linux 系统中的虚拟内存机制,包括页表、地址转换等。

通过编写程序访问虚拟内存地址,观察系统的处理方式和内存映射情况。

(三)文件系统实验1、文件操作在 Windows 和 Linux 系统中,使用编程语言对文件进行创建、读取、写入、删除等操作。

观察文件的属性、权限设置以及文件在磁盘上的存储方式。

2、目录操作实现对目录的创建、删除、遍历等操作。

研究目录结构和文件路径的表示方法。

操作系统实验报告1-Linux操作、使用、编程与进程创建

操作系统实验报告1-Linux操作、使用、编程与进程创建
8.多次连续反复运行上述程序,观察屏幕显示结果的顺序,直至出现不一样的情况为止。记下这种情况,试简单分析其原因。
9.修改程序,在父、子进程中分别使用wait、exit等系统调用“实现”其同步推进,多次反复运行改进后的程序,观察并记录运行结果。
代码
#include<stdio.h>
main()
{
int p1,p2,i;
switch(pid)
{
case -1:
printf("fork fail!\n");
exit(1);
case 0:
printf("subprocess!\n");
exit(0);
default:
wait(0);
printf("complete!\n");
exit(0);
}
}
实验过程
四、实验小结(针对实验内容逐项小结实验中发现的问题、自己的解决方法、心得体会等)
while((p1=fork())==-1);
if(p1==0)
{
for(i=0;i<4;i++){
//sleep(1);
printf("daughter %d\n",i);
}}
else {
while ((p2=fork())==-1);
if(p2==0)
{for(i=0;i<4;i++)
{
//sleep(1);
实验时间
2013

10

8

指导单位
软件工程系
指导教师
杨健
学生姓名
班级学号

linux系统基本操作实验报告

linux系统基本操作实验报告

竭诚为您提供优质文档/双击可除linux系统基本操作实验报告篇一:linux操作系统指令实验报告实验一Linux的基本操作和常用命令的使用一、实验目的1.学会安装Linux操作系统2.掌握Linux系统的一些基本操作3.掌握常用Linux命令的使用方法4.了解Linux命令中参数选项的用法和作用二、实验环境1.Linux软件和计算机三、实验内容或步骤1.安装Linux操作系统,并进行相关配置。

2.基本操作和常用命令。

(一).文件操作命令(1)查看文件与目录用以下命令查看文件与目录:ls/usr/binls–ldir(2)显示文件内容命令(cat)设当前目录下包括两个文件text1、text2,用以下列命令了解cat命令的使用:cattext1cattext1text2>text3cattext3|more(3)文件复制命令(cp)了解cp命令的功能和使用技巧,并注意它们的区别:cp/root/*/tempcpreadmetext4cp–r/root/*/temp(带目录复制)cp/root/.[a-z]*/temp(复制所有小写字母开头的隐藏文件)(4)文件改名命令(mv)了解mv命令的功能和使用方法,并注意各命令的区别:mvtext4newtextmvnewtext/home(5)删除文件命令(rm)了解rm命令的功能和使用方法:rmnewtext(二).目录操作命令的使用(1)改变当前目录命令(cd)和显示当前目录命令(pwd)掌握cd命令的功能和使用,并了解以下各命令的区别:cd/rootcd..(返回上一级目录)cd(返回到用户目录内)-1-pwd(显示当前目录在文件系统层次中的位置)(2)建立子目录命令(mkdir)在用户目录下创建如图5-4所示的目录结构。

(3)删除子目录命令(rmdir)在图5-4所建立的目录结构中,删除a1和b1目录。

命令如下:rmdir/home/x/b1rm–r/home/x/a1rm–rf/home/x/a1注意:可选项-r和-f的作用。

linux操作系统实验报告

linux操作系统实验报告

linux操作系统实验报告Linux 操作系统实验报告一、实验目的本次实验的主要目的是深入了解和熟悉Linux 操作系统的基本操作、命令行使用、文件系统管理以及进程管理等方面的知识和技能。

通过实际操作和实践,提高对 Linux 操作系统的掌握程度,为今后在相关领域的学习和工作打下坚实的基础。

二、实验环境本次实验使用的是虚拟机软件 VirtualBox 安装的 Ubuntu 2004 LTS操作系统。

虚拟机配置为 2GB 内存,20GB 硬盘空间。

实验在Windows 10 操作系统的主机上进行。

三、实验内容及步骤(一)用户和权限管理1、创建新用户使用`sudo adduser <username>`命令创建新用户,例如创建用户名为`testuser` 的新用户。

2、设置用户密码使用`sudo passwd <username>`命令为新用户设置密码。

3、切换用户使用`su <username>`命令切换到新用户。

4、用户权限管理修改`/etc/sudoers` 文件,为新用户赋予特定的权限,例如允许执行特定的管理员命令。

(二)文件和目录操作1、查看文件和目录使用`ls` 命令查看当前目录下的文件和目录,使用`ls l` 命令查看详细信息,包括文件权限、所有者、大小和修改时间等。

2、创建、删除文件和目录使用`touch <filename>`命令创建新文件,使用`mkdir <directoryname>`命令创建新目录。

使用`rm <filename>`命令删除文件,使用`rmdir <directoryname>`命令删除空目录,使用`rm r <directoryname>`命令删除非空目录。

3、复制、移动文件和目录使用`cp <source> <destination>`命令复制文件或目录,使用`mv <source> <destination>`命令移动文件或目录。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
杨健
实验类型
验证
实验学时
2
实验时间
一、实验目的
1.熟悉使用Linux字符界面的常用命令。
2.熟悉运用Linux常用的编程工具。
3.熟悉运用Linux的在线求助系统。
4.掌握在Linux操作系统环境上编辑、编译、调试、运行一个C语言程序的全过程。
5.了解进程与程序的区别,加深对进程概念的理解。
6.掌握进程并发执行的原理,理解进程并发执行的特点,区分进程并发执行与串行执行。
实验报告
( 2013 / 2014学年 第1学期)
课程名称
操作系统原理
实验名称
实验1:Linux操作、使用、编程与进程创建
实验时间
2013

10

8

指导单位
软件工程系
指导教师
杨 健
学生姓名
班级学号
学院(系)
软件工程系
专 业
计算机软件与服务外包
实验名称
实验1:Linux操作、使用、编程与进程创建
指导教师
printf("son %d\n",i);
}
}
else
{for(i=0;i<4;i++)
{
//sleep(1);
printf("parent %d\n",i);
}
}
}
}
进程创建小实验
#include<stdio.h>
#include<stdlib.h>
main()
{
int pid;
pid=fork();
switch(pid)
{
case -1:
printf("fork fail!\n");
exit(1);
case 0:
printf("subprocess!\n");
exit(0);
defaቤተ መጻሕፍቲ ባይዱlt:
wait(0);
printf("complete!\n");
exit(0);
}
}
实验过程
四、实验小结(针对实验内容逐项小结实验中发现的问题、自己的解决方法、心得体会等)
8.多次连续反复运行上述程序,观察屏幕显示结果的顺序,直至出现不一样的情况为止。记下这种情况,试简单分析其原因。
9.修改程序,在父、子进程中分别使用wait、exit等系统调用“实现”其同步推进,多次反复运行改进后的程序,观察并记录运行结果。
代码
#include<stdio.h>
main()
{
int p1,p2,i;
while((p1=fork())==-1);
if(p1==0)
{
for(i=0;i<4;i++){
//sleep(1);
printf("daughter %d\n",i);
}}
else {
while ((p2=fork())==-1);
if(p2==0)
{for(i=0;i<4;i++)
{
//sleep(1);
五、指导教师评语
成 绩
批阅人
日 期
7.了解fork()系统调用的返回值,掌握用fork()创建进程的方法。
8.熟悉wait,exit等系统调用。
二、实验环境(实验设备)
Windows 2000 + VMWare +RedHatLinux8
三、实验内容
1.熟悉开机后登录Linux系统和退出系统的过程。
2.熟悉Linux字符界面——虚拟终端窗口。练习并掌握常用的Linux操作命令,如ls,ps,cd,cp,rm,kill等;
第一次接触linux系统,感觉很新奇,相比windows,linux的操作比较复杂,运行和反应速度较快,安全性能很好,性能稳定。通过本次实验,首先对linux系统有了一个初步的了解,了解了linux字符界面的常用命令,可以初步使用Vi编辑器。在实验程序过程中,如果我们把sleep语句加上,结果就会有所变化,原因是,处理器会给不同的进程分配一定的时间,在第一种情况下由于计算机运算的速度很快加之运算的条目很少,在一个时间片内就完成了某个进程的全部操作,进程之间的调度不明显。在第二种情况下由于出现了进程的睡眠,其他进程将会使用空闲下来的处理器,于是出现了输出交错的现象。通过这次程序我进一步熟悉了linux系统,也学会了进程的创建过程和返回值的意义。同时学会了一个新的系统调用函数及其头文件和参数类型。也学会了在编写完程序之后,不仅可以用 :wq 保存并退出,也可以用快捷键 shift + zz。总之,本次实验我受益匪浅。
3.学习使用Linux的在线求助系统,如man命令。
4.掌握一种Linux的编辑器,特别是字符界面的vi工具的使用。
5.用vi编辑一个打印“Hello,I am a C program”字串的C语言程序,然后编译并运行它。
6.熟悉gcc编译器的使用。
7.编写一C语言程序,实现在程序运行时通过系统调用fork()创建两个子进程,使父、子三进程并发执行,父亲进程执行时屏幕显示“parent”,儿子进程执行时屏幕显示“son”,女儿进程执行时屏幕显示“daughter”。
相关文档
最新文档