• 操作系统原理实验一:进程与线程创建控制程序


    实验一:进程与线程创建控制程序

    课程名称:操作系统原理
    项目名称:进程与线程创建控制程序
    实验(实训)类型:设计性实验
    实验(实训)课时:2

    实验(实训)目的及内容

    目的:

    通过本实验,使学生掌握创建进程的方法。进一步加深对操作系统基本概念的理解,学会常用操作系统的使用。深刻理解线程和进程的概念,掌握线程与进程在组成成分上的差别,以及与其相适应的通信方式和应用目标。

    要求:

    Linux系统的fork()保持了UNIX的经典语义,被创建进程具有独立于父进程的地址空间,二者之间的通信通常可以采用pipe机制。Clone()是Linux 系统特有的系统调用,可以通过参数确定父子之间是否共享存储空间等资源,在地址空间等资源共享的情况下clone()实质上相当于创建了一个轻进程或线程,这是clone()的通常用法。实际在Linux系统中,fork()以及用户级线程pthread都是基于clone()实现的。

    具体要求:

    1. 编写一C语言程序,实现在程序运行时通过系统调用fork(创建两个子进程,使父、子三进程并发执行,父亲进程执行时屏幕显示“I am father”,儿子进程执行时屏幕显示“I am son”,女儿进程执行时屏幕显示“I am daughter”
    2. 多次连续反复运行这个程序,观察屏幕显示结果的顺序,直至出现不一样的情况为止。记下这种情况,试简单分析其原因。

    [内容与步骤]

    修改程序,利用nice(改变各进程的优先级,观察不同情况下进程调度效果的区别。
    修改程序,在父、子进程中分别使用wait、exit等系统调用“实现”其同步推进,多次反复运行改进后的程序,观察并记录运行结果。

    内容:

    以Linux系统进程和线程机制为背景,掌握fork()和clone()系统调用的形式和功能,以及与其相适应的高级通信方式。由fork()派生的子进程之间通过pipe通信,由clone()创建的线程之间通过共享内存通信,对于后者需要考虑互斥问题。
    以生产者-消费者问题为例,通过实验理解fork()和clone()两个系统调用的区别。程序要求能够创建4个进程或线程,其中包括两个生产者和两个消费者,生产者和消费者之间能够传递数据。

    步骤:

    1.用pipe( )创建-一个管道文件,然后用fork( )创建2个生产进程和2个消费进程,它们之间通过pipe( )传递信息。
    2.用elone( )创建4个轻进程(线程),用参数指明共享内存等资源,通过共享内存模拟生产者一消费者问题,利用pthread_mutex_ lock( ), pthread_mutex_unlock( )等函数实现对共享存储区访问的互斥。

    [主要器材与工具]

    Windows xp、VMware、 I inux系统

  • 相关阅读:
    PyTorch 模型性能分析和优化 — 第 2 部分
    Java使用hutool工具类发送网络请求
    C++手敲基于梯度图和像素数量数组的OTSU阈值分割
    全光谱台灯对孩子眼睛有影响吗?什么样的全光谱台灯真的有用
    回溯算法 | 排列问题 | leecode刷题笔记
    5.6如何寻找最长回文子串
    深度学习——day39 综述——(2019 计算机学报)深度卷积神经网络的发展及其在计算机视觉领域的应用_张顺
    python日期计算器 青少年编程电子学会python编程等级考试二级真题解析2021年12月
    《javascript忍者秘籍》笔记
    C++ Reference: Standard C++ Library reference: C Library: cwchar: wcsspn
  • 原文地址:https://blog.csdn.net/m0_46700215/article/details/133524462