第一章 操作系统引论--笔记
2015-08-11 21:09
309 查看
本系列博文是西安电子科技大学出版社出版的《计算机操作系统》(第三版)汤小丹 梁红兵 哲凤屏 汤子瀛 一书的读书笔记
特此注明为读书笔记,若有侵权,敬请通知本人
(1)提高了系统资源利用率,如使空闲的CPU和I/O保持忙碌状态,有效的内存分配策略节省存储空间等
(2)提高了系统的吞吐量
2. 方便性: 便于使用,如引入GUI操作界面
3. 可扩展性: 能适应于不同的计算机硬件、体系结构
4. 开放性: 遵循开放系统互联(OSI) 的标准,兼容软硬件,方便实现计算机互联
2. 管理计算机资源:如内存的分配与回收、CPU管理、I/O管理、文件管理等等
3. 抽象计算机系统资源:隐藏计算机硬件的细节,向上提供高级抽象
2. 方便用户
3. 硬件的更新迭代
4. 计算机体系结构的发展
问题:CPU和I/O之间速度鸿沟太大,CPU的空闲率高
解决方法:脱机输入输出技术(Off-Line I/O)
![](http://img.blog.csdn.net/20150811214955993)
优点:
(1)减少了主机CPU的空闲时间(外围机完成了输入输出设备和磁盘的连接)
(2)提高了I/O的速度,CPU在运行中需要数据的时候,可以从高速的磁带/磁盘中将数据调入内存
相比”无操作系统的计算机操作系统“多了一个监督程序(Monitor)
(1)自动性
(2)顺序性
(3)单道性(内存中仅有一道程序在运行)
精髓:由调度算法从队列中选取若干作业调入内存,共享CPU等系统资源
好处:
(1)资源利用率高(CPU、内存、I/O)
(2)吞吐量大
坏处:
(1)平均周转时间长(作业仍需要排队,比如就算A申请I/O中断了,CPU也会先跑B,不会跑C)
(2)无交互能力(提交后,直到其完成)
要解决的问题:处理器、内存、文件、I/O、作业的管理问题
精髓:一主机,多终端共享资源,时间片
要解决的问题:及时接收,及时处理(重要,影响人机交互体验)
精髓:系统能及时响应外部事件的请求,在规定的时间内完成处理。相比分时系统更强调“可靠性”,不能有差错。
2. 单用户多任务操作系统:一次一个用户,若干程序并发执行,例:windows
3. 多用户多任务操作系统:多个用户终端连接一个主机,每个用户有若干程序。每个用户被分配时间片,在自己的时间片中,用户 程序并发执行,例:UNIX
并行:多个事件在同一时刻发生;并发:多个事件在同一个时间段内发生(一个时刻仍只允许发生一个事件)
只有在多处理器架构上,才有并行。
2. 进程
为什么引入进程:为了并发。如果没有并发,程序是一个执行单元,要么做完,要么一点也不做,就变成单任务了。多个进程之间可以并发执行、交换信息
3. 线程
进程拥有自己的资源,调度的时候有一定开销。为什么引入线程:为减少调度开销,提高并发度。一个进程有多个线程,它们共享这个进程的资源。结果:进程是分配资源的基本单位;线程是运行和调度的基本单位。
实现方式:
1. 互斥共享
2. 同时访问(单处理器上同时间段,不同时刻访问;多处理器上可以实现同时刻访问(真正的同时))
1. 时分复用技术
1)虚拟处理器技术(分时间片供多个用户使用,就好像感觉每个用户都有一个处理器为它们服务一样)
2)虚拟设备技术(比如打印机)
2. 空分复用技术
1)虚拟磁盘技术(一个盘片分成几个卷,如windows上面的C、D、E盘等)
2)虚拟存储器技术(在逻辑上扩大存储器容量,后面在将存储器一章的时候,会详细介绍)
两种方式:
(1)进程互斥
(2)进程同步
实现方法:最简单:锁,最常用:信号量
从后备作业队列中,按算法选出若干作业,调入内存,建立进程,按算法插入就绪进程队列
(2)进程调度
从就绪进程队列中,按算法选出一个进程(一个处理器上),分配处理器,保存上下文信息,执行。
(另外,如果是在 “线程作为运行和调度的基本单位” 的多线程OS中,就把上面的“进程”换成线程就好了。)
分类:
静态内存分配:作业的内存空间在装入时已确定,不得更改;也不准作业在内存中移动
动态内存分配:装入时有一个大概的基本空间,后面可以再申请;允许作业在内存中移动
实现:由硬件作越界检查,发现越界后与软件配合处理
实质:用一些技术使内存能装入更多的程序来并发执行,实际上并没有提高内存的容量。
实现:
(1)请求调入功能:只装入程序的一部分和部分数据就可以让程序执行。运行到需要程序别的部分和新数据了,再叫OS从磁盘调入。
(2)置换功能:发现内存中没有足够空间来容纳需要调入的程序和数据了,叫OS看看能不能把内存中暂时不用的程序和数据调回磁盘去,腾出空间纳入亟需使用的程序和数据。
2. 设备分配
3. 设备处理
2. 目录管理
3. 读/写管理、保护
1.4.5 OS和用户间的接口
(1)用户接口(2)程序接口(系统调用)
2.模块化操作系统 :模块化,有助于系统拓展。但是模块化开发之间的顺序不确定--无序性。
3. 分层式操作系统:改进模块化操作系统,使模块之间的开发有序,但是代价是降低系统的效率。
数据分布处理:不用全放在一个主机上、
灵活:改变一个客户机上的软件不会对其他的客户机和服务器造成影响
缺点:不可靠,一个服务器故障,导致多个客户机请求失败、布置格局费时--服务器负荷太重,会增加响应时间
1)微内核足够小,仅实现与硬件相关的基本功能,作为基础。
2)基于“客户-服务器”模式。客户指用户进程,服务器指处理这个进程的服务器,如进程服务器。微内核是来调控它们的交互 的,仿佛独立于模式之外的“神之手”。
3)底层机制放在微内核中,高层的策略算法放在OS的其他部分。
4)也是使用面向对象技术编程的
2. 功能:
1)进/线程管理
2)低级存储器管理(硬件相关) 3)中断和陷入管理
3. 优点:
1)可扩展:OS中增加一个新的服务器,就方便地拥有新功能了。
2)可靠:有微内核的调控,客户进程或者服务器出问题了,也不会影响到别的部分
3)可移植:微内核和硬件相关,移植的时候基本只需改动微内核,而微内核代码量小,因此可移植性高。
4. 问题:
由于3优点中的2)可靠,意味着客户进程和服务器交互的时候,常常需经微内核调控,上下文切换成本高,系统运行效率受影响。
特此注明为读书笔记,若有侵权,敬请通知本人
1.1操作系统的目标和作用
1.1.1 操作系统的目标
1. 有效性:(1)提高了系统资源利用率,如使空闲的CPU和I/O保持忙碌状态,有效的内存分配策略节省存储空间等
(2)提高了系统的吞吐量
2. 方便性: 便于使用,如引入GUI操作界面
3. 可扩展性: 能适应于不同的计算机硬件、体系结构
4. 开放性: 遵循开放系统互联(OSI) 的标准,兼容软硬件,方便实现计算机互联
1.1.2 操作系统的作用
1. 用户和硬件间的接口:(1)命令方式 (2)图形界面方式(3)系统调用(在应用程序中)2. 管理计算机资源:如内存的分配与回收、CPU管理、I/O管理、文件管理等等
3. 抽象计算机系统资源:隐藏计算机硬件的细节,向上提供高级抽象
1.1.3 发展动力
1. 对计算机资源利用率的追求:如能提高I/O设备和CPU利用率的SPOOLing系统,提高存储器系统利用率的虚拟存储技术2. 方便用户
3. 硬件的更新迭代
4. 计算机体系结构的发展
1.2 操作系统的发展过程
无操作系统的计算机操作系统
问题:CPU和I/O之间速度鸿沟太大,CPU的空闲率高解决方法:脱机输入输出技术(Off-Line I/O)
优点:
(1)减少了主机CPU的空闲时间(外围机完成了输入输出设备和磁盘的连接)
(2)提高了I/O的速度,CPU在运行中需要数据的时候,可以从高速的磁带/磁盘中将数据调入内存
单道批处理系统
相比”无操作系统的计算机操作系统“多了一个监督程序(Monitor)(1)自动性
(2)顺序性
(3)单道性(内存中仅有一道程序在运行)
多道批处理系统
精髓:由调度算法从队列中选取若干作业调入内存,共享CPU等系统资源好处:
(1)资源利用率高(CPU、内存、I/O)
(2)吞吐量大
坏处:
(1)平均周转时间长(作业仍需要排队,比如就算A申请I/O中断了,CPU也会先跑B,不会跑C)
(2)无交互能力(提交后,直到其完成)
要解决的问题:处理器、内存、文件、I/O、作业的管理问题
分时系统
精髓:一主机,多终端共享资源,时间片要解决的问题:及时接收,及时处理(重要,影响人机交互体验)
实时系统
精髓:系统能及时响应外部事件的请求,在规定的时间内完成处理。相比分时系统更强调“可靠性”,不能有差错。微机操作系统的发展
1. 单用户单任务操作系统:一次一个用户,一次一个程序,例:MS-DOS2. 单用户多任务操作系统:一次一个用户,若干程序并发执行,例:windows
3. 多用户多任务操作系统:多个用户终端连接一个主机,每个用户有若干程序。每个用户被分配时间片,在自己的时间片中,用户 程序并发执行,例:UNIX
1.3 操作系统的基本特性
1.3.1 并发性
1. 并行、并发并行:多个事件在同一时刻发生;并发:多个事件在同一个时间段内发生(一个时刻仍只允许发生一个事件)
只有在多处理器架构上,才有并行。
2. 进程
为什么引入进程:为了并发。如果没有并发,程序是一个执行单元,要么做完,要么一点也不做,就变成单任务了。多个进程之间可以并发执行、交换信息
3. 线程
进程拥有自己的资源,调度的时候有一定开销。为什么引入线程:为减少调度开销,提高并发度。一个进程有多个线程,它们共享这个进程的资源。结果:进程是分配资源的基本单位;线程是运行和调度的基本单位。
1.3.2 共享性
概念:系统资源供多个在内存中的并发执行的进程共享实现方式:
1. 互斥共享
2. 同时访问(单处理器上同时间段,不同时刻访问;多处理器上可以实现同时刻访问(真正的同时))
1.3.3 虚拟技术
概念:使一个物理实体对应多个逻辑实体1. 时分复用技术
1)虚拟处理器技术(分时间片供多个用户使用,就好像感觉每个用户都有一个处理器为它们服务一样)
2)虚拟设备技术(比如打印机)
2. 空分复用技术
1)虚拟磁盘技术(一个盘片分成几个卷,如windows上面的C、D、E盘等)
2)虚拟存储器技术(在逻辑上扩大存储器容量,后面在将存储器一章的时候,会详细介绍)
1.3.4 异步性
内存中有各种作业,处理器密集型的,I/O密集型的。由于各种原因,进程完成的时间是不可预知的,这就是进程的异步性。1.4 操作系统的主要功能
1.4.1 处理器的功能
1. 进程控制
主要功能:创建,撤销,终止进程;控制进程运行中的状态转化;为进程创建,撤销,终止线程2. 进程同步
主要功能:协调多个进程(含线程)的运行两种方式:
(1)进程互斥
(2)进程同步
实现方法:最简单:锁,最常用:信号量
3. 进程通信
相互合作的进程之间需要交换信息4. 调度
(1)作业调度从后备作业队列中,按算法选出若干作业,调入内存,建立进程,按算法插入就绪进程队列
(2)进程调度
从就绪进程队列中,按算法选出一个进程(一个处理器上),分配处理器,保存上下文信息,执行。
(另外,如果是在 “线程作为运行和调度的基本单位” 的多线程OS中,就把上面的“进程”换成线程就好了。)
1.4.2 存储器管理功能
1. 内存分配
作用:为要运行的程序分配内存空间。分类:
静态内存分配:作业的内存空间在装入时已确定,不得更改;也不准作业在内存中移动
动态内存分配:装入时有一个大概的基本空间,后面可以再申请;允许作业在内存中移动
2. 内存保护
作用:确保程序都只在自己的那块内存中运行实现:由硬件作越界检查,发现越界后与软件配合处理
3. 地址映射
作用:把地址空间中的逻辑地址转换为内存空间中对应的物理地址,让程序正确运行。4. 内存扩充
作用:允许内存中有更多的程序并发执行实质:用一些技术使内存能装入更多的程序来并发执行,实际上并没有提高内存的容量。
实现:
(1)请求调入功能:只装入程序的一部分和部分数据就可以让程序执行。运行到需要程序别的部分和新数据了,再叫OS从磁盘调入。
(2)置换功能:发现内存中没有足够空间来容纳需要调入的程序和数据了,叫OS看看能不能把内存中暂时不用的程序和数据调回磁盘去,腾出空间纳入亟需使用的程序和数据。
1.4.3 设备管理功能
1. 缓冲管理2. 设备分配
3. 设备处理
1.4.4 文件管理功能
1. 存储空间管理2. 目录管理
3. 读/写管理、保护
1.4.5 OS和用户间的接口
(1)用户接口(2)程序接口(系统调用)
1.5 OS结构设计
1.5.1 传统的操作系统结构
1. 无结构操作系统 :适用于小系统,功能拓展起来,代码量一多就很难管理。2.模块化操作系统 :模块化,有助于系统拓展。但是模块化开发之间的顺序不确定--无序性。
3. 分层式操作系统:改进模块化操作系统,使模块之间的开发有序,但是代价是降低系统的效率。
1.5.2 客户-服务器 模式
优点:数据分布处理:不用全放在一个主机上、
灵活:改变一个客户机上的软件不会对其他的客户机和服务器造成影响
缺点:不可靠,一个服务器故障,导致多个客户机请求失败、布置格局费时--服务器负荷太重,会增加响应时间
1.5.3 面向对象程序设计
特点:对象(模拟现实)--易于理解、继承--可扩展性、封装--隐蔽性1.5.4 微内核OS结构
1. 概念:1)微内核足够小,仅实现与硬件相关的基本功能,作为基础。
2)基于“客户-服务器”模式。客户指用户进程,服务器指处理这个进程的服务器,如进程服务器。微内核是来调控它们的交互 的,仿佛独立于模式之外的“神之手”。
3)底层机制放在微内核中,高层的策略算法放在OS的其他部分。
4)也是使用面向对象技术编程的
2. 功能:
1)进/线程管理
2)低级存储器管理(硬件相关) 3)中断和陷入管理
3. 优点:
1)可扩展:OS中增加一个新的服务器,就方便地拥有新功能了。
2)可靠:有微内核的调控,客户进程或者服务器出问题了,也不会影响到别的部分
3)可移植:微内核和硬件相关,移植的时候基本只需改动微内核,而微内核代码量小,因此可移植性高。
4. 问题:
由于3优点中的2)可靠,意味着客户进程和服务器交互的时候,常常需经微内核调控,上下文切换成本高,系统运行效率受影响。
相关文章推荐
- hdu 3635 Dragon Balls (并查集,路径压缩应用)
- hdu 3635 Dragon Balls (并查集,路径压缩应用)
- 补贴之外,滴滴打车背后的技术体系会吓你一跳
- 指针变量做参数
- GDOI2016模拟8.10查税
- crontab
- NEU 1639: Small problem
- HDOJ 1102 Constructing Roads(最小生成树)
- hdu1301 Jungle Roads 【最小生成树】
- 【原创】Kafka console consumer源代码分析(二)
- 宏定义(#define)和常量(const)的区别
- JAVA中浮点数显示
- 【原创】Python第二章——字符串
- Python学习笔记2——与C++和JAVA的区别
- awk简记
- Tomcat源码解析系列
- R——颜色篇
- *** Assertion failure in -[UICollectionViewData validateLayoutInRect:], /SourceCache/UIKit_Sim/UIKit
- HDU 4597 Play Game
- NOIP2013 火柴排队