操作系统学习笔记——第一章 操作系统概述

在学习操作系统时总结了笔记,并分享出来,特别是蓝色和红色字体。有问题请及时联系博主: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,转载请注明出处。

原文地址:https://www.cnblogs.com/Alliswell-WP/p/OperatingSystems_StudyNotes_1.html