操作系统笔记


第一章

1.1操作系统的功能与概念

image-20230911220513668

image-20230911220700891

命令接口与程序接口都是用户接口

1.2操作系统的四个基本特征

image-20240623211746034

image-20230911220756292

image-20230911220338410

1.3操作系统的发展与分类

image-20230911223629023

1.4操作系统的运行机制

​ 如果cpu处于用户态的时候收到来着应用程序的内核指令时这个非法事件会引发一个中断信号,当cpu检测到中断信号时,会立即转变为核心态,并停止运行当前运行的应用程序,转而运行处理中断信号的内核程序。

image-20230911225830366

image-20230911230007871

1.5中断与异常

image-20240624163800430

image-20230912205307711

image-20230912210037448

中断的基本原理

image-20230912210312959

image-20230912210504924

1.6系统调用

与共享资源的有关的操作都是由操作系统内核统一管理,因此凡是与共享资源有关的操作,都必须通过系统调用的方式项操作系统内核提取服务请求。以保证系统的安全性与稳定性,防止用户进行非法操作。

image-20230912211533707

image-20230912212431706

image-20230912212706404

1.7操作系统的体系结构

image-20230912213016257

image-20230912213137730

image-20230912213533071

所以大内核结构的操作系统性能更好。

image-20230912213714773

image-20230912213810192

红星是新内容,金星是老内容

image-20230912220453883

1.8操作系统的引导

image-20230912221630989

image-20230912221741224

1.9虚拟机

image-20230912222847537

第一类虚拟机管理程序直接运行在硬件上,只有虚拟机管理程序运行在内核态只有他可以使用特权指令,又因为虚拟操作系统以为自己运行在内核态,所以在有时会使用特权指令又虚拟操作系统运行在用户态所以不能使用特权指令,这时虚拟机管理程序会截获该指令等价转换一下,给虚拟操作系统模拟出特权指令执行成功的状态。

第二类虚拟机管理系统不是直接运行在硬件之上,如果虚拟机管理程序想要为虚拟操作系统需要分配硬件资源,则需要请求宿主操作系统分配硬件资源之后自己再对资源进行再分配给虚拟操作系统。

第二类虚拟机管理程序的内核态部分是以虚拟机驱动程序的形式加载在操作系统内核中的

image-20230912222927050

image-20230912231012066

image-20240625162724742

第二章

2.1进程的概念、组成、特征

image-20230914210121311

image-20230914210629184

image-20230914210915432

image-20230914211234494

2.2进程的状态与转换、进程的组织

进程的pcb正在被创建时就是”创建态“。创建完等待被cpu运行的状态就是“就绪态”。正在被cpu执行的就是”运行态“。在进程运行的过程中,可能会请求等待某个事件的发生(如等待某种系统资源的分配,或者等待其他进程的响应)在这个事件发生之前,进程无法继续往下执行,此时操作系统会让这个进程下CPU,并让它进入“阻塞态”

当CPU空闲时,又会选择另一个“就绪态”进程上CPU运行。

当那个事件发生后这个进程就进入“就绪态”

一个进程可以执行exit系统调用,请求操作系统终止该进程此时该进程会进入“终止态”,操作系统会让该进程下CPU,并回收内存空间等资源,最后还要回收该进程的PCB。

image-20230914213707656

image-20230914213918649

大多数系统的组织方式采用的链式方式

image-20230914214101383

image-20230914214217004

image-20230914214609890

2.3进程控制

image-20230915204421305

image-20230915214910323

image-20230915205443439

image-20230915205759623

image-20230915215553485

image-20230915222949819

image-20230915214631180

2.4进程通信

image-20230918221110370

image-20230918221440136

image-20230918212432694

直接通信的方式需要指名道姓的说明我是谁需要发给谁(PID)

image-20230918212806006

管道的通信只能是单向的,从一端写入数据从另一端读出文件。(先进先出)

第五小点的解决方案以第一种为准,即一个通道允许多个写进程,一个读进程,但是从实际应用的角度看多个写进程多个读进程的说法没有错。image-20230918215839838

image-20230918220729417

image-20230918220526896

image-20240626121952657

2.5线程的概念

image-20230919204420208

image-20230919204755224

image-20230919205125783

image-20230919205434810

2.6线程的实现方式和多线程模型

image-20230919210621995

image-20230919211603385

image-20230919211726098

image-20230919211918070

image-20230919212443868

image-20230919212508979

2.7线程的状态与转换

image-20230919213955471

image-20230920204140742

第三章

3.1调度的概念、层次

image-20230920204733638

image-20230920205017868

image-20230920205311108

image-20230920205646698

image-20230920205840418

image-20230920205952927

3.2进程调度的时机、切换与过程、方式

image-20230920211510494

image-20230920211331934

image-20230920211718740

image-20230920212059724

image-20230920212301526

3.3调度器和闲逛进程

image-20230920213356187

image-20230920213437961

image-20230920213646894

为什么避免cpu无事可做呢?

猜测:

当系统没有其他任务需要执行时,为什么不让 CPU 完全停止运行而是要让 Idle 进程占用 CPU,这涉及到操作系统的一些设计决策和计算机架构的考虑。以下是一些原因:

  1. 能源管理: 许多现代计算机系统采用了节能技术,可以动态地调整 CPU 的频率和电压以降低能耗。当没有任务需要执行时,系统可以将 CPU 转入低功耗模式,但不需要完全关闭它。Idle 进程可以协助系统在空闲时降低 CPU 的功耗,而不必完全关闭 CPU。
  2. 处理器加电之后必须不停工作,除非休眠!

image-20230924195515663

3.4调度算法的评价指标

image-20230920225113381

image-20230920225332043

image-20230920234152790

image-20230920234318253

image-20230920234415724

3.5调度算法(1):适合批处理系统的调度算法

image-20230924150833934

3.5.1先来先服务(FCFS)

image-20230924151800025

3.5.2短作业优先(SJF)

image-20230924152111550

image-20230924152536936

image-20230924152835766

image-20230924153201023

3.5.3高响应比优先(HRRN)

image-20230924153853373

image-20230924154006874

总结

image-20230924154319007

3.6调度算法(2):更加适合交互系统的调度算法

3.6.1时间片轮转(RR)

时间片大小为2的情况:

image-20230924155626709

image-20230924155754223

image-20230924155820465

时间片大小为5的情况:

image-20230924160115769

image-20230924160545601

image-20230924160636152

一般来说,设计时间片时要让切换进程的开销占比不超过1%

3.6.2优先级调度算法

(注:优先数越大,优先级越高)

非抢占式:

image-20230924160941745

抢占式:

image-20230924161156798

image-20230924161558033

image-20230924161644428

多级反馈队列调度算法

image-20230924161813999

image-20230924162405227

image-20230924162710987

总结

image-20230924162931730

3.7调度算法(3)

3.7.1多级队列调度算法

image-20230924183705633

3.8进程同步、进程互斥

image-20230924184305589

image-20230924184433121

image-20230924184710687

image-20230924184848136

image-20230924184946759

3.9进程互斥的软件实现方法

image-20230924190038253

image-20230924190240884

image-20230924190752720

image-20230924191034511

image-20230924192224677

image-20230924192347664

3.10进程互斥的硬件实现方法

可以使用硬件的方式,使得检查其他人意愿的动作与上锁的动作一气呵成,从而满足四个原则。

image-20230924192945123

image-20230924193745315

image-20230924194259852

image-20230924194327668

3.11互斥锁

image-20230924194540222

image-20230924194742334

多核的情况中,因为另一个进程可能在其他进程循环忙的时候迅速使用完临界资源解锁,所以循环忙的进程可以在时间片未切换的情况 下获得临界资源,此时不需要切换上下文,反而代价会很低。

3.12信号量机制

image-20230926201038895

image-20230926201611123

image-20230926201946553

image-20230926202602250

image-20230926202854848

image-20230926203039183

3.13用信号量机制实现进程互斥、同步、前驱关系

image-20230926203425904

image-20230926204313903

image-20230926205049814

image-20230926205549144

image-20230926205753917

3.14生产者-消费者问题

image-20230926211300958

image-20230926211736759

image-20230926212259185

image-20230926212516072

3.15多生产者-多消费者问题

image-20230928214414666

image-20230928214949338

此时去掉互斥变量也可以正常运行。

原因在于:本题中的缓冲区大小为1,在任何时刻,apple、orange、plate三个同步信号量中最多只有一个是1。因此在任何时刻最多只有一个进程的P操作不会被阻塞,并顺利地进入临界区…

image-20230928215248454

image-20230928215432781

image-20230928215820368

3.16吸烟者问题image-20230928220220777

image-20230928222828539

image-20230928223018244

3.17读写者问题

image-20231004185246565

image-20231004193232974

如何解决写进程饿死的问题呢?

再加一个锁

image-20231004202001930

image-20231004202556366

3.18哲学家进餐问题

image-20231004203828444

image-20231004205454509

image-20231004205238789

image-20231004205338032

3.19管程

image-20231004205748051

image-20231004210301634

image-20231004211109932

image-20231004211429356

image-20231004211554834

image-20231004211729813

3.20死锁的概念

image-20231004212210964

image-20231004212709753

image-20231004213148030

image-20231004213527647

image-20231004213736180

3.21预防死锁

image-20231008130625757

image-20231008132232908

image-20231008132402270

image-20231008132546525

image-20231008132845387

image-20231008132949363

3.22避免死锁

image-20231008133827692

image-20231008134107127

image-20231008134416304

image-20231008134641380

image-20231008135127606

image-20231008135545013

image-20231008135808222

3.23死锁的检测与解除

image-20231008135911237

image-20231008140106503

image-20231008140645813

image-20231008140839699

image-20231008141243814

image-20231008141355503

第四章 内存管理

这里只有笔记的某一页,全部的需要去看pdf

image-20240708163711721

image-20240708163738113

image-20240708210819377

image-20240708210942822

动态分区算法

image-20240709205631071

分页存储管理

image-20240709211433168

image-20240709211828817

image-20240709212047057

image-20240709213756432

image-20240711192731903

image-20240711192941842

image-20240711202304691

基本分段存储管理

image-20240711204953052

image-20240711205128834

image-20240711205312059

段页式存储管理

image-20240711210045699

文件管理

image-20240714111925171

image-20240714121100371

image-20240714124001523

image-20240714135723293

image-20240714135902385

image-20240714143523850

image-20240715200845433

image-20240715201018834

IO管理

io控制方式

image-20240716203121459

image-20240716205944687

image-20240716221121464

image-20240716221407863

image-20240717210901824

image-20240717211100297

image-20240717211818447

image-20240718155456376

image-20240718160825832

image-20240718162128319

image-20240718162831729

image-20240718180106081