1 我们编写的高级语言程序其实是运行在OS上的)
2
3
4
5
6
7
8 多线程程序怎么加锁??
9
10 操作系统及其系统调度给程序员的编程提供了简化,使其不必直接用机器指令操作硬件。
11 而是用扩展的机器指令。
12
13 语言处理系统:可以使用高级语言进行面向问题的解决方案。
14
15 从资源管理的角度理解操作系统:
16 程序如何
17 1.控制占用CPU?
18 2.控制主存?
19 3.控制IO设备?
20 4.如何与其他进程通讯?
21
22 资源共享:
23 1.独占式
24 2.并发使用
25 资源分配策略:
26 1.静态分配
27 2.动态分配
28 3.资源抢占 如何回滚??
29
30 多道程序设计:
31 多程序一起进入优点:
32 缓解了cpu和IO速度的严重不匹配的矛盾,提高了cpu利用率
33
34 如何实现?
35 为进入内存执行的程序建立管理实体:进程!
36
37 操作系统应该能够管理进程的执行,以及系统(包括内存,cpu,IO等)调度
38
39
40 人机交互的发展:
41 VR:显然需要硬件支撑,什么硬件?
42 其次,需要一个虚拟系统
43 多通道交互整合
44 支持主动参与的三维HCI
45
46 所有应用程序访问操作系统的接口叫:系统调用
47 计算机控制和实现系统调用的指令:陷入指令(硬件来做,陷入了内核)----计算机为实现系统调用而引起处理器中断的指令。
48 过程:用户程序通过陷入指令中断CPU,保护cpu现场,取系统功能号 查入口地址标表获得入口地址(指向一个系统调用的处理程序)。
49 运行,然后恢复CPU现场。
50
51 软件功能的研究与发展实际就是由操作系统先带来的,OS是第一个大规模的软件系统。后面又有了数据库系统DB。
52
53 操作系统内核:
54 单内核:内核中各部件杂然混居
55 UNIX/LINUX/WINDOWS都是如此
56
57 cpu和内存都挂在系统总线上的。
58
59 机器指令:中央处理器执行的基本单位。
60 程序计数器PC:指向当前待执行的指令(取指)。
61 CPU根据PC取指,然后放入指令暂存器IR,并对指令译码(解码)。
62 然后发出控制命令,执行运算,产生结果并写回,完成一条指令的执行。
63 调整PC计数器到下一条指令地址。
64
65 指令执行周期:
66 取指解码执行
67
68 但是实际是按指令流水线执行的,为提高CPU利用率。
69 取指解码执行
70 取指解码执行
71 取指解码执行
72
73
74 处理器模式:设置处理器模式实现特权指令管理。
75 0:操作系统内核 --内核模式
76 1:系统调用
77 2:共享库程序
78 3:用户程序等 -----用户模式
79
80 中断驱动---中断驱动:用户程序间的切换是通过中断来完成的。必须先中断,控制权移交内核,然后内核再转交控制权到另一个用户程序。
81
82
83 进程的三大状态:
84 1.等待态
85 2.就绪态
86 3.进行态
87
88 进程挂起:操作系统无法预料进程数目及资源需求,运行时可能出现运行资源不足情况,如 性能低 和 死锁。
89 OS会剥夺某些进程的内存送至OS的对换区(磁盘缓冲区)。
90 挂起的进程不占用内存,而就绪的进程是占有内存的。
91
92 进程上下文:OS中进程的物理实体和 支持进程运行的环境共同形成(CPU现场,cache信息。寄存器上细纹,用户上下文(用户程序,数据等))
93 进程控制块:进程切换。保存现场-->系统调度--->加载现场等
94
95 进程:
96 单线程结构:内部只有一个执行序列
97 多线程结构:可以有多个执行序列
98 多线程的进程相比单线程的进程好处:单线程的进程完成(伪)并行,需要操作系统保护及通信和切换代价。
99 多线程环境优势:减少通信和切换代价
100
101 多线程的进程:进程是系统进行保护和资源分配的基本单位。
102 线程:进程的一条执行路径,是调度的基本单位。同一进程中的线程共享主存空间和资源。
103 最简单的应用:word里打字,有个错误检查提示,一边输入一边检查,这实际是多线程完成的。
104
105
106 多线程实现机制:
107 KLT:内核级多线程技术
108 线程阻塞后内核可调用同进程下的其他线程占用处理器
109 如果是多核处理器环境,内核能同时调度同一进程中的多个线程来真正并行。
110 应用程序在用户态运行,而线程调度和管理在内核实现。因此同一进程中,控制权从一个线程到另一线程的移交需要模式切换,系统开销较大。
111
112 ULT:用户级多线程技术
113 所有线程管理资源都在用户态,线程切换不需内核模式,节省切换开销。
114 操作系统调度的依然是进程,因此它的物理并行性不好。
115 缺点:如果线程阻塞就是进程阻塞,如何解决阻塞问题?
116 Jacketing技术:线程阻塞----执行jacketing程序-----检查资源使用情况,决定进程切换或移交控制权到另一个线程。
117
118 比较:
119 相同点:资源保护的单位都是进程为单位。
120 不同点:
121 KLT:线程调度完全由操作系统做。物理并行性好,适合解决物理并行性问题,如真多核处理器。
122 ULT:调度分两部分,OS调度处理器,用户来完成线程调度。物理并行性不好,用来逻辑并行问题
123
124
125
126 多线程的编程实现:高级语言编程,然后和专用的线程库进行链接,实现。
127
128 混合策略多线程编程:
129 结合二者优点:
130 线程创建完全在用户空间做,将ULT线程映射(绑定)到内核级的线程,通过调整KLT数目就可达到很好的并行效果。
131
132 处理器的调度层次:
133 高级调度:又称作业调度,是不是将进程加入可执行进程池
134 中级调度:又称平衡负载,可以进程挂起,调节决定主存中的可用进程集合。
135 低级调度:又称进程调度,决定哪个可用进程占用处理器执行。是操作系统中最核心的部分。可以把处理器分配给进程或内核级线程,决定分配时间等。
136
137
138 选择处理器调度算法的原则:
139 资源利用率:
140 响应时间:
141 周转时间
142 吞吐量:单位时间处理的进程数尽可能多。
143
144 时间片轮转调度:时间片太大相当于根据进入次序执行,太小则OS频繁的中断进行系统调度代价太大,一般定位200ms或500ms等
145
146 现代操作系统的调度算法一般是:优先数与分级结合的调度方法。
147 彩票调度算法:概率调度,为客户进程发放根据系统资源占用的彩票。
148
149
150 存储管理:
151
152 编程时是逻辑地址,而cpu实际运行处理的是物理地址。中间有逻辑地址到物理地址的映射--------重定位。
153 存储保护:为避免内存中多个进程互相干扰,必须进行程序和数据保护。
154 分为:
155 私有的主存占用:可读可写
156 非本进程的内存信息:不可读写
157
158 CPU要执行的当前程序:需要在内存当中。
159 地址转换:逻辑地址进来首先进行限长器比较,越界引发中断。否则就与基础地址相加,得到物理地址。
160
161 虚拟存储管理:
162 页式存储管理:像书一样,程序必定在某些页上,虽然可能有不满的页。
163 段式存储管理
164 都是讲内存地址编码成两维的:先分段编号,再给段内编号。
165
166
167 页面调度:
168 主存满了但是需要装入新的页,此时要决定哪些页从主存调出去--------------页面调度(选择调出页)。
169
170
171
172 第四章 IO设备:
173 信息传输视角:
174 1输入:键盘 鼠标
175 2输出:显示器 打印机
176 3输入输出:磁盘驱动器 网卡
177 交互功能视角:
178 1人机交互:鼠标 键盘 显示器
179 2存储设备:磁盘驱动器 光盘驱动器
180 3机机通信:网卡 调制解调器
181 设备控制器:I/O设备本身由机械设备和电子设备共同完成,电子的部分称为设备控制器或I/O接口
182
183 I/O控制方式总结:
184 1、轮询方式:CPU等待,且cpu参与内存数据交换
185 2、中断方式;CPU无需等待就绪,响应中断后参与内存数据交换
186 3、DMA方式:CPU只在I/O开始和结束时参与,其他过程完全由DMA控制,cpu不参与内存数据交换。
187 1-->2--->3 cpu与I/O设备的并行度越来越高,物理并行。
188
189 I/O通道:通道控制器 或者 I/O处理器,逻辑并行
190 CPU不再执行I/O指令,而是在内存中组织通道程序,由I/O通道执行。
191
192
193 I/O控制的DMA方式:直接存储器访问方式
194
195 设置总线的目的:
196 解决cpu和I/O设备的速度不匹配以及I/O设备之间的速度不匹配问题(I/O设备之间也有很大的差别)
197 如果不用总线,那么,低速I/O占用时间过长,使得高速设备访问时间受限。
198
199 经典的总线布置方式:南桥北桥
200 cpu <------处理总线-------->北桥(主存控制器)<--------存储总线-------->主存
201 南桥(I/O控制器)
202 SCSI----------LAN------------GPU等图形设备 PCI总线(高速电子IO设备)
203 鼠标-------键盘等 E(ISA)总线(低速机械IO设备)
204
205
206 I/O软件的设计目标:
207 1.高效性
208 2.通用性
209
210 I/O驱动:初始化i/o设备,查看状态等。
211
212 I/O缓冲区:OS在内存中开辟的存储区,专门用来临时存放I/O操作的数据。
213 OS为解决CPU与i/o设备速度不匹配,以及物理记录(硬盘)与逻辑记录大小不一致,提高并行,减少I/O对CPU的中断次数。
214 比如:磁盘一个扇区一般是512Byte,如果我们要从磁盘读30Byte,依然需要从磁盘先读取完整的页到I/O缓冲,然后再从其中提取所需内容。
215
216
217 设备分配方式:
218 独占型外围设备----一次只能由一个进程独占使用
219 分配方式:
220 静态分配:进程运行前申请;简单,能防止系统发生死锁,但是利用率低
221 动态分配:随用随申请;利用率高,可能发生死锁(如系统外设有一个打印机和一个磁带机,如果一个进程占有了打印机,另一个进程占有了磁带机。那么互相等待申请对方占用的I/O,系统就会发生死锁)
222
223 设备表等:程序并不会直接访问I/O硬件,而是访问I/O设备的逻辑抽象--逻辑设备名。
224
225
226 磁盘存取时间:
227
228 磁盘结构:不同同心圆属于不同的磁道,首先要用磁盘臂放到所需磁道(柱面)上,每个磁道(圆又可细分为不同的扇区,扇区的组合称为簇。不同大小的同心圆含有相同扇区数--便于控制)然后磁盘旋转对应扇区至磁头下,然后开始传输。
229
230 磁盘存取数据时间包括: (磁盘臂)寻道时间----(盘片)旋转时间-----传送时间
231
232 磁盘算是系统可以直接访问的高速外围存储设备
233
234 spooling系统:有点类似输入输出重定向,在磁盘中设置输入输出缓冲区(井),进程只与输入输出井关联,缩短每个进程的周转时间,提高OS的吞吐量
235
236
237
238 第五章 文件管理
239
240 子目录名之间用斜线分隔:windows用\,而unix用/表示.
241 树形目录:根目录/或~,内部节点是子目录,叶节点是文件。
242 文件查找:
243 1.从“当前目录”查起--相对目录,用.表示当前目录,用..表示父目录。
244 2.现代操作系统都有改变工作目录命令:如cd dir,
245 3.活动文件表:对于文件的使用不会每次都去查询相关的文件,而是打开文件时一次性查找加入到活动文件表中,是一种映射关系,使用完毕后才会删除此活动文件表。
246
247 文件使用:
248 unix中:
249 cat 查看
250 cd 改变目录
251 find 查找
252 mv 移动文件
253 rm删除文件
254 mkdir 创建目录(用来装文件)
255 rmdir 删除目录
256 创建文件:
257 入参:文件名 设备类 文件属性及相应存取控制信息
258 过程:
259 1.在相应设备建立一个文件目录项,为文件分配一个物理块
260 2.在活动文件表中申请一个项,登记有关目录信息。
261 3.返回一个文件句柄(类似指针,存储了这个活动文件表中该文件的目录项相关信息)
262 删除文件:
263 1.先判断是否打开,
264 2.否---->删除,是----->先关闭----->删除