Skip to content

DongCX-LDHSP/OSExperiment1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

实验一

进程实验

解决办法

该实验内容较为简单,基于老师提供的代码敲一遍即可,可分为如下步骤:

  1. 码代码
  2. 编写脚本文件以便多次运行
  3. 编译,使用bash test.sh运行脚本文件,观察记录实验结果
  4. 将父进程中的wait(NULL);语句删去
  5. 编译,使用bash test.sh运行脚本文件,观察记录实验结果,并与3.中实验结果进行比较

实验结论

  1. 解决办法的步骤3.的运行截图如下所示:子进程始终先于parent运行,图片中展示了局部的情况
    子进程始终先于parent运行,图片中展示了局部的情况

共享内存实验

解决办法

该实验内容同样较为简单,基于老师提供的代码敲一边即可,可分为如下步骤:

  1. 码代码
  2. 编写脚本文件以便多次运行
  3. 编译,使用bash test.sh运行脚本文件,观察记录实验结果
  4. 将父进程中的wait(NULL);语句删去
  5. 编译,使用bash test.sh运行脚本文件,观察记录实验结果,并与3.中实验结果进行比较

实验结论

线程实验

解决办法

此实验内容考察对pthread库中的pthread_join(tid, NULL)函数的灵活运用,基于老师提供的代码敲一边,并按照如下步骤修改即可:

  1. 码代码
  2. 这里我沿用了老师单参数的runner(void* param)函数,所以特意构建了一个结构体,将信息打包起来传入函数内部
  3. 结构体定义如下
typedef struct ARGV
{
    char* a;// 从控制台传入的参数信息
    pthread_t b;// 另外一个线程的`tid`
}ARGV;
  1. 在创建子进程1之后,将相应信息赋值给结构体
  2. 在创建子进程2时,将结构体作为参数传入
  3. runner02(void* param)使用函数pthread_join(tid, NULL)进行绑定即可
  4. 编译运行gcc -o t thread.c -lpthread,记录实验结果与不做绑定的运行结果进行比较

实验结论

Releases

No releases published

Packages

No packages published