OpenEuler实战

操作系统课作业

OpenEuler实战

OpenEuler安装

下载VirtualBox虚拟机

在浏览器官网搜索virtualBox官网Oracle VirtualBox然后直接下载即可

打开VirtualBox后发现并没有操作系统(),那么我们就再去浏览器下载openEuler操作系统

下载OpenEuler操作系统

在浏览器上搜索OpenEuler社区openEuler | 开源社区 | openEuler社区官网

点开后找到Offline Everything ISO,下载就好了

事实上并没有删除()

在VirtualBox中加载OpenEuler

点击注册,然后按照下图配置

然后新建虚拟电脑的时候配置一下

全都配置好就可以使用了

注意!!!一定要记住自己的root密码

OpenEuler实践报告

一、实验环境

  • 操作系统:OpenEuler(通过VirtualBox虚拟机运行)
  • 编译器:GCC

二、作业要求的代码

例1:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
    fork();
    fork();
    fork();
    printf("hello\n");
    return 0;
}

例2:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
    int x = 1;
    pid_t p = fork();
    if(p < 0){
        perror("fork fail");
        exit(1);
    }
    else if (p == 0)
        printf("Child has x = %d\n", ++x);
    else
        printf("Parent has x = %d\n", --x);

    return 0;
}

例题一操作

  1. 创建文件并输入代码:

    1
    
    vim example1.c
    

    将例1的代码复制到文件中,保存并退出。

  2. 编译代码:

    1
    
    gcc example1.c -o example1
    

    如果没有错误,将生成可执行文件example1

  3. 运行程序:

    1
    
    ./example1
    

    观察输出结果。

运行结果及分析

例1运行结果:

1
2
3
4
5
6
7
8
hello
hello
hello
hello
hello
hello
hello
hello

例一分析: 每次fork()调用都会创建一个新的进程,三次fork()会创建8个进程(2^3),每个进程都会执行printf("hello\n");,所以输出8次"hello"。

例题二操作

  • 创建文件并输入代码:

    1
    
    vim example2.c
    

    将例1的代码复制到文件中,保存并退出。

  • 编译代码:

    1
    
    gcc example2.c -o example2
    

    如果没有错误,将生成可执行文件example1

  • 运行程序:

    1
    
    ./example2
    

    观察输出结果。

    运行结果及分析

例2运行结果:

例二分析:

  • 父进程和子进程各自拥有变量x的独立副本。
  • 子进程中x的值被递增(++x),所以输出2。
  • 父进程中x的值被递减(--x),所以输出0。

五、总结

通过本次实践,我掌握了在Linux环境下使用GCC编译C代码的基本流程,理解了fork()系统调用的原理和用法,以及进程控制的基本概念。同时,也熟悉了在OpenEuler操作系统下的开发环境和工具的使用。

Licensed under CC BY-NC-SA 4.0