1、什么是OS
绝大多数OS具有共性,包括CPU管理、内存管理、文件管理和设备管理等内容。OS的核心目标是运行程序。
内核是运行在计算机上的程序,内核不运行则计算机无法运行。
操作系统建立在计算机硬件上。
中断是指当出现需要时,CPU暂时停止当前进程的执行,转而执行处理新情况的中断处理程序。当执行完该中断处理程序后,则重新从刚才停下的位置继续当前进程的运行。为了区分不同的中断,每个设备有自己的中断号。系统又0-255一共256个中断。系统有一张中断向量表,用于存放256个中断的中断服务程序入口地址。每个入口地址对应一段代码,及中断服务程序中断需要cpu的支持,一般至少有一个引脚用于接收中断。
系统是如何启动的
通电->运行引导程序->引导区装入内存->引导操作系统启动。
2、多道程序设计和分时
简单批处理系统 多道程序系统 分时系统
单道程序设计 多道程序设计 分时技术
-
简单批处理系统
他是最早的OS,批处理指的是一批无需人机交互的作业批量运行。简单批处理的核心是一个常驻监控程序(Monitor),它能控制作业传输、调度作业运行、自动从一个运行完的作业转换到下一个。其采用的是单道程序设计。没有实现cpu和io的并行。
作业的运行对应cpu的计算和io操作交替进行,每一段cpu运行时间称为cpu脉冲,每一段io运行时间称为io脉冲。
-
多道程序系统
目的是让cpu和设备在所有时间内尽可能忙碌,从而提高cpu和设备的利用率,充分发挥计算机系统部件的并行性。比如在单作业的基础上引入作业调度机制,即作业1在等待io的同时,切换到作业2,等作业1的IO完成时再触发一个中断,让cpu将时间片分配给作业1。多道程序设计是现代os的基础。
一般由不同控制器控制的设备可以并行操作,由相同控制器控制的设备不可以并行操作。
并行 并发
并行指两个或多个作业在同一时刻运行。(并行需要在多cpu/多核上才能体现)
并发(concurrent)值两个或多个作业在同一时间间隔内依次运行。(所以实质是串行,宏观上来看是并行。)批处理系统不存在交互,所以长时间的等待无所谓。
随着主机系统的出现,出现了交互(比如屏幕回显),用户希望运行作业的响应时间最好小于1S.为了满足这个,出现了分时技术,它被广泛应用到分时系统中。
-
分时系统
它是多道程序设计的延申,一般采用时间片轮转的方式使用一台计算机为多个用户服务。在单位时间内,每个用户获得一个时间片并运行。保证用户获得足够小的响应时间,并提高交互能力。
时间片:把一段cpu时间按照固定单位进行分割,每个分割得到的时间段称为一个时间片。
分时的策略:在一段时间内,每个作业依次轮流运行一个时间片,这样可以使得每个作业都获得较短的响应时间,从而满足交互作业的需求。遵循分时策略的联机多用户交互式的OS就是分时OS。
3、OS的类型
- 大型机系统(hp-unix)
- 手持系统(ios/andoiod)
- 桌面系统(windows/linux/Mac os)
- 嵌入式系统 (linux的精简版)
- 分布式系统(c/s-每个c都可以向s请求服务 p2p-每个节点既是服务器又是客户机(目前仅用于文件共享))
- 多处理器系统
- 对称多处理(SMP),每个处理器运行OS的相同副本,许多进程可以立即运行不会降低性能,多数现代OS支持SMP。
- 非对称多处理器(ASMP),每个处理器不对等,分主从处理器,特定功能处理器,很多多核手机采用(骁龙820)这种架构。
- 虚拟系统
- 集群系统(连接一群计算机,用于大型计算。)
4、OS必须的操作和主要功能
三个重要的操作
双模式 IO和内存保护 定时器
核心功能
进程管理 内存管理 文件管理 IO设备管理
-
双模式
程序中的问题:比如软件错误或特定请求产生的异常或死循环。这些问题如果不加以处理就会导致系统异常甚至崩溃。
所以必须保证OS和其他程序不受任何故障程序的影响。
常用的解决办法就是双模式,即用户模式和内核模式。引入双模式后,内核模式只能运行操作系统的程序;所有的用户应用程序只能在用户模式下运行。双模式需要cpu的支持,如果cpu有模式位,则可以在OS中实现双模式。目前主流的cpu都有双模式位。
双模式可以进行保护操作。允许OS保护其他和自身的系统部件(比如引入特权指令,即让可能引起程序崩溃的指令只能在内核模式下运行)。那用户模式下需要用特权指令怎么办?用系统调用,通俗来讲就是用户在进程执行过程中,需要特权指令执行,就让os中断当前进程,进行系统调用,os切换到kernel模式,kernel模式执行完相关的指令后,将结果返回,随后os切换到用户模式下继续从中断点运行。
IO操作保护和内存保护
1、为防止用户程序执行非法IO,定义所有的IO指令都是特权指令。用户程序只能通过系统调用进行IO操作。所以利用 双模式 以及 设置所有IO指令为特权指令 就可以实现IO操作保护。
-
2、为了防止内存非法访问,在多道程序设计的系统下,必须保证各个作业对内存的访问是独立的。一个流行的解决方法是存储保护机制(需要硬件的支持)。
- 一个存储保护的例子,在cpu中有两个和存储保护相关的寄存器,基址寄存器和限长寄存器。如一个进程位于内存的地址是11-28,那么base register的地址就11,limited register的地址是17。cpu在执行该进程中某条指令时,传入一个logical address(一般从0开始),logical address >= limited register就会报内存异常。如果小于,则访问logical address + base register's values对应的实际physical address。
-
定时器
- OS需要能随时获得对cpu的控制权,从而管理系统。一个解决办法就是引入定时器。 系统在将对CPU的控制权交给用户之前设置了定时器。一段时间后会发生中断,CPU控制权又返回给了操作系统。
- 定时器分为固定时间和可变时间定时器,一般利用时钟和计数器实现。
-
进程管理
- 解决如何运行的问题
- OS的核心目标是运行程序,也就是管理CPU。所以引入了进程的概念。一个运行中的程序称为进程。CPU(进程)管理的内容包括1)创建和删除用户和系统进程;2)暂停和恢复进程;3)提供进程同步机制;4)提供进程通信机制;5)提供死锁处理机制。
-
内存管理(8章)
内存管理解决在哪里存的问题。
-
另外程序运行还需要内存,cpu只能直接访问寄存器、高速缓存和内存这三类存储设备。一个进程处理前和处理后的数据,执行的指令都在内存。内存管理的主要工作有:
- 内存分配、内存回收、地址转换、共享和保护。
- 目的是提高内存利用率和访问速度。
CPU和内存解决的是程序运行的问题。
-
文件管理(10-12章)
- 文件管理解决的是信息在计算机中的存储问题。(怎么存)
- 内容包括:文件系统、文件逻辑结构、文件物理结构、目录、文件检索方法、文件操作、空闲空间管理、存储设备管理等。
-
IO设备管理(13章)
- 管理I/O设备,解决信息的输入和输出问题。(怎么进出)
- 核心技术是设备的无关性(独立性),即操作系统把所有的物理设备按照物理特性分门别类的抽象成逻辑设备。应用程序不是针对物理设备编程,而是针对逻辑设备编程。基于此,所有的物理设备在于OS交互时,需要相应的驱动程序。
- 主要工作是 1)设备管理 2)设备驱动