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


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

    课程名称:操作系统原理
    项目名称:进程与线程创建控制程序
    实验(实训)类型:设计性实验
    实验(实训)课时: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系统

  • 相关阅读:
    python笔记--input()、运算符、布尔、循环
    并发编程之生产者消费者模型
    如何将java项目部署到github?如何将github的java项目部署到本地(通过idea)?
    c语言数据结构 排序(二)
    如何批量图片重命名不同名字?
    使用Netty编写通用redis客户端(可指定服务器地址与端口号连接任意redis)
    解决logstash插件logstash-outputs-mongodb一条数据失败后一直重复尝试
    第十三天到达终点数字
    AI 大模型赋能手机影像,小米14 Ultra 让真实有层次
    基于springboot的高校学生实践成长检测系统
  • 原文地址:https://blog.csdn.net/m0_46700215/article/details/133524462