操作系统part2:四种常见调度算法、进程同步和互斥机制

news2024/12/26 22:46:21

在这里插入图片描述

1. 四种常见调度算法的实现原理及优缺点。

a. 先来先服务(FCFS):

  • 实现原理:按照进程到达的先后顺序进行调度,先到达的进程先执行,直到执行完毕或阻塞。
  • 优点:简单易懂,适用于长作业时间或低优先级的任务。
  • 缺点:平均等待时间较长,可能会导致长作业时间的进程饥饿问题。

b. 最短作业优先(SJF):

  • 实现原理:根据进程的估计执行时间(或预测执行时间)进行调度,选择估计时间最短的进程先执行。
  • 优点:能够最大程度地减少平均等待时间,适用于短作业时间的任务。
  • 缺点:对作业时间估计准确性要求高,可能会导致长作业时间的进程饥饿问题。

c. 轮转调度(RR):

  • 实现原理:将CPU时间划分为固定大小的时间片(时间量子),每个进程按照时间片轮流执行,如果时间片用完则切换到下一个进程。
  • 优点:公平性好,适用于多个进程的时间片轮转。
  • 缺点:对于长时间的进程,可能会导致上下文切换频繁,增加系统开销。

d. 优先级调度:

  • 实现原理:为每个进程分配一个优先级,优先级高的进程先执行。优先级可以根据进程类型、重要性等因素确定。
  • 优点:能够根据任务的优先级进行调度,适用于不同优先级任务的场景。
  • 缺点:可能会导致低优先级的进程饥饿问题,需要合理设置优先级。

2. 四种常见的进程同步和互斥机制的实现原理及优缺点。

a. 信号量:

  • 实现原理:信号量是一种用于线程或进程间同步与互斥的机制。基于一个计数器,当计数器大于0时,线程可以继续执行;当计数器等于0时,线程需要等待。通过两个基本操作:P(等待)和V(发信号),可以实现资源的同步和互斥。
  • 优点:可以用于解决生产者-消费者问题、限制并发访问资源等场景。
  • 缺点:需要手动管理计数器的值,容易引起死锁或饥饿问题。

b. 互斥锁:

  • 实现原理:互斥锁是一种用于保护共享资源的机制。在任意时刻,只允许一个线程持有互斥锁,其他线程需要等待。当线程完成对共享资源的访问后,释放互斥锁,其他线程才能继续访问。
  • 优点:简单易用,能够确保共享资源的互斥访问。
  • 缺点:容易引起死锁或饥饿问题,需要小心使用。

c. 条件变量:

  • 实现原理:条件变量用于在线程间进行通信和同步。与互斥锁一起使用。当线程需要等待某个条件满足时,通过条件变量进入等待状态,同时释放互斥锁。当其他线程改变了条件并发出信号时,等待的线程被唤醒,重新获取互斥锁并继续执行。
  • 优点:能够有效地进行线程间的通信和同步。
  • 缺点:容易引起死锁或竞态条件,需要小心使用。

d. 管程:

  • 实现原理:管程是一种高级的同步原语,结合了互斥锁、条件变量和共享数据结构。提供了一种结构化的方式来管理共享资源和协调线程间的操作。线程通过调用管程中的过程来访问共享资源,并通过互斥锁和条件变量来保证正确的同步和互斥。
  • 优点:提供了一种高级的抽象,能够更方便地管理共享资源和线程间的通信。
  • 缺点:实现较为复杂,需要保证正确使用互斥锁和条件变量。

互联网大厂测开经历,目前担任测试开发负责人,每天分享互联网面经,如果你有测试相关的问题,欢迎咨询,海鲜市场【简历优化】、【就业指导】、【模拟/辅导面试】,已辅导20位以上同学拿到心仪offer

简历修改119/次
模拟面试149/小时
测试开发工具指导149/小时

海鲜市场

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

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

相关文章

DolphinScheduler 调度工作流报错 Host key verification failed.

文章目录 出现问题错误原因及解决方法1.SSH 免密登录配置失败、失效2.不存在该租户 建议 出现问题 在执行调度任务时,失败了,查看日志发现错误 —— Host key verification failed. 错误原因及解决方法 1.SSH 免密登录配置失败、失效 这种情况就检查…

探索分布式系统监控zabbix-------------监控Windows

扩展windows 10 server2012 server2016 server2019 监控 一、在虚拟机中安装zabbix的客户端 下载网站 Download and install Zabbix 安装系统一直托不进虚拟机中;因为没安装Tools组件 点击虚拟机,选择安装VMware Tools 查看主机名 二、在web页…

Zabbix6.0监控入门

1. Zabbix 监控系统入门简介 Zabbix 是一个基于 WEB 界面的提供分布式系统监控的企业级的开源解决方案,Zabbix 能监视各种网络参数,保证服务器系统的安全稳定的运行,并提供灵活的通知机制以让 SA 快速定位并解决存在的各种问题。Zabbix 分布式…

强化学习(四)基于蒙特卡罗算法 Monte-Calo 的求解

文章目录 1. 免模型学习的强化学习问题2. 利用蒙特卡洛法求解最优价值函数2.1 策略评估(预测)2.2 策略迭代(控制) 在《强化学习(三)基于动态规划 Dynamic Programming 的求解方法》的文末中提到&#xff0c…

rust学习(BorrowMut异常)

现象: 编译没有问题,运行时出现: 代码: pub fn do_test() {let v Arc::new(RefCell::new(100));let v1 v.try_borrow_mut().unwrap();let v2 v.try_borrow_mut().unwrap(); } 原因: 一个cell貌似不能同时被借用…

书生·浦语大模型实战营之OpenXLab 部署 InternLM2 实践指南

书生浦语大模型实战营之OpenXLab 部署 InternLM2 实践指南 本文档将手把手教您如何在 OpenXLab 部署一个 InternLM2-7B chat 的应用 目录 资料介绍书生浦语 InternLM介绍OpenXLab浦源平台介绍部署 InternLM2-Chat-7B demo模型准备上传模型编写代码部署应用 资料介绍 书生浦语…

Matlab求矩阵的逆,3种常用方法总结

几种求逆矩阵的方法总结,以Matlab语言为例 *0* 引言*1* 简单描述函数实现*2* 方法调用计算对比 0 引言 最近在使用函数库求解逆矩阵的时候发现同一个矩阵使用不同的语言、不同的求解方法会产生不同精度的结果,特别是阶数很高的方阵,一些库中的…

基于LabVIEW的CAN通信系统开发案例

基于LabVIEW的CAN通信系统开发案例 介绍了基于LabVIEW开发的CAN通信系统,该系统主要用于汽车行业的数据监控与分析。通过对CAN通信协议的有效应用,实现了车辆控制系统的高效信息交换与实时数据处理,从而提升了车辆性能的检测与优化能力。 项…

【MySQL数据库】 (篇一 ) 让你快速上手——新手速通版

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、如何起步?🏃‍1.创建数据库:2.选择数据库:3.删除数据库:4.创建表:5.删除表&#xff…

贝锐蒲公英自研异地组网新技术:远程视频监控,流畅度、清晰度大幅提升

在远程视频监控过程中,若遇到网络带宽若遇到网络波动,如:丢包、高延迟等,往往会导致视频流传输时发生数据丢失或延迟现象,从而严重影响视频画面的清晰度和流畅度。 比如:在公司总部集中监看远程矿山或户外水…

华为ensp中静态路由和默认路由的原理及配置

作者主页&#xff1a;点击&#xff01; ENSP专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年4月17日17点37分 默认路由 [Router] ip route-static <目的网络> <目的网络掩码> <下一跳地址>默认路由的作用是将无法匹配路由表中其他路由表项的…

通过WSL在阿里云上部署Django项目MySQL

前端用Vue&#xff0c;后端用Django&#xff0c; nginx&#xff0c;Mysql 参照&#xff1a; 通过WSL在阿里云上部署Vue项目_阿里云 wsl-CSDN博客 阿里云重登录 采用Ubuntu系统&#xff0c; apt update #检查是否已经安装 mysql --version systemctl status mysql apt insta…

react v18 项目初始化

按照以下命令进行傻瓜式操作即可&#xff1a; 全局安装脚手架工具&#xff1a; npm install -g create-react-app创建项目my-react-app&#xff1a; create-react-app my-react-app安装 antd: yarn add antd安装 react-router-dom&#xff1a; yarn add react-router-dom启动项…

【模拟】Leetcode Z 字形变换

题目讲解 6. Z 字形变换 算法讲解 class Solution { public:string convert(string s, int numRows) {if(numRows 1)return s;string ret;int step 2 * numRows - 2;int n s.size();//记录第一行for(int i 0; i < n; i step){ret s[i];}//处理接下来的行for(int i …

C++练级之路——类和对象(中二)

1、运算符重载 C为了增强代码的可读性引入了运算符重载&#xff0c;运算符重载是具有特殊函数名的函数&#xff0c;也是具有其返回值类型&#xff0c;函数名字以及参数列表&#xff0c;其返回值类型和参数列表与普通的函数类似。 函数名字为&#xff1a;关键字operator后面接需…

【前端面试3+1】14 路由跳转的方式、如何取消已经发送的ajax请求、如何按顺序发起三个ajax请求并按顺序返回、【两个数组的并集】

一、路由跳转的几种方式 1、页面跳转 使用超链接 <a> 标签&#xff1a;通过在页面中定义超链接&#xff0c;用户点击超链接后会跳转到指定的URL页面。使用重定向&#xff1a;服务器端可以通过设置HTTP响应头中的Location字段&#xff0c;将用户重定向到指定的URL页面。使…

MySQL Prepared语句(Prepared Statements)

在数据库应用中&#xff0c;很多SQL语句都会重复执行很多次&#xff0c;每次执行可能只是where条件中的变量值不同&#xff0c;但MySQL依然会解析SQL语法并生成执行计划。对于这类情况&#xff0c;可以利用prepared语句来避免重复解析SQL的开销。 文章目录 一、prepared语句优…

职业技能鉴定服务中心(新闻系统+证书查询系统)

后端采用ThinkPHP8&#xff0c;最新tp框架 前端采用divcss布局 数据库采用MySQL 采用三种技术实现新闻系统和证书查询系统 源码&#xff1a;git clone https://gitee.com/3539949703/certificate-website.git 效果图如下&#xff1a;

2024年国内可用最强AI工具软件应用排行榜TOP8——优点和缺点

中国在2024年持续推动人工智能&#xff08;AI&#xff09;发展&#xff0c;受到政策、技术和市场的三重驱动。诞生了一批人工智能&#xff08;AI&#xff09;领域的新力军。我们通过对国内AI的逐一评测&#xff0c;从各个AI处理结果优略的角度&#xff0c;再结合网络上广大AI用…

bootstrap-select 搜索过滤输入中文问题,前2个字母输入转成空格

bootstrap是v3.3.7的 v1.6.3版本的bootstrap-select,注释以下2行 //that.$menu.find(li).filter(:visible:not(.divider)).eq(0).addClass(active).find(a).focus(); // $(this).focus();