操作系统OS概述

操作系统是一们综合各种计算机课程学习的学科,建议放在后面学。

一、什么是操作系统

对上服务应用程序,控制软件和程序,限制不同的应用程序占用的资源。协调不同的程序运行,公平地共享计算机系统资源,提高效率和利用率。——管理者。

硬件之上,应用程序之下(抽象接口,不用考虑底层的硬件)——中间层的系统软件!

软件:系统软件+应用软件。操作系统位于应用软件之下,为其提供服务支撑。

操作系统的两个接口,面向外部的接口称为:Shell(外壳),面向内部的接口称为:kernel(内核),我们主要关注内核

操作系统内部细节:管理硬件资源——CPU、内存、磁盘、(声卡、显卡等)

1)CPU管理:CPU调度、进程线程管理
2)内存:物理内存管理、虚拟内存管理
3)磁盘(disk)管理:(因为比较底层,不方便管理,所以要做文件系统,以文件的形式对应用程序对应用程序提供访问保存等服务)——文件系统管理
4)中断处理与设备驱动:

OS内核四大特征
1)并发——在计算机中放多个可以同时跑的程序,让操作系统来调度。
并发:在一段时间内,有多个程序可以运行(异步的,交替轮流)。
并行:在一个时间点上,多个程序可同时运行。(要求计算机上有多个CPU
2)共享:同时访问内存IO,一个时间点对于某一个内存单元,只有一个程序能够访问,但是两个程序可以同时访问两个不同的内存单元。
3)虚拟:硬件虚拟化——CPU虚拟化为进程,磁盘虚拟化为文件,内存虚拟化为地址空间。能够让用户感觉到能够操作一台计算机。
4)异步:一个CPU上面,程序的执行是走走停停的,不是一次执行完,不可预知,但是能够保证执行结果一致。

二、为什么要学习操作系统

已经有了很多操作系统,为什么要学:OS涉及到底层,能力很强的操作,掌握操作系统,对其进行改进扩展,就能够控制整个计算机系统。

1)由于OS是并发的,所以对于编程的挑战性很大。
2)由于OS面对的是复杂的硬件,具有时间依赖行为,硬件故障,为了避免一些非法的操作,操作系统的实现复杂度就提高了。
3)OS必须是高效的:低耗CPU、内存、磁盘。
4)OS必须比用户程序拥有更高的稳定性。
5)操作系统是安全的基础,不能有漏洞。

如何学:多读代码,并实践。

典型操作系统:UNIX(贝尔实验室1972,基于C)——UNIX BSD(伯克利软件发行版)
Linux:自治终端领域,在移动终端中占据份额最大
Windows:最早是DOS,卖给了IBM,90年代变成Windows,其在桌面领域占统治地位;在服务器和终端领域更多的是Linux,桌面领域能够让普通大众能够使用计算机。
红帽操作系统等。

分时调度:1/1000秒产生一次分时,轮流切换执行,时间很短,感觉在同时执行。
如何中断的?外设——时钟,定时产生中断,把控制权交给操作系统,OS会完成切换的过程。

操作系统演变:主型机计算——个人机计算(Linux、Windows等)——网络计算(IOS、Android)——未来操作系统(云计算、大数据等)
可以让计算去云中心完成,让一个人有大量的机器为之服务。

发展趋势:一台计算机给一群人服务——多台计算机为一个人服务。

三、操作系统结构

uCore操作系统:麻雀操作系统

VMM(虚拟机监视器):使一套硬件上可以跑多个OS
在这里插入图片描述
发展出VMM的基础是现在计算的硬件资源过剩,CPU有可多个,可以将数据中心虚拟化,将一台计算机给多个人使用。

四、操作系统的基本操作概述

(1)OS的启动
操作系统OS一开始是放在disk上的(而不是内存),
首先由BIOS(基本I/O处理系统)提供支持:
——BIOS是个人电脑启动时加载的第一个软件,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。

再由小程序Bootloader来加载OS,就是让OS从硬盘到内存中去,从而可以让CPU执行OS。CPU的控制权就归OS了,从OS的起始地址开始执行。OS会在内存中执行各种工作。
(2)OS与设备和程序交互

应用程序通过系统调用和异常进行运行,外设通过中断和IO进行处理

系统调用应用程序主动向操作系统发出服务请求;处理时间是异步/同步时间点
异常:非法指令和其他坏的处理状态,处理时间是同步的时间点。
中断外设的计时器和网络中断。即外设发出请求,需要处理。处理时间是异步的时间点

应用程序为什么不能直接访问硬件?
——OS是可信任的,安全;OS为上层应用提供简单的接口,这样上层应用就不用关注底层的复杂性,使应用程序开发变得更容易。

中断和异常处理机制
中断:1)保存当前现场;2)中断服务程序处理;3)清除中断标记;4)回复之前保存的处理状态。
异常:得到一个异常编号(ID号)
1)保存现场;2)异常处理(杀死异常程序、重新执行异常指令);3)恢复现场

系统调用

来源于应用程序的请求,通过系统调用接口,——应用程序接口(API)
Win32 API 用于Windows,POSIX API用于POSIX-based systems(包括UNIX、LINUX、Mac OS X的所有版本),Java API用于JAVA虚拟机(JVM)
其中,Java API特殊,它不属于系统调用,是JVM提供的支持,由一些库来实现,最底层要看JVM运行在什么底层OS上了。

五、计算机体系结构及内存分层体系

操作系统如何管理物理内存?

(1)计算机体系结构
CPU 内存(存放执行时的程序和数据) 设备(IO) =>由总线连接

CPU:寄存器和cache——物理内存/主存(掉电数据消失)——磁盘(虚内存)
—————————————————————————>越来越慢,空间越来越大

如图,P1-P4是四个程序(进程),正在占用CPU的是P1,其它等待。
P4需要等待更久,所以需要OS将P4导入到磁盘上去,以便让其它程序有更多的空间,P1-P3在主存中轮流执行。
在这里插入图片描述
(2)地址空间 & 地址生成
(1)定义:
物理地址空间——硬件支持的,如硬盘和内存条。
逻辑地址空间——一个运行的程序所拥有的的内存范围,便于访问,但最终会放置在主存或硬盘中的。
(2)生成:
逻辑地址生成——eg:c程序(.c)的变量地址是逻辑地址,后面会编译(.s)、汇编(.o)、链接(.exe),最后载入到内存中

六、连续内存分配

(1)内存碎片问题
外部碎片:分配单元之间的未使用内存
内部碎片:分配单元中的未使用内存
(2)第一匹配分配
为了分配n字节,使用第一个可用空闲块,块的尺寸比n大;
——eg:分配400bytes,使用了500 bytes的可用空闲块。

讨论课样题 1.下列页面置换算法说法正确的有(B)。 I先进先出(FIFO)会产生Belady现象。 II.最近最少使用(LRU)会产生Belady现象。 III.在进程运行时,若它的工作集页面都在虚拟存储器内,则能够使该进程有效地运行,否则会出现频繁的页面调入/调出现象。 IV.在进程运行时,若它的工作集页面都在主存储器内,则能够使该进程有效地运行,否则会出现频繁的页面调入/调出现象。 A.I、II B.I、IV C.II、III D.III、IV 2.在一个请求分页系统中,采用LRU页面置换算法时,加入一个作业的页面走向为: 1,3,2,1,1,3,5,1,3,2,1,5。当分配给该作业的物理块数分别为3和4时,在访问过程中所发生的缺页率为()。 A.25%, 33% B. 25%, 100% C.50%, 33% D.50%,, 75% 3.有一个矩阵为100x 200,即a[100][200]在一个虚拟系统中,采用LRU算法。系统分给该进程5个页面来存储数据(不包含程序),设每页可存放200个整数,该程序要对整个数组初始化,数组存储时是按行存放的。试算下列两个程序各自的缺页次数(假定所有页都以请求方式调入)(B) 程序一: for(i=0;i<= 99;i++) for(j=0;j<= 199;j++) A[i][j]=i*j 程序二: for(j=0; j<= 199;j++) for(i=0; i<= 99; i++) A[i][j]=i*j A.100, 200 B.100, 20000 C.200,100 D. 20000,100 解:外层改变行,内层改变列 程序一:对于外层循环一次后,内层循环都是在一行内运转的,也就是一页内运转的。 程序二:内循环是在行之间运行的,内层循环一次,程序运行页面需要换一个。 5.假定有一个请求分页存储管理系统,测得系统个相关设备的利用率为CPU为10%,磁盘交换区为99.7%;其他I/O设备为5%。试问:下面(B)措施可能改进CPU的利用率? I. 增大内存的容量 II.增大磁盘交换区的容量 III.减少多道程序的度数 V.使用更快速的磁盘交换区 IV.增加多道程序的度数 VI:使用更快速的CPU A.I、II、III、IV B.I、III C.II、III、V D.II、VI 解:I正确:增大内存可使每个程序得到更多的页面,能减少缺页率,因而减少换入换出过程,可提高CPU的利用率。 II错误:增大磁盘交换区的容量。因为系统实际已处于频繁的换入换出过程中,不是因为磁盘交换区容量不够,因此增大磁盘交换区的容量无用。 III正确:减少多道程序的度数。可以提高CPU的利用率,因为从给定的条件中磁盘交换区的利用率为99.7%,说明系统现在已经处于频繁的换入换出过程中,可减少主存中的程序。 V错误:使用更快速的磁盘交换区。因为系统现在处于频繁的换入换出过程中,即使采用更快的磁盘交换区,其换入换出频率也不会改变,因此没用。 IV错误:增加多道程序的度数。系统处于频繁的换入换出过程中,再增加主存中的用户进程数,只能导致系统的换入换出更频繁,使性能更差。 VI错误:使用更快速的CPU。系统处于频繁的换入换出过程中,CPU处于空闲状态,利用率不高,提高CPU的速度无济于事。 6.一个页式虚拟存储系统,其并发进程数固定为4个。最近测试了它的CPU利用率和用于页面交换的利用率,假设得到的结果为下列选项,(C)说明系统需要增加进程并发数? I. CPU利用率13%;磁盘利用率97% II. CPU利用率97%;磁盘利用率3% III.CPU利用率13%;磁盘利用率3% A.I B.II C.III D.I、III 解:A.系统在抖动,增加并发进程数反而会恶化系统性能。 B.系统正常,不需要采取什么措施 C.CPU没有充分利用 10.考虑页面替换算法,系统有m个页帧供调度,初始时全空;引用串长度为p,包含了n个不同的页号,无论用什么算法,缺页次数不会少于(C)。 A. m B.p C.n D. min(m, n) 解:缺页次数不会少于页数,因为要调入内存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值