操作系统是计算机系统的核心和灵魂,是硬件的首次扩充,又是最重要的系统软件,该课程具有承上启下的重要作用。
(1)对前导课程进行总结和提高
计算系统基础、计算机组成原理、数据结构、软件工程
(2)为后继专业课程的学习打下良好基础
嵌入式系统、服务计算、分布式计算、网格计算、云计算等
【计算机系统】
(1)实现应用软件与计算机硬件的相互通信;
(2)管理计算机各种硬件资源。
(1)创建、处理、分析信息;
(2)为终端用户提供服务。
(1)各种计算机硬件设备;
(2)负责接受输入、处理数据、提供输出。
(1)计算机的最终使用者;
(2)应用软件的服务对象。
【计算机系统分层和观点】
【操作系统的定义】
【计算机系统的运行】
(1)每种设备控制器负责一种特定的设备类型;
(2)每个设备控制器有一个local缓冲寄存器;
(3)CPU在主存和缓冲寄存器之间移动数据;
(1)位于ROM或者EEPROM(电可擦可编程只读内存);
(2)初始化系统各个组件,从CPU寄存器、设备控制器到内存内容;
(3)定位外存硬盘上的操作系统内核并且加载到内存。
(1)设置和初始化数据结构与表格、建立各种控制系统内核运行的系统进程和系统后台进程;
(2)等待事件发生;
(1)硬件中断的触发:硬件随时通过系统总线发送信号到CPU;
(2)软件中断的触发:程序中发出系统调用;
【中断机制的功能】
(1)在系统堆栈上;
【存储定义与符号】
(1)bit(比特、位)存储的基本单位,所有其他计算机存储都是由位组合而成。位数足够,计算机能够表示各种信息:数字、字母、图像、视频、音频、文档和程序。
(2)Byte(字节)8位、大多数计算机的常用的最小存储。
(3)Word(字)给定计算机架构的常用存储单位,每个字由多个字节组成。计算机的许多操作通常以字为单位。
如:一个具有64位寄存器和64位内存寻址的计算机通常采用64位的字(8字节)
210 bytes = 1KB = 103字节
220 bytes = 1MB = 106字节
230 bytes = 1GB
240 bytes = 1TB
250 bytes = 1PB
【存储结构】
计算机系统结构的一部分,由硬件实现,对操作系统不可见(透明)
(1)CPU能直接访问
(2)易失性
(1)主存的扩充、容量大且不易失
(2)硬盘、磁盘
(3)固态硬盘:低功耗、无噪音、体积小、发热量小,读写速度远高于传统硬盘。
(1)CPU只能从内存中加载命令
(2)固态硬盘与U盘一样,依靠的是闪存芯片存储数据,所以不会出现噪音。机械硬盘用久了经常能听到响声,特别是笔记本。
(3)固态与机械硬盘相比体积小了很多,重量特别轻,比如在一些迷你主机或者轻薄本上
(4)达到机械硬盘读写速度的十几倍甚至更高
(5)功耗远远小于机械硬盘,所以发热量更低,至于省电确实能省但是并不多,不过在笔记本上,发热量小就是最好的有点
(6)固态硬盘容量越大价格涨幅越大,如果是移动固态硬盘,那就更加昂贵了。
(7)寿命短于机械硬盘,但是平时无需考虑这个问题,五六年绝对可以。
(8)固态硬盘在丢失数据后更几乎无法恢复,这点确实是比较大的缺点
【存储设备的层次】
(1)容量、存取速度、价格;
(2)存取速度越快,每个“位”的价格越高;
(3)容量越大,每个“位”的价格越低;
(4)容量越大,存取速度越慢。
系统分类:单处理器系统、多处理器系统、集群系统(Clustered Systems)。
【单处理器系统】
【多处理器系统】
(1)主处理器(一个、只运行OS、管理整个系统的资源、为从处理器分配任务);
(2)从处理器(可有多个、执行应用程序或I/O处理)不同性质任务的负载不均,可靠性不够高。
(1)每个处理器都参与完成OS的所有任务,没有主从关系;
(2)任务负载分布较为均匀,性能调节容易;
(3)几乎所有现代OS支持,如Mac OSX、Linux、Windows等。
【集群系统】
(1)每个节点为单核系统或多核系统
(2)集群计算机共享存储
集群中的一个或多个系统出错,仍可继续提供服务。
(1)两个或多个主机都运行应用程序、并互相监视
(2)充分使用现有硬件、当多个应用程序可供执行时,更有效
一台处于热备份模式,另一台运行应用程序。
(1)高性能计算(High-Performance Computing):并行计算(parallelization),将一个程序分成多个部分,并行运行在各个核上
(2)分布锁管理器(Distributed Lock Manager):多个主机访问共享存储的同一数据。
【OS执行的内容】
(1)软件出错(如除数为0、无效的存储访问)、进程试图修改别的进程或OS等
(2)进程发出系统调用,需要OS服务
【双重模式与多重模式的执行】
根据运行程序对资源的机器指令的使用权限划分为:管态、目态。
【管态】
可以执行所有的指令(包括特权指令)、使用所有的资源,并具有改变处理器状态的能力。
【目态】
【受保护的指令/特权指令】
特权指令:只有操作系统才有权使用的指令。
问:CPU如何来判断当前运行的程序是系统程序还是用户程序呢?
答:通过程序状态字PSW
【程序状态字PSW】Program Status Word
问:CPU工作状态之间如何进行转换?
【系统调用】System Call
【用户模式到内核模式的转换】
【五大功能】
【发展】
【历史】
真空管(1945-1955)→
晶体管和批处理系统(1955-1965)→
集成电路和多道程序设计(1965-1980)→
PC(1980-1995)→
后PC(1955-至今)
【真空管】
【晶体管和批处理系统】
【多道程序系统】
(1)多道:计算机内存中同时存放几道相互独立的程序;
(2)宏观上并行:同时有多道程序在内存运行;某一时间段内,各道程序不同程度向前推进;
(3)微观上串行:任一时刻最多只有一道作业占用CPU(单CPU),多道程序交替使用CPU。
(1)资源利用率高
(2)系统吞吐量大(吞吐量:系统单位时间完成的工作总量)
(1)平均周转时间长(作业周转时间:作业进入系统到完成并退出所用时间)
(2)无交互能力
【分时操作系统】
(1)多路性:允许同一主机连接多台终端。
(2)独立性:每一个用户独占一个终端。
(3)及时性:用户请求能够及时响应。
(4)交互性:可进行广泛的人机对话。
【PC】Personal Computers
【OS的现状】
Windows、Linux、MacOS等
Unix/类Unix系列、Windows等
Android、Apple iOS
“hello world”在Linux上运行
【程序代码】
【处理过程】
1.用户输入命令,shell进程被唤醒,对命令解析;
·用户敲击键盘后,键入的信息记录在终端设备文件(tty0)上。
·产生键盘中断信号,系统对键盘中断信号进行处理。
·中断服务程序开始执行后,唤醒shell进程,通过进程调度机制,由进程0切换到shell进程去执行。
·shell进程从tty0终端设备文件上读取用户键入的指令信息,解析该指令,并准备进行相应的处理。
2.调用fork创建一个用户进程,对程序进行控制;
创建进程控制块(task_struct),包括:
(1)进程状态、进程对应的文件
(2)进程调度信息
(3)内存管理信息
(4)文件管理信息
3.加载hello world文件对应的程序;
注:文件和内存是所有进程可以共用的资源,它们之间还存在着更为复杂的管理关系。
如:两个进程加载同一个hello world文件时,涉及要不要共享,如何共享,共享后页面的引用计数如何计算,读写属性如何确定等。
4.程序开始执行,将“hello world”显示在屏幕上。
设备管理:直接与显示器的底层交互。
步骤:
(1)确定操作合法,然后将字符串转换成像素
(2)将像素写入存储映像区
(3)视频硬件将像素表示转换成一组模拟信号控制显示器
(4)在屏幕上看到“hello world”
问:如果没有操作系统,会怎样?
1.即使是在屏幕上显示一行“hello world”,都要写大量复杂的、具有操作系统所具备的功能的程序
2.甚至无法把程序加载到计算机中,更谈不上得到运行结果了。
【OS在应用程序运行时的作用】
即,OS对应用程序的运行做了什么?
1.提供了对外设的支持
2.支持多个程序同时运行(对运行的多个程序进行有效的组织、管理和协调,防止某个程序独占CPU、内存、外设等资源;防止正在运行的程序之间相互读写和相互覆盖,确保所有程序正确运行)
注意:操作系统不能被应用程序直接读写,更不能被应用程序覆盖。
本文是操作系统系列的第一篇,主要概述绪论部分的内容;也是初九2022年的第一篇文,希望你新年快乐( •̀ ω •́ )✧