操作系统基础教程

article/2025/9/24 2:13:13

目录

第二章:处理器管理

概览

进程调度的层次

进程的调度方式:

调度的评价标准:

典型的调度算法:

第三章:同步、通信和死锁

什么是进程同步?

什么是进程互斥?

进程同步的实现方式

进程互斥的实现方式

信号量和PV操作

管程


第二章:处理器管理

操作系统学习(3)处理机调度:调度的概念、时机、切换、过程以及调度方式和基本准则 | Echo Blog

概览

1、指令系统和寄存器。

2、特权指令和非特权指令:特权指令只能在内核态使用,非特权指令在内核态和用户态(管态和目态)都可以使用。

3、内核态、用户态

4、处理器状态及其转换:有几种情况可以让处理器从用户态转为内核态,一、执行系统调用,程序请求操作系统服务;二、中断事件;三、产生异常。

中断技术:分为内中断(出现就立即执行),外中断。

进程调度的层次

有三种层次:

1、高级调度:作业调度,内存与辅存之间的调度

2、中级调度:一种缓冲机制,作用是将暂时挂起的进程重新调入内存运行。进程挂起当内存不足的时候该进程不进入内存,而是在外存等待,即挂起状态。

3、低级调度:进程/线程调度,是操作系统中最基本的一种调度。

进程的调度方式:

1、非剥夺式调度,一旦开始就必须等他运行结束,实现简单,系统开销小。

2、剥夺式调度:在有优先级的进程时,处理一个优先级更高的进程,这个进程就要是剥夺式进程,就是要处理更加紧急的进程任务。釆用剥夺式的调度,对提高系统吞吐率和响应效率都有明显的好处。

调度的评价标准:

1、CPU 利用率

2、系统吞吐率

3、周转时间:作业完成时间-作业到来时间

平均作业周转时间(相加之和/数量)、平均带权作业周转时间=(完成时间/所需CPU时间+...)/size

4、等待时间

5、响应时间

典型的调度算法:

1、先来先服务算法(First Come First Served,FCFS):每次从就绪队列中选择最先进入该队列的进程,直到完成。

2、短作业优先算法(Shortest Job First,SJF):从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。由于一直选则最短的作业运行,最早进入但是运行时间长的作业等待时间会很长,出现饥饿现象。

3、最短剩余时间优先算法(Shortest Remaining Time First,SRTF):将SJF改为剥夺式算法就成为了该算法。

3、优先级调度算法:优先级调度算法每次从后备作业队列中选择优先级最髙的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。也分为静态优先级和动态优先级,静态优先级可能会造成饥饿现象,即低优先级的进程一直推迟运行。

4、高响应比优先算法(Highest Response Radio First,HRRF):该算法是对FCFS调度算法和SJF调度算法的一种综合平衡,同时考虑每个作业的等待时间和估计的运行时间。在每次进行作业调度时,先计算后备作业队列中每个作业的响应比,从中选出响应比最高的作业投入运行。其中响应比=(等待时间 + 作业处理时间) / 作业处理时间。

5、时间片轮转调度算法(Round-Robin,RR):在这种算法中,系统将所有就绪进程按到达时间的先后次序排成一个队列,进程调度程序总是选择就绪队列中第一个进程执行,即先来先服务的原则,但仅能运行一个时间片,如100ms,形成一个时间环。

6、多级反馈队列调度算法:它是时间片轮转调度算法和优先级调度算法的综合和发展,多个就绪队列,每个队列赋予不同的优先级,而且赋予每个队列的时间片也不相同,如第一个队列的优先级最高,时间片最短。如果是一个短作业,它在级别较高的队列就可以处理完;如果是一个长作业,第一级队列没有完成,可以转到下一个时间片更长的队列末尾,以此类推。

第三章:同步、通信和死锁

操作系统~进程同步与进程互斥的概念和实现方式_Listen-Y的博客-CSDN博客

什么是进程同步?

请看这个管道通信的例子,显然必须先往里面写了数据之后,才可以读数据,但是读数据和写数据是异步发生的,我们不知道实际的读写数据操作谁先谁后,所以需要用进程同步来解决这种问题。

同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而产生的制约关系。进程间的直接制约关系就是源于它们之间的相互合作

什么是进程互斥?

一句话来解释就是对共享资源(也叫临界资源)的互斥访问的控制。共享资源就是多个进程之间的需要共享的资源,在一个进程使用的时候,另外一个进程必须等待(C++中可以使用std::unique_lock<std::mutex> std::lock_guard<std::mutex>来实现资源的互斥锁)。

实现资源互斥,需要遵循以下原则:1.空闲让进。2.忙则等待。3.有限等待。4. 让权等待。

进程同步的实现方式

1、临界区:Critical Section 通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。

2、互斥量(Mutex):为协调共同对一个共享资源的单独访问而设计的。

3、信号量(Semaphore)

4、事件:用来通知线程有一些事件已发生,从而启动后继任务的开始。

进程互斥的实现方式

软件算法:Peterson算法,给每个进程设置标志,为true代表此进程要求进入临界区。

硬件算法:

1、中断屏蔽方法:利用“开/关中断指令”实现(与原语的实现思想相同,即在某进程开始访问临界区到结束访问为止都不允许被中断,也就不能发生进程切换,因此也不可能发生两个线程同时访问临界区的情况)

2、测试并设置指令:系统利用TS指令来实现临界区的上锁和开锁原语操作(不可以中断的操作)。

3、对换指令:void SWAP(bool key, bool lock){ bool temp=b; b=a; a=tmep;}

信号量和PV操作

1、一般信号量

typedef struct{ int value; struct pcb* list;}void P(semaphore s){ s.value--; if(s.value<0) sleep(s.list);}

void V(semaphore s){ s.value++; if(s.value<=0) wakeup(s.list);}

上面就是PV操作的相关结构和函数,注意PV操作都是原语(Atomic Language)。

推论:

1)若s.value>0,s.value代表可以使用的资源数量。

2)若s.value<0,s.value代表等待队列中的进程数量。

3)通常P操作代表申请一个资源,v操作代表归还一个资源

信号量解决的问题:

  1. 信号量实现互斥
  2. 信号量解决五位哲学家进餐问题
  3. 信号量解决生产者-消费者问题
  4. 信号量解决读者-写者问题
  5. 信号量解决睡眠理发师问题。

管程

在管程中有一个很重要的东西,叫做条件变量。

怎样理解C++11中的条件变量? - 知乎

std::condition_variable - cppreference.com


http://chatgpt.dhexx.cn/article/A5Q9VdjC.shtml

相关文章

linux fedora安装教程,u盘安装fedora图文教程

u盘安装fedora系统大家不知道尝试过没有&#xff0c;fedora作为一款被誉为可以超越windows的系统&#xff0c;它具有稳定、快速、开源的优秀品质。相信有很多朋友想要使用fedora系统却不知道如何u盘安装fedora&#xff0c;这是时候就需要小编使出吃奶的力气给大家带来u盘安装fe…

Fedora-i3折腾笔记

Fedora-i3折腾笔记 介绍安装 * 下载fedora-i3 * 制作安装盘 * 开始安装配置 * 添加软件源 * 高分辨率屏幕 * 触摸板 * neovim * 常用软件 * 输入法 * ohmyzsh&#xff08;终端美化&#xff09; * v2rayA * refind我的配置文件的使用 介绍 这里推荐下我个人的GitHub主页&#xf…

安装Fedora系统和一些系统配置

1&#xff0c;在VMware上安装Fedora工作站系统 新建Fedora虚拟机系统&#xff0c;配置好内存、处理器、硬盘、CD、网络配置等参数。 配置内容配置2GB处理器2硬盘20GB网络模式桥接模式&#xff08;自动&#xff09;系统版本Fedora-Workstation-Live-x86_64-30-1.2 &#xff08…

安装Fedora 36 Server

How to Install Fedora 36 Server with Screenshots Fedora 36针对桌面、服务器和云环境以及物联网发布&#xff0c;在本教程中&#xff0c;我们将通过屏幕截图了解如何安装Fedora 36服务器的各个步骤。 服务器版有一些重要的改进&#xff0c;在我们继续安装步骤之前&#xf…

fedora下载中的kde、xfce、workstation区别

简介 在fedora的官网下载中有workstation&#xff08;工作站版&#xff09;、server&#xff08;服务器版&#xff09;、IOT&#xff08;物联网版本&#xff09; 个人开发着首选工作站版&#xff0c;然后到清华找镜像&#xff0c;发现了还有两&#xff1f;&#xff1f;啥玩意 …

Fedora-14源配置

By: Ailson Jack Date: 2022.11.26 个人博客&#xff1a;http://www.only2fire.com/ 本文在我博客的地址是&#xff1a;http://www.only2fire.com/archives/149.html&#xff0c;排版更好&#xff0c;便于学习&#xff0c;也可以去我博客逛逛&#xff0c;兴许有你想要的内容呢。…

Fedora添加国内源

1. 下载配置文件 // 阿里源 root# curl -o /etc/yum.repos.d/fedora.repo http://mirrors.aliyun.com/repo/fedora.repo/repo/fedora.repo root# curl -o /etc/yum.repos.d/fedora-updates.repo http://mirrors.aliyun.com/repo/fedora-updates.repo // 清华源 root# curl -o …

VMware安装Fedora 35 Workstation及使用体验

一、Fedora Fedora为硬件、云和容器创建了一个创新的、免费的和开源的平台&#xff0c;使软件开发人员和社区成员能够为他们的用户构建定制的解决方案。 Fedora Linux&#xff08;第七版以前为Fedora Core&#xff09;是由Fedora项目社区开发、红帽公司赞助&#xff0c;目标是…

Fedora系统配置中文输入法

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目…

选Ubuntu 还是 Fedora ?

提起开发&#xff0c;程序员们更青睐于不同版本的Linux操作系统而不是Windows。 为什么&#xff1f;因为Linux操作起来更安全、快捷&#xff0c;最重要的是&#xff0c;它的发行版本众多。你可以根据需要挑选最适合的那一款。那么&#xff0c;问题来了&#xff0c;到底哪个版本…

Fedora从安装到基本配置

Fedora从安装到基本配置目录 系统简单介绍系统安装系统基本配置软件源配置1.添加RPMFusion源free仓库non-free仓库 2.替换官方软件源3.flatpak包支持4.snap包支持5.添加fedy源 系统配置修改1.修改dnf配置2.修改SELinux配置3.家目录文件夹切换为英文 Gnome基本配置相关资源主题配…

Windows下使用net user命令管理账户

准备工作-以管理员身份运行命令提示符&#xff08;cmd&#xff09; 鼠标左键单击Windos标志或者按下键盘Windows键&#xff0c;下滑菜单&#xff0c;在Windows系统 中找到命令提示符。 2.右键&#xff0c;更多->以管理员身份运行 net user 命令用法 1.查看所有用户 net…

9个非常实用的计算机网络命令

1、ping 命令 ping 是个使用频率极高的实用程序&#xff0c;主要用于确定网络的连通性。这对确定网络是否正确连接&#xff0c;以及网络连接的状况十分有用。 简单的说&#xff0c;ping 就是一个测试程序&#xff0c;如果 ping 运行正确&#xff0c;大体上就可以排除网络访问层…

net start mysql net不是内部或外部命令

安装MYSQL测试本地服务&#xff1a; 提示&#xff1a;net start mysql net不是内部或外部命令 解决方法 1.右击“我的电脑”&#xff0c;属性——高级——环境变量&#xff0c;在“系统变量”(用户变量)里找到path&#xff0c;编辑&#xff0c;将变量值添加C:\windows\system…

两行命令查看wifi密码

在终端输入两行命令查看连接过的wifi的密码 1.winr后输入cmd打开终端 2.输入netsh wlan show profile查看wifi名称 3.输入netsh wlan export profile folderC:\ keyclear&#xff0c;回车后在c盘根目录下会看到以wifi名称命名的xml文件。 4.直接打开xml文件或右键点击xml文…

net use 命令使用

WINDOWS2003&#xff08;或其他的windows服务器&#xff09;在局域网共享文件时&#xff0c;有时候测试的时候要更换登陆的用户名。使用NET USE 命令可以方便处理。 1&#xff09;删除已有的连接&#xff0c;避免出现“一个用户使用...多重连接”的问题。 net use * /delete …

解决net不是此命令的问题

我相信绝大部分的net命令出错都是&#xff1a;&#xff08;net不是内部或外部命令&#xff0c;也不是可运行的程序&#xff09; 解决办法&#xff1a; 这是因为我们在使用的这个命令&#xff0c;在这个文件目录下并不存在&#xff0c;或者是我们的环境变量的path没有设置net命…

net use 命令使用教程

作用 使用net use 命令可以将远端的共享资源挂载到本地&#xff0c;即将共享目录映射到本地的指定位置。 用法 假设现在存在两台机器&#xff0c;一台ip为10.13.0.99作为目标机器&#xff0c;一台ip为10.13.6.139作为本地机器&#xff0c;现在我想在本地机器&#xff08;10.…

Windows cmd net 命令

一、net view 用法 1、查看局域网内计算机 net view 2、主名机查 MAC 地址 nbtstat -a hostname 3、查看 IP 与 MAC 地址映射表 来获取 IP arp -a 4、根据 IP 查主机名 nbtstat -A IP 二、net use 用法 1、建立非空连接 net use \\10.3.0.39\ipc$ "passwd&qu…