一、页面置换算法

进程运行时,若其访问的页面不在内存而需将其调入,但内存已无空闲空间时,就需要从内存中调出一页程序或数据,送入磁盘的对换区

1、最佳置换算法(OPT)

该算法选择淘汰的页面是以后不会使用的,或者是最长时间内不再被访问的页面,以此来保证最低的缺页率

由于无法预知,所以该算法无法实现

2、先进先出(FIFO)

优先淘汰最早进入内存的页面

将掉入内存的页面按照先后次序排成一个队列,设置一个指针指向总指向最早的界面

有些页面会经常被访问,所以不适用

3、最近最久未使用(LRU)

选择最近最长时间未访问过的页面予以淘汰,它认为过去一段时间内未访问过的页面,在最近的将来可能也不会被访问

为每个页面设置一个访问字段记录自从上次访问以来所经历的时间,淘汰页面时选择访问字段值最大的一个淘汰

性能比较好,但是需要寄存器和栈的支持,实现起来开销比较大

4、时钟(CLOCK)

简单的CLOCK算法是给每一帧关联一个附加位,称为使用位

当某一页首次装入主存时,该帧的使用位设置为1;当该页随后再被访问到时,它的使用位也被置为1

每当需要淘汰页面时就寻找使用位为0的页面,并将经过的页面置为0

二、进程、线程、协程

https://www.cnblogs.com/fanguangdexiaoyuer/p/10834737.html

1、三者的概念

(1)进程

进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体

进程一般有三部分组成:程序、数据集合和进程控制块

  • 程序描述了进程所要完成的功能,是程序执行的指令集
  • 数据集合是程序在执行时候所需的数据和工作区
  • 进程控制块(PCB)描述了进程的描述信息和控制信息,是进程的唯一标识

进程的特征

  • 动态性:进程是一次执行的过程,是有生命期的,动态产生和动态消亡的
  • 并发性:任何进程都可以和其他进程一起并发执行的
  • 独立性:进程是系统进行资源调度和分配的独立单位
  • 结构性:进程由程序、数据和PCB组成

(2)线程

线程是能够拥有资源和独立运行的最小单位,也是程序执行的最小单位

线程是程序执行过程中一个单一的顺序控制流程,是程序执行流中的最小单元

(3)协程

基于线程之上,但是比线程更加轻量级的存在,这种由程序猿自己写程序来管理的轻量级线程叫做“用户空间线程”,对内核来说不可见

是程序猿自己开辟的异步任务

2、通信方式的差异

(1)进程的通信

  • 管道(Pipe)

    匿名管道、有名管道

  • 信号(Signal)

  • 信号量(Semaphore)

    本质是一个计数器

  • 共享内存(Shared Memory)

  • 消息队列(Message Queue)

  • 套接字(Socket)

(2)线程的通信

  • 锁机制:包括互斥锁、条件变量、读写锁

    wait/notify 等待机制

    volatile 共享内存

    countDownLatch 并发工具

    cyclicBarrier 并发工具

  • 信号量机制(Semaphore)

  • 信号机制(Signal)

3、死锁问题

(1)什么是死锁?

死锁是指两个或以上进程在执行过程中,由于资源竞争造成的一种阻塞现象,若无外力作用,将一直阻塞下去。我们称这种现象为系统产生了死锁或者系统处于死锁状态

(2)产生死锁的原因有哪些?

  • 系统资源不足
  • 程序执行顺序不当
  • 资源分配不当

(3)产生死锁的必要条件

  • 互斥条件

    一个资源只能被一个进程使用

  • 请求与保持条件

    请求资源阻塞时,对已获得的资源并不释放

  • 不剥夺条件

    进程已获得的资源,除非自己释放,否则不能被剥夺

  • 循环等待条件

    进程之间形成一种头尾相接的资源等待关系

(4)如何解决死锁?

在系统设计、进程调度等方面注意不要让四个必要条件成立,确定合理的资源分配算法、防止进程处于等待状态下占用资源

4、操作系统四大特性

https://bbs.huaweicloud.com/blogs/323535

https://zhuanlan.zhihu.com/p/106120802

现代操作系统都具有并发、共享、虚拟和异步的特性,其中并发是其它三个特征的前提

共享和并发是操作系统的两个最基本的特征,虚拟以并发和共享为前提,异步是并发和共享的必然结果

(1)并发

并发是指宏观上在一段时间内能同时运行多个程序,而并行则指同一时刻能运行多个指令。并发需要硬件支持,如多流水线或者多处理器

  • 并发性是指两个或多个事件在同一时间间隔内发生;操作系统通过引入进程和线程,使得程序能够并发运行。在多道程序环境下,并发性是指在一段时间内宏观上有多个程序同时运行,但在单处理机系统中,每一时刻只能由一道程序执行,所以微观上程序是分时地交替执行的。
  • 并行性是指两个或多个事件在同一时刻发生

(2)共享

共享是指系统中的资源可以被多个并发进程共同使用

有两种共享方式:互斥共享同时共享

(3)虚拟

虚拟技术把一个物理实体转换为多个逻辑实体

主要有两种虚拟技术:时分复用技术空分复用技术

例如多进程在同一处理器上并发执行使用了时分复用技术

(4)异步

异步指进程不是一次性执行完毕,而是走走停停,以不可知的速度向前推进

产生原因:操作系统允许多个并发进程共享资源,使得每个进程的运行过程受到其他进程制约,使进程的执行不是一气呵成,而是以停停走走的方式运行

有了并发性才会有异步性