什么是操作系统
操作系统是提供计算机用不与计算机硬件之间的使用接口,并能够管理计算机软件和硬件资源的一个复杂的系统软件,为用户的应用程序提供直接可用的运行环境,是应用程序的开发变得简单、高效。
试想一下如果没有操作系统,你将怎样写代码?
例如你要写一个实现printf("hello world")
的功能,你要怎么实现呢?
无操作系统的环境下,你只能使用汇编语言直接操作硬件接口
xor ah,ah;//对ah、dl清零
xor dl,dl;//软驱复位
int13h;//BIOS功能调用int 13h中断
... //此处省略n行代码
mov cl,ah;//其实扇区号送cl寄存器
mov dh,al;
可以看出一个简单的功能,要实现一大段的代码,并且没有的计算机资源做统一的管理,极大的降低程序运行的效率和开发效率。
操作系统的发展历史
无操作系统时代
第一代计算机(1945~1955年)使用电子管作为主要电子器件,用插件版的链接先或穿孔片表示程序,没有用来存储程序的内存,无操作系统的。
我们熟知的那个庞然大物——人类第一台计算机"艾尼阿克"(ENIAC)就是这样的计算机,最初只能完成5000每秒的计算,耗电量在150千万每小时。程序的编程只能通过改变电路的链接方式来表示不同的算法,程序的运行与退出都需要人工的干预,这就是我们人类最初的计算机
单道批量处理计算机
从第一代计算机开始大概经过了10年的发展,开始使用磁性存储设备,程序员在磁带上录入多批次的作业,交给计算机操作人员,放入计算机中批量载入计算机,计算机会一个一个计算并将结果输出到另外一个磁性设备。这一时期的操作系统就是单到批处理系统,内存红能主流移到用户作业,cup和内存资源被用户作业独占。程序是指令的集合,程序执行是cpu的依次、逐条执行指令的过程。相比于上一代计算机,减少了等待人工操作的时间,但是作业进行I/O时,CPU只能等待I/O完成而无事可做,cpu资源得不到充分利用
多道批处理系统的特点
为了解决上一代计算机的问题,有发展到了多道批处理系统。
与单道批处理系统相比,躲到批处理系统支持多道程序驻留内存,cpu不在因为某个进程等待I/O而空闲,而是可以去执行其他进程。
分时操作系统
分时操作系统运行多个用户通过终端同时使用计算机。分时操作系统需要解决的两个关键问题是及时接收和及时处理。分时操作系统为例保证每个用户终端的相应时间,使所有的用户任务直接进入内存,并在很短的时间内快速切换让每个任务都运行一遍,达到多个用户任务并行处理的目的。
实时操作系统
实时操作系统主要用户实时控制和实时信息处理领域。与分时系统相比,它具有多路性、独立性、及时性、交互性、可靠性几个特点。
实时系统比分时系统要求有更高的可靠性,必须能够在任务能够容忍的时间范围内处理完,否则可能带来巨大的经济损失设置生命安全。批处理系统、分时系统和实时系统是三种基本的草鞋系统类型,实时操作系统可能兼有三者货主其中两者的功能特征.
#操作系统的五大功能
内存管理
内存管理主要是为多道程序运行提供良好的环境,方便用户使用内存,提高内存的利用率,已经从逻辑上扩充内存以实现虚拟存储。包括内存分配、内存保护、地址映射、内存扩充功能。
内存分配
内存分配可分为静态分配和动态分配,静态是指按程序所需分配固定大小后不再变化,动态分配是指在系统运行中,根据进程的骑牛分配内存大小,是可以在运行时变化的。
为了实现内存分配,需要实现以下几个功能:
- 适用于内存分配的数据结构,包含内存的使用情况,内存的空闲区大小,空闲区的起始地址,未内存分配实现提供依据。
- 内存分配功能。系统安装一定的内存分配算法分配内存空间。
- 内存回收。系统需要回收被释放的内存空间。
内存保护
内存保护的任务:一是是操作系统内核的空间不会被用户随意访问,以保证系统的稳定安全。二是是没道用户程序都在自己的内存空间中运行,相对独立互不干扰。
地址映射
cpu执行程序的过程中,需要把程序的逻辑地址转变成物理地址,这个转换过程称为地址映射。
逻辑地址:是指一个程序编译后,通常会形成若干个目标程序,这些程序再经过链接而形成可装载的程序。这些程序中的指令和数据的地址都是相对于编译链接后的机器代码程序的起始地址计算的。称之为逻辑地址。
内存扩充
为了满足程序的更大内存需求,就要为其从逻辑上扩充更大的内存,需要实现以下功能:
- 请求调入功能。运行系统在装入一部分用户程序是就启动该程序的运行,若在程序运行过程中发现要执行的指令货主要访问的数据没有载入内存,通过请求调入装入内存。
- 置换功能。在请求调入是,若发现内存空间不足,需要系统将内存中一部分内存换到外存中,以便腾出内存空间载入当前需要的内容。
进程管理
进程管理主要包括:经常的组织和描述、进程的控制、进程的同步、进程同学及进程调度。例如进程的创建、销毁、唤醒、阻塞等操作。
设备管理
设备管理主要完成用户的I/O请求,未用户分配I/O设备。为了完成这些任务,设备管理需要具备以下功能:
- 缓冲管理。
- 设备分配。分配用户I/O所需的设备。
- 设备处理。由设备驱动程序来实现cpu与设备控制之间的通讯。
- 设备独立性和虚拟设备。设备独立性功能是应用程序独立于物理设备。例如,用高级程序设计语言打印图形程序。
文件管理
文件存储空间的管理、文件目录的管理、文件读写
提供用户接口
为了方便用户使用操作系统,操作系统向用户提供命令行和图形用户接口,向程序员提供应用程序与操作系统之间的接口。
操作系统的体系结构
操作系统的体系结构是一个复杂软件系统的高层结构,未软件系统提供了一个结构、行为和属性的高级抽象,包括系统元素的结构、元素拣的相互关系,以及指导元素集成的模式和约束。
简单的监控程序模型
最初的计算机并不存在操作系统这个概念,所有的任务都是直接运行与硬件上,程序员直接操作硬件系统。随着控制语言的出现,产生了简单的监控程序,能够保证任意时刻系统只能运行一个任务,保证对系统信息的互斥访问。
单体结构模型
在单体结构模型中,多有的软件和数据结构防止在一个逻辑模块中,对外出的用户程序提供一个完成的内核界面——系统调用。整个系统有若干个功能独立的子程序组成,运行任意一子程序调用其他子程序,因此它的特点是结构简单,便于理解和实现,而且系统所有的部分都集中在一个内核中,效期较高,缺点也很明显,各个子程序之间可以相互调用,系统结构关系复杂,容易引起循环调用和死锁。
层次结构模型
层次结构的基本思想是讲操作系统分解为多个晓得容易理解的层,系统功能被隔离在不同的层中,每一层提供对系统功能的部分抽象。在操作系统的层次结构中,各个模块都有相对固定的位置、相对固定的层次。层与层之间有间隔的接口定义,每一次值依赖于它下层提供的服务而工作,不能夸层随意访问。不过出于效率的考虑,有些系统运行夸层乡下调用。
客户/服务器模型与微内核结构
它的核心思想是功能外迁,即吧传统操作系统内核中的一些组成部分(如文件系统、网络、驱动程序等内核功能)放到内核之外作为一个独立的服务进程来实现,在微内核中只保留了操作系统最基本的功能,包括处理器调度、存储管理和消息通道等。
动态可扩展结构模型
采用UPCALL和DOWNLOAD技术。它试图将所有的传统操作系统内核中提供的抽象转移到用户控件,以操作系统库的形式提供服务,内核层只负责对物理设备的控制。应用程序可以从用户层库中得到并控件内核抽象,从而实现了操作系统的动态扩展。
指令的执行
取指令和执行指令
- 取指令,在每个指令周期开会时,处理器从存储器中读取一条指令,在典型的固定长度指令处理器中,程序计数器(PC)保存有下一次要取的指令地址,每次取指令后都对PC作递增,使它能够按顺序读取吓一条指令,即位于下一个高端存储器地址的指令。
- 执行指令,取到指令被防止在处理器的指令寄存器IR中。指令中包含确定处理器将要采取动作的位,处理器解释指令并执行要求的动作,这些动作可分为4类:
2.1 处理器与存储器之间的指令或数据传送操作。
2.2 处理器与I/O设备质检的指令或数据传送操作
2.3 算数运算操作或逻辑运算操作
2.4 控制操作,即修改指令的执行顺序的操作。
小结
程序执行过程是反复取指令和执行指令的过程。PC使用存有下一条指令的地址。指令的执行结果就是使寄存器或内存单元的值发生变化,指令执行的过程也就是存储体内容不断变化的过程。取指令和执行指令是有硬件完成的,不同硬件的体系结构支持不同的指令集合,为某一种硬件平台开发的操作系统不能直接在另外一中体系结构的硬件上运行。