在学习操作系统时总结了笔记,并分享出来,特别是蓝色和红色字体。有问题请及时联系博主:Alliswell_WP,转载请注明出处。
参考书:《操作系统》谌卫军等,清华大学出版社,2012年5月
参考视频:清航全套计算机专业课视频
目录
1.计算机概述
2.操作系统的概念
3.操作系统的发展历史
4.操作系统的类型
5.操作系统需要的硬件特性
第一章 操作系统概述(计算机体系结构图、单道批处理、特权指令、程序状态字PSW、栈干嘛用)
1.计算机概述
思考两个问题:1)在一个计算机系统中,包括哪一些硬件设备?
2)如何把这些硬件设备搭建成一个系统,什么结构?
计算机指令:指令是计算机运行的最小的功能单位,是指挥计算机硬件运行的命令。
如:算术运算指令、逻辑运算指令、移位操作指令、数据传送指令、输入输出指令、转移指令等。
指令组成:操作码+操作数1+操作数2……
如:模仿 小鸡
加 1 3
2.操作系统的概念
为什么计算机种要引入操作系统?
如果程序员直接对硬件编程……
需要了解:键盘的工作原理?如何把键盘缓冲区中的数据拷贝到内存?显示器的工作原理?如何在屏幕的某个特定位置显示某字符?
怎么办?
在硬件和应用软件之间,引入一层软件,其功能为:
1)管理系统的各个部件,使之能正常运转;2)在上层的应用软件提供一个易于理解和编程的接口;
这层软件就是操作系统。
你眼中的OS是什么?
不同人眼中的OS是不同的,
OS设计者:如何管理CPU、内存、I/O设备等系统部件,使之能正常运转;
应用程序开发人员:API应用程序编程接口
3.操作系统的发展历史
Phase 1:1946-50年代 硬件非常昂贵,没有操作系统;
编程语言:机器语言;
输入输出:纸带或卡片;
用户在控制台前调试程序,独占全机。用户既是程序员,又是操作员,手工操作;
一次完成一个功能(计算,I/O,用户思考/反应),之间没有重叠。
问题:手工操作的低效率造成CPU资源的浪费。
Phase 2:50年代末-60年代中,批处理管理程序
(硬件昂贵,人力便宜,为了提高计算机的使用效率,减少手工操作!)
程序员把作业(卡片或磁带)提交给负责调度的程序员(系统管理员);
操作员把作业“成批”地输入到计算机;
常驻内存的批处理管理程序自动地识别、装入一个作业,并运行之,软后再取下一个作业。
串行地执行作业,因而称为“单道批处理”。
问题:1)程序的调试比较困难;
2)由于慢速的输入输出处理仍然直接由主机来完成,使得CPU和I/O设备使用忙闲不均:对计算为主的作业,外设空闲;对I/O为主的作业,CPU空闲。
60年代初,发展了通道计数和中断技术,这些技术的出现使得I/O访问与CPU计算可以重叠进行。
通道:用于控制I/O设备与内存间的数据传输,有专用的I/O处理器,启动后可独立于CPU运行,实现CPU与I/O的并行工作。
中断:值CPU在收到外部中断信号后,停止原来工作,转去处理该中断事件,在完成后回到原来断点继续工作。
60年代中-70年代中,多道批处理系统
(现代意义上的操作系统的出现)
多道:内存中同时存放多个作业,由CPU以切换方式为之服务。在当前运行的作业需作I/O处理时,CPU转而执行另一个作业;
宏观上并行运行:都处于运行状态,但都未运行完;
微观上串行运行:各作业交替使用CPU和I/O设备
如何构造一个多道批处理系统?
需要解决的问题:1)内存管理,系统必须给多个作业分配内存;
2)内存保护,避免一个程序中的bug造成整个系统崩溃,或者是破坏了其他程序的执行;
3)CPU调度,系统必须在多个作业中不断地进行切换,选择其中的一个去使用CPU;
4)系统必须去管理各个并行运行的作业之间的交互关系。
Phase 3:70年代中-至今,分时系统(多个用户通过各自的终端分享地使用同一台计算机。)
(硬件较以前便宜,人力昂贵)
交互式分时:
-计算机比较贵,只有一台;
-终端比较便宜,人手一台;
-所有用户可与系统立即交互,调试比较方便;
一些分时操作系统
CTSS:由MIT开发;最早的分时系统之一;在调度方面进行了一些开拓性的工作;
MULTICS(MULTiplexed Information and Computing Service):“公用计算服务系统”
UNIX(UNiplexed Information and Computing Service):
Phase 4:
(硬件很便宜,人力依然昂贵)
计算机非常便宜,可以人手一台,Apple II、IBM PC等;
1974年Intel推出8080芯片,请Gary Kidall设计了CP/M操作系统——第一个个人计算机操作系统。Gary由此成立Digital Research公司;
1980年,微软——收购了DOS操作系统,创建了MS-DOS;
Phase 5:今天的操作系统
规模庞大:Windows NT是2千万行代码,Windows 2000约4千万行;
极为复杂;
互联时代;
4.操作系统的类型
批处理操作系统(多道批处理)
分时操作系统
实时操作系统
嵌入式操作系统
个人计算机操作系统
分布式操作系统
5.操作系统需要的硬件特性
OS需要的硬件特性:受保护的指令(特权指令);系统调用;内存保护;中断机制;I/O系统;时钟操作
受保护的指令(特权指令)
有些指令只有操作系统才有权使用,例如:
1)访问某些硬件资源的指令,这些硬件资源禁止用户程序直接访问;
2)对I/O设备的直接访问指令,如磁盘、打印机等;
3)对内存管理状态进行操作的指令(页表指针、刷新TLB等);
4)某些特殊的状态位的设置指令;
5)停机指令。
如何从硬件上实现OS的这个要求?
根据运行程序对资源和机器指令的使用权限,把处理器设置为不同状态。多数系统将处理器工作状态划分为管态和目态。
管态:操作系统的管理程序运行时的状态,较高的特权级别,又称为特权态、系统态、内核态
处理器处于管态时:可以执行所有的指令(包括特权指令)、使用所有的资源,并具有改变处理器状态的能力。
目态:用户程序运行时的状态,较低的特权级别,又称为普通态(普态)、用户态
在此状态下禁止使用特权指令,不能直接使用系统资源与改变CPU状态,并且只能访问用户程序所在的存储空间。
有些系统将处理器状态划分核心状态,管理状态和用户程序状态(目标状态)三种
实例:x86系列处理器
-386、486、Pentium系列都支持4个处理器特权级别(特权环:R0、R1、R2、R3)
-从R0到R3特权能力依次降低
-R0相当于双状态系统的管态
-R3相当于目态
-R1和R2则介于两者之间,它们能够运行的指令集合具有包含关系
四个级别运行不同类别的程序:
R0-运行操作系统核心代码
R1-运行关键设备驱动程序和I/O处理例程
R2-运行其它受保护共享代码,如语言系统运行环境
R3-运行各种用户程序
现在基于x86处理器的操作系统,多数UNIX、Linux以及Windows系列大都只用了R0和R3两个特权级别。
问题一:CPU怎么来判断当前运行的程序是系统程序还是用户程序呢?
程序状态字PSW——一个专门的寄存器,用来指示处理器的状态,PSW(Program Status Word),通常包括:
1)CPU的工作状态码——指明管态还是目态,用来说明当前在CPU上执行的是操作系统还是一般用户,从而决定其是否可以使用特权指令或拥有其它的特殊权力;
2)条件码——反映指令执行后的结果特征;
3)中断屏蔽码——指出是否允许中断
问题二:状态之间如何转换?
管态——>目态
通过设置PSW(修改程序状态字)来实现;
目态——>管态
用户程序无法直接修改程序状态字;
那么用户程序如何才能去做一些带有“特权” 的事情(如I/O)呢?
解决之道是——(系统调用)
系统调用
用户程序通过特殊的防管指令,来请求操作系统为其提供某种功能的服务。系统调用指令的实现过程一般是:
-当CPU执行防管指令时,即引起防管中断;
-处理器保存中断点的程序执行上下文环境(PSW,PC和其他的一些寄存器),CPU切换到管态。
-中断处理程序开始工作,调用相应的系统服务;
-中断处理结束后,恢复被中断程序的上下文环境,CPU恢复为目态,回到中断点继续执行。
内存保护(先不讲)
中断机制(同步中断和异步中断)
I/O系统(先不讲)
时钟操作(先不讲)
在学习操作系统时总结了笔记,并分享出来,特别是蓝色和红色字体。有问题请及时联系博主:Alliswell_WP,转载请注明出处。