实现工具:PC机
实现环境:Linux
实习内容(功能、目标):
实验要求:
1.熟悉linux操作系统的基本安装和配置;了解linux操作系统的启动过程和桌面环境;掌握VirtualBox虚拟机的使用
2.了解Linux的命令格式,掌握Linux中的操作命令;学会使用各种Shell命令操作Linux;学会如何得到帮助信息
3.熟悉Linux文件系统的文件和目录结构,掌握Linux文件系统的基本特征;掌握命令行方式下文件操作命令和程序中文件操作函数的使用方法;掌握Linux文件系统的加载和卸载方法
4.了解用vi编辑器编辑文本文件的基本使用方法;熟练运用vi编辑器进行快速文档编辑
实验目标:
(1)加深对进程概念的理解,明确进程和程序的区别。
(2)进一步认识并发执行的实质。
(3)分析进程争用资源的现象,学习解决进程互斥的方法。
实现的思想、方法和技术(含数据结构、算法):
设计思路:
1.Linux的安装和配置:
2.Linux基本环境与使用: 使用man命令获得ls、uname、date、cal、mkdir、cp等Linux命令,了解这些命令的具体使用方法
3.Linux文件处理 显示用户主目录下所有影藏文件的文件名,列出执行的命令及输出结果
4.vi编辑器的使用 用vi编辑器打开该文件,执行下述操作,并详细说明操作过程及方法
fork() 的用法:
(1)一个父进程希望复制自己,是父进程的子进程同时执行不同的代码段。这在网络服务进程中是最常见的——父进程等待客户端的服务请求。当这种请求到达时,父进程调用fork,使子进程处理此请求,父进程则继续等待下一个服务请求。 (2)一个进程要执行一个不同的程序。这对shell是最常见的情况。在这种情况下,子进程从fork返回后立即调用exec。
主要代码:
#include<stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdlib.h>
int main(){
pid_t pid;
pid=fork();
if(pid<0) /* 如果出错 */
printf("error occurred!\n");
else if(pid==0) /* 如果是子进程 */
{
printf("我是子进程1,进程号是%d\n",getpid());
pid_t pid1;
pid1 = fork();
if(pid1==0){
printf("我是子进程1的子进程,进程号是%d\n",getpid());
}
}
else{
printf("我是父进程,进程号是%d\n",getpid());
pid=fork();
if(pid==0)
printf("我是子进程2,进程号是%d\n",getpid());
else{
pid=fork();
if(pid==0)
printf("我是子进程3,进程号是%d\n",getpid());
}
}
return 0;
}
注释:
1.使用fork()的进程是父进程,通过fork()建立的新进程是子进程。
2.fork()创建成功,返回值对子进程是0,对父进程是子进程的pid(一个正整数)。
3.在调用fork()后,父进程和子进程均从下一条语句开始执行。
4.getpid()返回调用进程的进程标识符,则输出子进程的k与父进程的i,j相等。
结果分析:
实验截图:
实验心得:
(1)加深对进程概念的理解,明确进程和程序的区别。
(2)进一步认识并发执行的实质。
(3)分析进程争用资源的现象,学习解决进程互斥的方法。
(4)复习课本关于进程控制和进程同步的内容,加深对进程管理概念的理解。
(5)认真阅读实验材料中进程管理部分,分析多个进程的运行情况。
如果您感觉有用的话,请点赞评论分享收藏哦,非常感谢,好人一生平安!!!
祝大家天天开心,撒花撒花❀❀❀❀❀❀*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。