作为大学必修的一门操作系统课程,现对整体框架进行总结和梳理。必须要知道计算机发展经历了四个阶段:批处理操作系统(单通道,多通道)、分时操作系统、实时操作系统、网络操作系统和分布式操作系统。
操作系统总共包括4大部分,其中处理机管理、文件管理、存储管理和设备管理。用一个图来表示其整体架构可以如下图所示。(操作系统也可是扩充机器)
上图是对各个管理模块的描述和之间的依赖关系,详细内容分布(操作系统特征、运行机制、体系结构)主要看下图:
一、操作系统特征
- 并发:宏观上一段时间内完成两个或者多个任务称为并发。并行是指在同一时刻能运行多条指令。引入进程的目的一是系统可以并发执行。
- 共享:资源共享即为共享,有两种类型:互斥共享(打印机等类似资源等待的任务)、同时共享(磁盘共享)。
- 虚拟:把一个物理存储空间映射为一个连续的较大的虚拟地址(地址空间)。包括两种:分时复用技术(CPU时间段分开)、空分复用技术(资源占有分时利用)。
- 异步:进程不是一次执行结束,而是在一个时间段内走走停停,但最后执行完任务。
在这里:并发和共享构成了操作系统的基本特征,两者相互依存又相互影响。
二、操作系统的系统作为资源的管理者,共包含四大部分。
- 处理机管理:主要是进程的管理,包括:进程调度,进程同步、进程通信、死锁、进程控制。
- 文件管理:计算机内部信息的文件存储,文件管理包括:文件存储空间管理、目录管理、文件读写和保护。
- 存储管理:内存分配、地址映射、内存保护和共享、内存扩充(虚拟表映射)。
- 设备管理:用户和计算机的I/O操作,包括:缓存管理、设备分配、虚拟设备。
三、体系结构
- 大内核:将操作系统作为一个整体放在内核当中。
- 微内核:将操作系统的功能进行详细划分,只有微内核在内核态中存在,其他的在用户态。由于存在用户态和内核态的切换所以会影响系统整体性能。
四、运行机制
中断:外中断(强迫中断,包括了人为干预、外部设备请求,时钟中断);内中断(自愿中断:指令中断,强迫中断:硬件或者软件故障)。
异常:
系统调用概念:一个进程在用户态想使用内核态的功能时,就需要进行系统陷入内核状态,其过程由操作系统完成。简要操作如下图所示。
用户态(目态):
内核态(管态):与硬件紧密相关联的模块;包含了时钟管理(计时,分时调度,程序运行时间长度);中断机制(提高多道程序运行效率);原语(接近底层的硬件驱动程序,控制硬件的交互。其中有处理机管理、存储管理、设备管理)
Linux系统调用包括:
进程控制:fork(); wait();阻塞 exit();
进程通信:pipe();管道 shmget(); mmap(); 文件地址映射
文件操作:open(); read(); write();
设备操作:ioctrl(); read(); write();
信息维护:getpid(); alarm(); sleep();
安全:chmod(); 改变文件访问权限 umask(); chown();
处理机管理中进程管理为核心部分。
进程:资源分配的基本单位,进程控制块(PCB)记录进程的基本信息和运行状态。程序会调用一个或多个进程。
线程:独立调度的基本单位,一个进程中有多个线程占有共有资源。
进程和线程的区别:
- 占有资源:进程是资源分配的基本单位,线程不拥有独立的资源,可访问在独立进程下的资源。
- 调度:线程是调度的基本单位,同一进程之间的线程是不引起进程的切换,进程切换会引起切换。
- 系统开销:进程(资源回收)之间的调度会花费比线程(寄存器信息存储)多的资源空间。
- 通信方面:进程通信需要用到:互斥和同步。线程通信需要创建全局变量。
进程的状态和切换
就绪状态ready:资源和其他条件具备,需处理机分配执行时间。
阻塞状态wait:资源不够用,或事件驱动使其等待。
运行状态running:任务处理。
就绪、运行、阻塞状态之间的切换如下图所示。
注意:只有就绪状态和运行状态之间存在回路。就绪状态通过进程调度算法获得CPU时间,转为运行态。而运行状态在CPU时间用完之后会转为就绪状态,等待下一次调度。阻塞状态是缺少资源从而由运行状态到阻塞状态转换而来,不包括CPU时间。特别是没有CPU时间会从运行状态转移到就绪状态。
进程调度算法
- 批处理系统:先来先服务(FIFO)、短作业优先、最短剩余时间按优先。
- 交互式处理系统:时间片轮转、队列优先级调度、多级反馈机制。
- 实时系统:硬实时(在规定时间内完成任务,不允许有误差,计算精度高的处理任务)、软实时(在规定时间内可以有延迟,订票)。
进程同步
- 临界资源:一次只允许一个进程使用。
- 同步和互斥:同步多个进程依次执行,互斥多个进程只有一个进程进入临界区。
- 信号量:down阻塞,P操作;up唤醒,V操作。
消费者-生产者问题、读写问题、哲学家进餐问题。手写代码(PV操作)
进程通信是手段,进程同步是目的。为了进程能够达到一定顺序执行,需要传输进程中信息。
进程通信方式
- 管道:半双工通信,用于父子进程。fd[0]读, fd[1]写。
- FIFO:有名管道,去除进程之间限制。
- 共享:设立一个全局变量。
- 消息队列:独立于读写进程之外,避免管道打开困难。阻塞。有选择的接受消息。
- 信号量:计数器,对数据共享访问。
- 套接字:独立与机器存在的信息访问方式。
死锁产生的必要条件:互斥、占有和等待、不抢占、环路等待。
死锁多种处理方法:鸵鸟策略(忽视);死锁检测和恢复(检测:有向环路检测,满足环路即死锁;每种类型多个资源检测:未被标记发生死锁。恢复:抢占,回滚,杀死进程)
死锁预防:破坏互斥、破坏占有和等待、破坏不抢占和破坏环路等待。
死锁避免:安全状态:不发生死锁而且进程要求的进程请求最大。单银行家资源算法,多银行家资源算法。
内存管理
虚拟内存的目的就是让物理内存拥有更大的虚拟内存,使得程序获得更大的执行空间。
为了更好的管理内存,操作系统将内存映射为地址空间,每个程序都有自己独立的地址空间,这些地址空间被划分为多个块,每个块称为一个页。这些页会被映射到物理内存中,但不需要连续的物理内存,也不需要所有的页都有独立的物理内存。当程序找不到对应的物理空间,硬件会分配一个对应的物理地址,重新执行指令。
分页地址映射:内存管理单元(MMU)保存着地址空间到物理空间的转换,其中页表包含了页(地址空间)和页框(物理地址)的映射。
在发生缺页中断时会调用“页面置换算法”。其包括:最佳、最近最久未使用、最近未使用、先进先出、第二次机会算法、时钟。(绝大多是采用的是链表策略)
分段式:将多个页面划分为多个长短不一的控件,动态增长。
分页式:将地址空间划分为多个固定长度的区域,便于地址映射。
分页和分段的区别:
- 透明性:分页透明,分段需要显示划分。
- 空间地址维度:分页是一维的,分段式二维的。
- 大小是否可以改变:分页不可以,分段可以。
- 出现原因:分页式是地址空间的增大,分段式程序和数据可以被共享使用。
设备管理
磁盘包含了:扇面、磁道、扇区、刺头、制动手臂、主轴。
磁盘调度算法影响条件:旋转时间、寻道时间、数据传输时间。
策略:先来先服务、电梯算法、最短寻道时间。
链接:
编译系统将源程序编译为可执行程序过程如下图所示。
包含了预处理、编译、汇编、链接。
静态链接:封装好的。
一组可重定向的文件组合成为目标文件。
- 可执行文件:在内存中运行。
- 可重定向文件:与其他文件功能生成目标文件。
- 共享文件:运行时动态加载。
动态链接:运行时调用。更新时不需要重新链接,代码复用。
以上就是对操作系统的总体功能总结,有问题可以和我联系kindy_wjc@163.com 。
你的支持,是我最大的动力。