大学里面学过的操作系统相关知识都已经忘的差不多了,为了巩固知识,最近重新回顾了一下操作系统的知识。今天整理下操作系统结构和进程调度相关知识。
操作系统结构
操作系统主要有以下结构:
1 | 1. 整体式结构 |
整体式结构
整体式结构是以模块为基础的结构,每个模块实现不同的功能,并且模块之间可以相互调用,通过操作系统接口为外部应用程序提供功能服务。
层次式结构
TCP/IP协议栈的设计就使用了层次结构的思想,不同层之间实现不同的协议,提供不同的功能。
设计操作系统时,也可以使用层次结构的设计思想。
上图中,最底层提供了最基础的功能,每一层服务都会依赖其下一层提供的功能。
微内核结构
这种结构中操作系统由微内核和核外服务器组成。
其中微内核只提供操作系统最基本、最核心的功能,包括与硬件的交互、客户端和服务器间的通信等。
核外服务器提供操作系统的服务功能,处理应用程序的请求,它由若干服务器和进程共同组成。
CPU的态
就是CPU的工作状态,描述了进程能够操作资源和指令的权限。
CPU的态主要有内核态和用户态两种。
处于内核态的进程能够访问所有资源和指令;处于用户态的进程对资源的访问和指令操作会受到限制,仅能访问部分资源。
当进程执行不同的功能时,会进入不同的工作状态,例如当程序需要操作内存分配资源时,用户态不能满足条件,进程就会由用户态切换至内核态,分配完成后,又会从内核态切换为用户态。
操作系统进程调度
当多个进程在CPU中运行时,CPU有一套调度算法来决定下一时刻执行哪个进程,从而保证每个进程都有可能被调度,保证进程的顺利执行。下面介绍进程调度的几种策略。
进程调度目标
首先,进程调度的目的是为了保证进程的顺利执行,同时尽可能达到以下目标:
1 | 1. 响应速度尽可能快 |
对于不同的调度策略,它们所达到的目标是不同的。
进程调度时还有两个可量化指标:
1 | 1. 周转时间/平均周转时间 |
进程调度算法
常用的进程调度算法有下面这些:
1 | 1. 先来先服务调度 |
下面介绍其中的几个调度算法。
先来先服务调度:
1 | 按照进程进入CPU的先后顺序来调度,先进入的进程优先执行。 |
短作业优先调度:
1 | 选取运行时间短的进程优先执行。 |
响应比高者优先算法:
1 | 响应比是进程的响应时间和运行时间的比值: |
循环轮转调度算法:
1 | 这个就是 Round-Robin 算法,在 Nginx 的负载均衡中也有用到。 |