操作系统(一)

本文深入探讨了CPU上下文切换的概念,解析了进程与线程的区别,包括它们的状态转换(运行态、阻塞态、就绪态)。同时,文章详细介绍了进程间的通信机制,如互斥和避免竞争条件的方法,以及经典的IPC问题。还涉及了进程调度算法,如时间片轮转和优先级调度,并讨论了多道程序设计中中断和通道技术的角色。此外,文章提到了死锁的产生原因及避免策略,并概述了存储管理,特别是虚拟存储管理和页面置换算法。
摘要由CSDN通过智能技术生成

0.系统调用

1.用户态(供用户程序使用,在该状态下不能执行I/O操作和其他的一些操作),内核态(供操作系统使用

一文让你明白CPU上下文切换 - 知乎 (zhihu.com)

1.进程与线程

从本质上来说,一个进程就是一个正在执行的程序,每个进程都有自己的地址空间,也就是一组内存地址,进程可以读取其中的内容。地址空间中包括可执行程序,程序数据和他的栈,与进程相关的还包括一组寄存器,等等,以及运行改程序所需要的所有其他信息。

 

 

当进程只有一个线程时,可以认为进程就等于线程。 - 当进程拥有多个线程时,这些线程会共享相同的虚拟内存和全局变量等资源。这些资源在上下文切换时是不需要修改的。 - 另外,线程也有自己的私有数据,比如栈和寄存器等,这些在上下文切换时也是需要保存的。

在一个多道程序系统中,cpu在程序间切换(多道程序设计),是每道程序运行几十或几百毫秒i,然而严格来说,在一个瞬间,CPU只能运行一道程序

真正的硬件并行:多个CPU共享一物理内存

一个进程是某种类型的一个活动,它有程序,输入,输出和状态,单个处理器cpu呗若干进程共享,它使用某种调度算法决定何时停止一个进程的工作,并转而为另一个进程提供服务

有些情况下需要在相同的地址空间中有多个控制流,并行的运行,就像他们是单独的进程一样,这些控制流叫做线程。进程用于整合资源,而线程是cpu调度的实体

进程有进程表(用于进程的实现),线程有线程表,线程和进程一样都可以1.运行态2.阻塞态3.就绪态

并发与并行:并行(多处理器)是指两个或者多个事件在同一时刻发生;而并发(单处理器假象)是指两个或多个事件在同一时间间隔发生。

2.进程的状态:1.运行态2.阻塞态3.就绪态

3.进程间通信

1.竞争条件:

  1. 两个或多个进程读写某些共享数据,而最后的结果取决于进程运行的精确时序,称为竞争条件
  2. 包含有竞争条件的程序大多数的运行结果都很好,但在极少数情况下会发生一些无法解释的事情
  3. 凡涉及到共享内存、共享文件以及共享其他资源的情况都会引发竞争条件
  4. 如何避免竞争条件:要找出某种途径防止多个进程同时访问共享数据,即需要互斥(mutual exclusion),以某种手段确保当一个进程在使用一个共享变量或文件时,其他进程不能做同样的操作
  5. 临界区:对共享内存进行访问的程序片段,使得两个进程不可能同时处于临界区,能够避免竞争条件

 2.实现互斥的方案:关闭中断 锁变量 严格交替法 Peterson解决方案 TSL指令

3.睡眠与唤醒:

忙等待:当一个进程想进入临界区时,先检查是否允许进入,若不允许,则进程将忙等待,直到许可为止

2.经典ipc问题

1.哲学家问题:

2.读者写者问题

4.进程调度:当多个进程处于就绪态,只有一个cpu时,要决定运行哪个进程

当多个进程处于就绪态而只有一个CPU时,它使用的算法称为调度算法。操作系统中作出这种决定的部分称为调度器,它使用的算法称为调度算法。

1.批处理系统中的调度:

  1. 先到先服务
  2. 最短作业优先
  3. 最短剩余时间优先
  4. 三级调度

2.交互式系统中的调度

  1. 时间片轮转调度
  2. 优先级调度
  3. 多重队列
  4. 最短进程优先
  5. 保证调度算法
  6. 彩票调度算法
  7. 公平分享调度

5.输入输出系统

操作系统的主要功能之一是控制所有输入输出(IO)首个被,必须向设备发送指令,捕获中断并进行错误处理,还要提供接口。

1.IO设备:块设备(磁盘),字符设备(鼠标,网络接口,打印机)

文件系统仅仅控制抽象的块设备,而把与设备有关的部分留给较低层软件,即设备驱动程序

2,设备控制器:

3.内存映射io

每个控制器都有一些用来与cpu通信的寄存器,许多设备还有一个操作系统可以读写的数据缓存区,cpu如何与控制寄存器和设备的数据缓冲区进行通信?

  1. 每个控制器分配一个io端口号
  2. 内存映射io

4.中断

通常控制寄存器有一个或多个状态标志位,这些标志位可以被测试以确定输出操作是否完成或者输入设备中是否有新的数据可用,cpu可以执行一个循环,一直测试标志位,知道设备准备好接受或提供数据,这种方法称为轮询检测,或者忙等待。

控制器可以使用中断通知cpu,已经写完或读完其寄存器(处理器间中断

软件中断:是一条CPU指令,用以自陷一个中断。由于软中断指令通常要运行一个切换CPU至内核态(Kernel Mode/Ring 0)的子例程,它常被用作实现系统调用(System call)。

5.多道程序设计的概念

多道程序设计是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制之下,相互穿插的运行。 两个或两个以上程序在计算机系统中同处于开始或结束之间的状态。这就称为多道程序技术运行的特征:多道、宏观上并行、微观上串行。

为什么说多道程序概念得到了中断和通道技术的支持?
采用多道程序设计减少了CPU时间的浪费,增加了系统吞吐量,提高了系统的效率。为什么引入多道程序呢?说白了就是为了提高系统的吞吐量和效率。 在多道程序系统中,能做到单处理机多程序并发,但是,当存在I/O任务时,CPU要去处理I/O任务,此时就没空来处理多道程序的执行了,所以就要想办法使I/O的处理尽可能少影响到CPU(也就是说让别的东西来处理I/O,而让CPU专心处理多程序并发),此时CPU处理多道程序可以与I/O操作并发,即通过CPU操作与外设传输在时间上的重叠减少CPU时间的浪费,并提高了系统的效率。实现CPU操作与外设传输在时间上的重叠必须有中断和通道技术支持,其原因如下:
(1) 通道是一种控制一台或多台外部设备的硬件机构,它一旦被启动就独立与CPU运行,因而做到了输入输出操作与CPU并行工作。但早期CPU与通道的联络方法是由CPU向通道发出询问指令来了解通道工作是否完成(中间过程还是需要CPU参与)。若未完成,则主机就循环询问直到通道工作结束为止。因此,这种询问方式是无法真正做到CPU与I/O设备并行工作的。
(2) 在硬件上引入了中断技术。所谓中断,就是在输入输出结束时,或硬件发生某种故障时,由相应硬件(即中断机构)向CPU发出信号(解决了上面的问题:通道工作完成时由中断向CPU发出信号,而不需要CPU不断发信号给通道去询问工作是否完成)。这时CPU立即停下手头的工作而转向处理中断请求,道处理完中断后再继续原来手头的工作。 因此,通道技术和中断技术结合起来就可实现CPU与I/O设备并行工作,即CPU启动通道传输数据后便去执行其他程序的计算工作,而通道则进行输入输出操作;当通道工作结束时,再通过中断机构向CPU发出中断请求,CPU则暂停正在执行的操作,对出现的中断进行处理,处理完后则继续原来的工作。这样,就真正做到了CPU与I/O设备并行工作。此时,多道程序的概念才变为现实。

总而言之,通道 代替了CPU管理I/O的工作,中断 会在I/O工作完成时通知CPU。
https://blog.csdn.net/weixin_43655282/article/details/107119860

6.死锁

计算机系统中有许多独占资源,他们一次只能被一个进程使用。

死锁是指多个并发( 指两个或多个事件在同一时刻发生)进程在运行过程中因竞争资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,这些进程都无法向前推进。

产生死锁的原因

  1. 系统资源不足
  2. 进程(线程)推进的顺序不当
  3. 资源分配不当

产生死锁的必要条件

  1. 互斥:一个程序只能被一个进程使用
  2. 请求与保持:一个进程因请求资源而阻塞时,对已获得资源保持不放
  3. 不可剥夺条件:进程以获得的资源,在未用完之前,不能强行掠夺
  4. 循环等待:若干进程之间形成一种头尾相接的循环等待资源关系

死锁的避免

  1. 摒弃“请求和保持”条件
  2. 摒弃“不剥夺”条件
  3. 摒弃“环路等待”条件

死锁的算法

  1. 鸵鸟
  2. 死锁的检测和恢复
  3. 死锁的预防
  4. 避免死锁 银行家

7.存储管理

1存储器层次结构 cpu内部寄存器 >高速缓存cache>主存储器 >磁盘

2.存储器的主要作用

  1. 记录存储器使用情况,那部分空闲,那部分正在使用
  2. 当进程需要存储空间,就分配给他,运行结束后,收回空间
  3. 内存太小,容不下所有进程时,就需要把内存中暂时不用不能运行的进程送到磁盘上,然后再把磁盘上的另一个进程装进内存

3.基本存储管理

  1. 单道程序存储管理:每一次只能运行一个程序x
  2. 固定分区多道程序系统:运行多个进程,内存分区,
  3. 重定位和存储保护(有址寄存器)
  4. 交换技术

4.虚拟存储管理

  1. 分页技术
  2. 页表(页面号,偏移量)
  3. TLB
  4. 反置页表

5.页面置换算法!

  1. 最优页面置换算法
  2. 最近未使用页面置换算法
  3. 先进先出页面置换算法(会发生抖动现象)
  4. 第二次计划页面置换算法
  5. 时钟页面置换算法
  6. 最久最近未使用(比较好)

 

6.页面置换算法中的设计问题

7.段式存储管理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值