一、操作系统概述
1、计算机系统由软件和硬件两部分组成
- 硬件:有形的物理设备,如CPU、GPU、存储器等;
- 软件:完成一定任务的程序及数据,包括系统软件和应用软件。系统软件包括操作系统、编译程序、编辑程序、数据库管理系统等;应用软件是为各种应用目的而编制的程序。
- 计算机系统自上而下大致分为4部分:硬件、操作系统、应用程序和用户。
- 计算机系统自上而下大致分为4部分:硬件、操作系统、应用程序和用户。
2、操作系统的功能:
- 处理机管理:用于分配和控制处理器;
- 存储器管理:负责内存的分配和回收;
- 文件管理:负责文件的存取、共享和保护;
- I/O设备管理:负责I/O设备的分配和操纵。
3、操作系统的基本特征
- 并发(基本特征):指两个或多个事件在同一时间间隔内发生,宏观上看是同时发生,微观是交替发生。操作系统的并发性指计算机系统中同时存在多个运行的程序。
- 并行:两个或多个事件在同一时刻同时发生;
- 共享(基本特征):资源共享是指系统中的资源可供内存中多个并发执行的进程同时使用。共享方式分为互斥共享方式和同时共享方式。
- 互斥共享方式:当资源被一个进程A占用时,其他想要使用该资源的进程B就只能等待,只有进程A使用完该资源后,进程B才能使用该资源,这种共享方式就叫做互斥式共享。同时,把这种资源叫做临界资源或独占资源,比如打印机就属于临界资源。
- 同时共享方式:某一资源在一段时间内可由多个进程“同时”访问,这种同时是宏观上的,在微观上,这些进程可能是交替对该资源进行访问,磁盘设备就是这类资源。
- 虚拟:把一个物理上的实体变为若干个逻辑上的对应物,物理实体是实际存在的,而逻辑上对应物是用户感受到的。虚拟分为时分复用技术和空分复用技术。
- 时分复用技术:微观上处理机在各个微小的时间段内交替为各个进程服务。如一个单核CPU可以执行多个程序,给用户一种多核的假象。
- 空分复用技术:多个程序或用户同时使用一个资源的不同部分。如电脑硬盘分为C、D、E盘,实际上只是虚拟逻辑上的分区,实际电脑硬盘还是只有一个。
- 异步: 在多道程序环境下,允许多个进程并发执行,但是由于资源有限,进程的执行不是一贯到底,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
操作系统最基本的特征是并发和共享。
4、操作系统的发展阶段和分类
- 手工操作阶段
- 单道批处理:脱机输入/输出技术(用磁带完成)
- 多道批处理:每次往内存中输入多道程序,操作系统正式诞生。
- 分时操作系统:以时间片为单位轮流为各个用户/作用服务, 多个用户通过终端同时共享一台主机。分时操作系统典型的例子就是Unix和Linux操作系统。
- 实时操作系统:能够有限响应一些紧急任务,在严格的时限内处理完事件。如导弹控制系统、自动驾驶系统、12306火车票订票系统。
5、其他概念
- 特权命令:比如清内存、置时钟、分配系统资源、修改虚存的段表和页表、修改用户的访问权限等。
- 系统调用:操作系统给应用程序提供的接口,操作系统有两种接口:命令输入和系统调用。命令输入分为命令行和图形用户界面。
- 中断:中断分为内中断和外中断。
- 原语:由若干条指令组成,来完成一定功能的过程,执行必须过程连续,不允许被中断。
- 处理机状态:内核态和用户态
- 内核态:又称管态,运行在状态下的代码,可以无限制地对系统存储、外部设备进程访问;
- 用户态:指非特权的执行状态,内核禁止在此状态下的代码执行潜在危险的操作,如写入系统配置文件、杀掉其他用户的进程、重启系统等。
内核态处于权限0,用户态出处于权限3。
- 用户态切换到内核态的方式
- 系统调用:进程调用、文件系统访问、设备调用、通信等;
- 中断
- 异常
凡是与资源相关的操作(如存储分配、I/O传输及管理文件等)都必须通过系统调用方式向操作系统提出服务请求。
二、进程管理
2.1 进程管理包括
- 进程调度:在多个等待使用处理器的进程中,按照一定策略选择合适的进程,使之拥有处理器的使用权而进入运行;
- 进程同步:对系统中的多个进程在对共享资源的使用出现竞争时进行控制和协调;
- 进程控制:进程的创建和撤销以及进程状态的切换;
- 进程安全:解决因多个进程争夺资源的使用权而进入“死锁”的僵局,使系统安全运行。
2.2 进程与线程
- 进程:进程是系统分配资源的基本单位。每个进程在内核中都有一个进程控制块(PCB)来维护进程的基本信息和运行状态。线程是调度的基本单位。
- 进程是由进程控制块PCB、程序段、数据段组成。
- 所谓创建进程,实际上是创建进程实体中的PCB;而撤销进程,实质上是撤销进程的PCB。
- 线程是CPU执行的基本单元,也是程序执行流的最小单元,由线程ID、程序计数器、寄存器集合和堆栈组成。线程是进程中的一个实体,是被系统独立调度和分配的基本单元。
进程和线程的根本区别:进程是资源分配的基本单位,线程是执行和调度的基本单位。
- 进程间高级通信方式主要有三类:共享存储、 消息传递、管道通信。
2.3 处理机调度
由于资源有限,这些任务无法同时处理,这时需要某种规则来决定处理这些任务的顺序。从就绪队列中按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程的并发执行。
1、 调度的三个层次
- 高级调度:又称作业调度,从后备队列中选择合适的作业将其调入内存,并为其创建进程。内存和辅存之间的调度,创建态到就绪态
- 中级调度:又称内存调度,从挂起队列中选择合适的进程将其数据调回内存。挂起态到就绪态
- 低级调度(最基本的调度):又称进程调度,从就绪队列中选择一个进程为其分配处理机。进程调度是操作系统种最基本的一个调度,可分为抢占式和非抢占式两种。就绪态到运行态
2、 进程调度的方式
- 非抢占式:只允许进程主动放弃处理机,在运行过程中即便有更紧急的任务到达,当前进程依然继续使用处理机,直到该进程终止或主动要求进入阻塞态。
- 抢占式:当一个进程正在处理机上运行,如果有一个更紧急或更重要的进行需要使用处理机,就立即暂停正执行的进程,把处理机分配给优先级更高的进程。
3、调度的基本准则
不同的操作系统,其处理机调度依据的准则不同,采用的调度算法也不同。一个好的调度算法,应该使系统的性能更好。常见的考虑因素有:资源利用率、吞吐量、周转时间、等待时间和响应时间。
- 资源利用率:CPU是计算机系统种最重要和昂贵的资源之一,所以应尽可能使CPU保持“忙”状态。
- 吞吐量:单位时间内CPU完成作业的数量。
- 周转时间:从作业提交到作业完成所经历的时间。包括作业等待、在就绪队列中排队、在处理机上运行以及进程输入/输出操作所花费时间的总和。
- 等待时间:进程处于等处理机状态时间之和,等待时间越长,用户满意度越差。
- 响应时间:指从用户提交请求到系统首次产生响应所用的时间。
4、调度算法
- 先来先服务(First Come First Service, FCFS)调度算法
先来先服务调度算法是系统维护一个FIFO队列,它按照作业或进程到达队列的先后次序顺序调度运行。FCFS调度算法属于非抢占式算法。适合长作业,或者说CPU繁忙型作业。 - 短作业优先(Short Job First, SJF)调度算法
短作业优先算法要求每个作业的进程提供所需的运行时间,每次调度时总是选取运行时间最短的进程运行。这种算法的平均等待和周转时间最佳,也容易实现,但容易出现饥饿现象。 - 时间片轮转调度算法
按照各个进程到达就绪队列的顺序,轮流让各个进程执行一个时间片,若进程在一个时间片内没有执行完,则剥夺处理机,将进程重新放入就绪队列队尾并重新排队。 - 优先级调度算法
总是将CPU分配给就绪队列中优先级最高的进程。通常确定优先级的方法有两种,即静态优先级法和动态优先级