操作系统:线程同步和调度

news2025/1/12 20:47:39

文章目录

  • 线程同步和调度
    • 一、实验目的
    • 二、实验要求与内容、过程与结果
  • 总结

线程同步和调度

一、实验目的

通过创建线程、分配线程优先级和终止线程的程序设计和调试操作,进一步熟悉操作系统的线程概念,理解Windows 2000线程的生命周期。
通过对事件、互斥体对象和信号量的了解,加深对Windows 2000线程同步的理解。

二、实验要求与内容、过程与结果

1、运行例程3-1,注意观察运行结果。请回答线程的实际工作在哪个方法中来实现的,并描述程序的功能。

1

程序功能:在DoStuff中实现将线程A与B的ID各输出5次。

2、修改例程3-1,创建两个线程MyThred1和MyThred2:线程MyThred1输出10次“A。。。” ,线程MyThred2输出10次“B^^^”。多次运行该程序,并注意观察输出结果是否一样?并回答在程序运行过程中,任务管理器中能看见这2个线程吗?(为了便于任务管理器观察线程的执行,可将循环次数设置大些。)
(1)多次运行该程序,观察到输出结果不一样。
(2)在程序运行过程中,任务管理器中能看见这2个线程。

2

3、运行例程3-2,线程A和线程B哪个先运行结束?为什么?将程序中语句:wtA.SetPriority(THREAD_PRI0RITY_L0WEST)
中的参数THREAD_PRI0RITY_L0WEST修改为THREAD_PRIORITY_HIGHEST后,再运行程序,输出结果有何不同?
3.1 3.2

修改前B先完成,因为A的优先级最低;修改后A先完成,因为A的优先级最高。

4、运行例程3-3,线程A和线程B哪个先运行结束?为什么?

4

线程A先结束,因为线程B挂起,只有在A执行完毕之后才继续执行。

5、运行例程3-4,写出屏幕中的输出信息,并请描述该程序的功能。

5

功能:创建和打开进程间的要发送信号的事件对象。

6、运行例程3-5,请描述该程序的功能。

6

功能:使用互斥体来保护共享资源。

7、运行例程3-6,请描述该程序的功能。

7

功能:使用信号量来限制活动线程数。

8、编写一个程序,利用信号量来实现多个生产者-消费者问题。
8.1
8.2
8.3

总结

线程同步和调度是操作系统中非常重要的概念和技术,它们在多线程编程中扮演着重要的角色。在本文中,我们将简单介绍线程同步和调度的概念和实现方法。

一、线程同步

线程同步是指多个线程之间协调执行的过程,控制各个线程执行的顺序,保证它们的执行结果是正确的。线程同步可以防止多个线程同时访问或修改共享变量,从而避免由此产生的不一致性或错误。

常用的线程同步方法有互斥锁、信号量和条件变量。互斥锁是一种独占锁,它保证只有一个线程可以访问共享资源,其他线程则必须等待。信号量是一种计数锁,它维护了一个资源的计数器,线程可以获得或释放这些资源。条件变量则是用于线程的等待和通知机制,它可以让线程在某个条件成立时等待或唤醒。

二、线程调度

线程调度是指操作系统决定哪个线程可以运行的过程。操作系统的调度算法决定了每个线程被分配的处理时间和顺序。调度算法根据一些因素,如线程的优先级、I/O等待和执行时间等来决定每个线程的运行顺序。

常用的调度算法有先来先服务、短作业优先、轮转和多级反馈等。在先来先服务算法中,CPU将分配给最早发出请求的线程。在短作业优先算法中,长时间等待的任务将被延迟,因为较短的任务更容易完成。轮转算法将CPU时间分配给每个线程一定的时间片,每个线程轮流运行,以使所有线程都有机会获得相等的CPU时间。多级反馈算法则为每个线程分配不同的优先级,并将它们放入不同的队列中,以便更好地管理线程的执行。

总之,线程同步和调度是多线程编程的核心概念和技术。了解这些概念和方法,可以帮助程序员更好地编写多线程应用程序,提高程序的并发性和性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1105153.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

7z压缩包如何设置加密?如果忘记密码该怎么办?

7z压缩包是压缩率最大的压缩包格式,当我们给文件进行压缩时,可能会想给压缩包进行加密,那么7z压缩包如何设置加密?加密的7z压缩包又如何解密呢?分享7-zip加密、解密教程。包括忘记了压缩包密码该如何解决? …

地理知识笔记:Haversine距离

1 介绍 Haversine距离用于计算地球上两点之间的大圆距离当考虑地球的真实曲率时,它特别适用于计算两个经纬度坐标之间的距离 其中: 2 python 实现 def haversine_distance(lat1, lon1, lat2, lon2):R 6371 # Earth radius in kilometersdlat np.r…

让千年诗酒文化生生不息,多国文艺界名家齐聚2023年国际诗酒文化艺术周盛宴

执笔 | 萧 萧 编辑 | 古利特 10月15日,国际诗酒文化大会第七届中国酒城泸州老窖文化艺术周在酒城泸州盛大开幕,文学家、艺术家、翻译家、文化学者、媒体记者等各界嘉宾与来自阿根廷、智利、哥伦比亚等十余国的诗人朋友齐聚,共襄年度诗酒文…

关闭mysql,关闭redis服务

1. 关闭redis服务: 查询redis安装目录: whereis redis which redis find / -name redis 关闭redis服务: redis-cli -h 127.0.0.1 -p 6379 auth 输入密码 shutdown 关闭redis服务 2. 关闭mysql服务: 查询mysql安装目录&…

基于Java的留学生交流互动论坛系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

【LeetCode】38. 外观数列

1 问题 给定一个正整数 n ,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) “1” countAndSay(n…

【linux 0.11 学习记录】一、环境配置,用Bochs输出hello world

想学习linux,又不知道从哪里下手,体系太大,哪块内容都很多,无奈下选择了linux0.11作为入口,本系列将是学习笔记,希望能坚持下去吧 环境配置 这里使用win10bochs2.7 安装bochs 官网:https://b…

【学习笔记】RabbitMQ-6 消息的可靠性投递2

参考资料 RabbitMQ官方网站RabbitMQ官方文档噼咔噼咔-动力节点教程 文章目录 十一、队列Queue的消息属性11.1 具体属性11.2 自动删除11.2 自定义参数11.2.1 **Message TTL** 消息存活时间11.2.2 **Auto expire** 队列自动到期时间11.2.3 **Overflow behaviour** 溢出行为11.2.4…

编程基础-C++入门到入土知识手册

C基础知识 C 语言教程一 、简介 环境设置C11 新特性文本编辑器C 编译器 二、程序结构编译 & 执行 C 程序三、 基本语法C 的令牌(Token)1分号 ;2注释3标识符4关键字5 C 中的空格 四、数据类型整数类型浮点类型void 类型 C primer Plus黑马C语言简介C语…

创建node、vue、以及@vuecli 和 vue-cli 的区别

创建node、vue、以及vue/cli 和 vue-cli 的区别 创建vue的五种方法 参考 如何创建一个vue项目(详细步骤) 方法一:vue init webpack 项目名(vue-cli2.x的初始化方式) vue init webpack blog 创建项目(blog 是项目名…

Vuex:一个强大的状态管理模式

🙈作者简介:练习时长两年半的Java up主 🙉个人主页:程序员老茶 🙊 ps:点赞👍是免费的,却可以让写博客的作者开心好久好久😎 📚系列专栏:Java全栈,…

故障诊断实验台 | PT300mini微型振动故障实验台

很多同学因为实验数据而被困扰,目前数据来源有3方面,公开实验数据集、校企合作项目实际数据、自制实验台数据。 公开实验数据集被用烂了,容易被审稿人质疑; 校企合作项目实际数据缺少故障数据,数据需保密,…

抖音同城榜上榜策略

随着抖音的普及,越来越多的人开始使用抖音来展示自己的才华、记录生活或者做推广。但是,如何让自己的短视频在抖音同城榜上榜,成为本地热门话题呢?下面,我将分享一些实用的策略,帮助您实现这一目标。 抖音同…

.NET验收

验收通用模板: 1.该资料计划看几天? 实际看了几天? 计划7天,实际看了9天 2.多少天一篇总结?将总结列出来。 一周总结一篇。 博客地址:3.这个资料相较于之前资料共同的内容是什么? 不同的(需要强化学习)…

“数聚瑞安 · 创新未来”中国·瑞安第四届创新创业大赛角逐火热,初赛结果已公布!

“数聚瑞安 创新未来”中国瑞安第四届创新创业大赛得分排行榜上,各参赛队伍的分数不断被刷新。由中共瑞安市委、瑞安市人民政府主办,瑞安市科学技术局承办,华为(浙南)工业互联网创新中心、瑞安华数广电网络有限公司、…

分布式服务的链路跟踪 Sleuth Micrometer zipkin OpenTelemetry

由来 在分布式应用开发过程中,一个请求会调用多个应用,会有那种需要知道各个应用之间耗时的想法,这样可以知道一个调用的总时长以及各个组件之间的处理耗时,后面方便定位问题。 理论依据 起源于 google dapper 论文 https://re…

记录:移动设备软件开发(layout六大布局)

目录 前言layoutLinearLayout线性布局LinearLayout的常用属性Android:orientation属性Android:gravity属性 TableLayout表格布局TableLayout的常用属性collapsecolumns属性shrinkcolums属性stretchcoumns属性 RelativeLayout相对布局Absolute Layout绝对…

Python学习笔记——基本类型、函数、输入和输出

食用说明:本笔记适用于有一定编程基础的伙伴们。希望有助于各位! 基础类型 常用的简单类型有str,float,int,bool等,常见的复杂数据类型有function,type,list,tuple&…

SAP_MMPV创建自动任务每月底自动开下月物料账

SAP_MMPV创建自动任务每月底自动开下月物料账 1、MMPV设置变式 输入事务代码MMPV进入物料开账界面,输入公司代码,注意开账月份与时间等都不输入,点击保存按钮,如下图。 输入变式名称、描述,将变式设置为“仅用于后台…

程序的编译(预处理操作)+链接

目录 前言: 1. 程序的翻译环境和执行环境: 2. 详解编译链接 翻译环境: 1.预处理:(文本操作) 2.编译: 3.汇编: 4.链接: 运行环境 预处理详解 : #defi…