首页 > 系统相关 >OS-Lab3-Linux进程相关的系统调用和线程相关的库函数

OS-Lab3-Linux进程相关的系统调用和线程相关的库函数

时间:2024-10-16 14:25:16浏览次数:7  
标签:Lab3 Race 线程 Linux 进程 Condition 库函数

实验目的
1) 演示/实践:Linux进程控制相关的系统调用(如exec()/exit()等)
2) 演示/实践:Linux多进程的条件竞争/Race Condition的现象观察
3) 演示/实践:Linux的线程库pthread的初步和入门(如何创建一个用户态的Linux线程:相关库函数pthread_create()等),以及其条件竞争/Race Condition的现象观察。
实验步骤
Task1: Linux进程控制相关的系统调用(如exec()/exit()等):通过process.c程序来理解Linux进程相关的系统调用。
具体过程包括:利用vi/vim编辑器,fork和execv函数族创建一个多进程程序,使父进程创建子进程后,输出hello然后一直等待; 子进程使用ls显示根目录下的所有文件;父进程在子进程完成后输出byebye,结束父进程。


Task2: Linux的多进程的条件竞争/Race Condition的现象观察:通过fork.c程序来理解Linux的多进程所导致的条件竞争现象。
具体过程包括:利用vi/vim编辑器,输入程序fork.c的代码,然后利用gcc编译器进行编译、链接,和运行(至少两次,然后列举出不同的两次执行效果,并对比),并截图。
两次运行结果中响应结果不同,观察到不同的执行效果。这两种情况的出现是因为父进程和子进程是并发执行的


Task3: Linux的线程库pthread的初步和入门,Linux的多线程的条件竞争/Race Condition的现象观察:理解Linux的用户态线程的创建:相关库函数pthread_create()等。通过thread.c程序来理解Linux的多进程所导致的条件竞争现象。
具体过程包括:利用vi/vim编辑器,输入以下程序thread.c的代码,然后利用gcc编译器进行编译、链接,和运行(至少两次,然后列举出不同的两次执行效果,并对比)

标签:Lab3,Race,线程,Linux,进程,Condition,库函数
From: https://www.cnblogs.com/arm-blog/p/18469834

相关文章

  • OS-Lab4-多线程编程基础
    实验目的事先编辑好数据文件1.dat和2.dat,它们的内容分别为12345678910和-1-2-3-4-5-6-7-8-9-10。根据示例代码和其运行效果设计一个程序,在这个程序中一共有3个线程,其中两个线程负责从文件读取数据到公共的缓冲区,另外一个线程从缓冲区读取数据作不同的处理(加和......
  • 多线程&JUC的学习
    1、什么是线程?进程:进程是程序的基本执行实体。一个软件运行之后就是一个进程。线程:是操作系统能够运行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。简单理解:应用软件中互相独立,可以同时运行的功能。2、多线程的作用?        提高效率。3、多线......
  • C# 并发控制框架:单线程环境下实现每秒百万级调度
    前言在工业自动化和机器视觉领域,对实时性、可靠性和效率的要求越来越高。为了满足这些需求,我们开发了一款专为工业自动化运动控制和机器视觉流程开发设计的C#并发流程控制框架。该框架不仅适用于各种工业自动化场景,还能在单线程环境下实现每秒百万次以上的调度频率,从而从容应......
  • c++如何使用pthread_join函数配合pthread_create函数来创建和等待线程完成,实现线程同
    在C++中,pthread_create 和 pthread_join 是POSIX线程库(pthread)的一部分,用于创建和管理线程。pthread_create 用于创建一个新的线程,而 pthread_join 用于等待一个线程的执行完成,从而实现线程同步与控制。基本步骤使用 pthread_create 函数创建一个线程。线程的工作由......
  • 线程,进程,协程
    线程,进程,协程进程是什么:​ 最小的资源分配单位。进程上下文切换​ 指cpu保持原有的进程的状态的同时去切换到下一个进程​ 包含两个主要过程:进程地址空间切换和处理器状态切换线程是什么​ 线程是操作系统中最小的调度单位。​ 线程是进程的子集,也称为轻量级进程。一......
  • 【多线程奇妙屋】“线程等待” 专讲,可不要只会 join 来线程等待哦, 建议收藏 ~~~
    本篇会加入个人的所谓鱼式疯言❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言而是理解过并总结出来通俗易懂的大白话,小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.......
  • Java中多线程的学习
    Java多线程学习总结目录Java多线程学习总结什么是进程什么是线程进程与线程的区别地址空间资源占用健壮性执行过程并发与资源消耗创建线程方式一:继承Thread类,并重写run()方法方式二:实现Runnable接口,并实现run()方法线程的状态线程暂停执行条件线程优先级多线程多线......
  • java爬虫多线程代理:为数据采集提供强力支持
    Java爬虫中的多线程与代理应用在当今这个信息爆炸的时代,数据的获取与处理变得尤为重要。Java作为一种强大的编程语言,广泛应用于爬虫开发中。而在爬虫的实践中,多线程和代理的结合,可以让我们的爬虫如同一支训练有素的队伍,快速、高效地获取所需数据。接下来,我们将深入探讨Java爬......
  • 自定义线程池的使用
    现在有一个使用多线程进行调优的案例:模拟使用多线程并发处理数据。1.自定义一个线程池//自定义一个线程池classThreadPoolManger{privatefinalThreadPoolExecutorexecutor;privatefinalAtomicBooleanisShutdown;/***构造方法,用于初始化线程......
  • 多线程批量插入数据
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、多线程使用背景二、代码实现1.单线程插入2.多线程插入总结前言在面试过程中我们经常会被问到多线程的问题。但是在实际工作过程中可能使用的场景不是特别多,在这边给大家提供一个多......