北京大学《操作系统原理》课堂笔记(一)
北京大学《操作系统原理》课堂笔记(一)
一、操作系统概述
1.1、操作系统做了什么?
以c语言helloworld为例子:
#include<stdio.h> int main(int argc, char *argv[]) {puts("hello world");return 0; }
用户告诉操作系统执行helloworld程序。
如何告知?
1、命令行输入相应的命令
2、鼠标双击helloworld图标
操作系统:找到helloworld程序的相关信息,检查其类型是否是可执行文件;并通过程序首部信息确定代码和数据在可执行文件中的位置并计算对应的磁盘块地址。
文件格式?
1、Windows操作系统下可执行文件格式是.exe。
2、Linux操作系统下可执行文件格式是.elf。
操作系统:创建一个新的进程,并将helloworld可执行文件映射到该进程结构,表示由该进程执行helloworld程序。
操作系统:为helloworld程序设置CPU上下文环境并跳到程序开始处(假设调度程序选中helloworld程序,会在下一个指令周期跳到程序开始处)。
执行helloworld程序的第一条指令,发生缺页异常。
为什么呢?
因为程序在执行的时候会先把代码的程序和数据读入内存,CPU才能去执行。但是此时helloworld程序还没有把代码的程序和数据读入内存,所以此时硬件机制就会捕获出缺页异常,并且把控制权交给操作系统。
操作系统(页式存储方案):分配一页物理内存,并将代码从磁盘读入内存,然后继续执行helloworld程序。
有的时候程序内存很大,一页物理内存不足以存储整个程序,因此在执行过程中会发生多次的缺页异常。然后到磁盘读入程序到内存,这个过程会执行多次。
helloworld程序执行puts函数(系统调用),在显示器上打印出字符串。
操作系统:找到要将字符串送往的显示设备,通常设备是由一个进程控制的,所以操作系统将要写的字符串发送给该进程。
操作系统:控制设备的进程告诉设备的窗口系统要显示字符串,窗口系统确定这是一个合法的操作,然后将字符串转换成像素,将像素写入设备的存储映像区。
视频硬件将像素转换成显示器可接收的一组控制/数据信号。
显示器解释信号,激发液晶屏。
用户可在屏幕上看到了“hello world”。
1.2、操作系统的定义与作用
操作系统是什么?
操作系统是计算机系统中的一个系统软件,是一些程序模块的集合。
1、它们能以尽量有效、合理的方式组织和管理计算机的软硬件资源。
2、合理地组织计算机的工作流程,控制程序的执行并向用户提供各种服务功能。
3、使得用户能够灵活、方便地使用计算机,使整个计算机系统高效率运行。
解读几个关键词。
有效:系统效率,资源利用率
CPU利用率充足与否?I/O设备是否忙碌?
合理:各种软硬件资源的管理是否公平合理
如果不公平、不合理,则可能会产生什么问题?
方便使用:用户界面或编程接口。
操作系统的三个作用
资源的管理者 → 有效
硬件资源:CPU,内存,设备(I/O设备、磁盘、时钟、网卡等)
软件资源:磁盘上的文件、各类管理信息等
向用户提供各种服务 → 方便使用
对硬件机器的扩展 → 扩展能力
怎么管理资源?
跟踪记录资源的使用状况。
如:哪些资源空闲,分配给谁使用,允许使用多长时间等。
确定资源分配策略--算法。
静态资源策略。
动态资源策略。
实施资源的分配与回收。
提高资源的利用率。
保护资源的利用。
协调多个进程对资源请求的冲突。
从资源管理的角度 - 五大基本功能
进程/线程管理(CPU管理)
进程线程状态、控制、同步互斥、通信、调度等。
存储管理
分配/回收、地址转换、存储保护、内存扩充等。
文件管理
文件目录、文件操作、磁盘空间、文件存取控制等。
设备管理
设备驱动、分配回收、缓存技术等。
用户接口
系统命令、编程接口。
OS是各种系统服务的提供者
在操作系统之上,从用户角度来看:
操作系统为用户提供了一组功能强大、方便易用的命令或系统调用。
典型的服务:
进程的创建、执行;文件和目录的操作;I/O设备的使用;各类统计信息等。
OS是硬件之上的第一层软件
应用程序
------------虚拟机器界面
操作系统
-----------物理机器界面
硬件
OS对硬件机器的扩展
操作系统在应用程序与硬件之间建立了一个等价的扩展机器(虚拟机)。
对硬件抽象,提高可移植性;比底层硬件更容易编程。
1.3、操作系统的主要特征
操作系统的特征:并发、共享、虚拟和随机。
OS特征-并发
并发:指处理多个同时性活动的能力。
由于并发将会引起很多的问题:活动切换、保护、相互依赖的活动间的同步。
在计算机系统中同时存在多个程序运行,单CPU--
宏观上:这些程序同时在执行。
微观上:任何时刻只有一个程序真正在执行,即这些程序在CPU上是轮流执行的。
并行:与并发相似,但多指不同程序同时在多个硬件部件上执行。
OS特征-共享
共享:操作系统与多个用户的程序共同使用计算机系统中的资源(共享有限的系统资源)
操作系统要对系统资源进行合理分配和使用。
资源在一个时间段内交替被多个进程所用。
互斥共享(如打印机)
同时共享(如可重入代码、磁盘文件)
OS特征-虚拟
虚拟:一个物理实体映射为若干个对应的逻辑实体(分时或分空间)。
虚拟是操作系统管理系统资源的重要手段,可提高资源利用率。
如:
CPU:每个进程的“虚处理机”。
存储器:每个进程都有独立的虚拟地址空间(代码+数据+堆栈)。
显示设备:多窗口或虚拟终端。
OS特征-随机
随机:操作系统必须随时对以不可预测的次序发生的事件进行响应并处理。
如:
进程的运行速度不可预知:多个进程并发执行,“走走停停”,无法预知每个进程的运行推进的快慢。
难以重现系统在某个时刻的状态(包括重现运行中的错误)。
1.4、典型操作系统的架构
Windows操作系统的体系结构
抽象成四层:
应用程序 系统功能调用 操作系统 计算机硬件
UNIX架构
抽象成四层:
UNIX命令和库 系统调用接口 内核 硬件
LINUX架构
略
ANDROID操作系统的整体架构
Android应用程序
Email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理等
应用程序框架
开发者可以完全使用核心应用程序所使用的APIs框架视图、内容提供者、资源管理器等
系统库和Android运行时
Android包含一个C/C++库的集合,供Android系统的各个组件使用。如:系统c库、3D库、SQLite、媒体库等
Linux内核
提供核心系统服务,例如:安全、内存管理、进程管理、网络协议栈、驱动模型
1.5、操作系统的分类
操作系统的发展历程
操作系统发展是随着计算机硬件技术、应用需求的发展、软件新技术的出现而发展的。
目标:充分利用硬件、提供更好的服务。
发展历程:大型机器→个人计算机→网络→移动计算→云计算→泛在计算(物联网)→机器人。
传统操作系统的分类
批处理操作系统
分时操作系统
实时操作系统
个人计算机操作系统
网络操作系统
分布式操作系统
嵌入式操作系统
批处理操作系统
问题:慢速的输入输出处理直接由主机来完成,输入输出时,CPU处于等待状态。
解决方案:
卫星机:完成面向用户的输入输出(纸带或卡片),中间结果暂存在磁带或磁盘上。
单道批处理系统:一次只处理一个作业。
多道批处理系统:一次处理多个作业。
SPOOLING系统(Simultaneous Peripheral Operation On-Line,同时的外围设备联机操作,又称假脱机技术)
批处理系统的实现通常采用的技术。
思想:利用磁盘做缓冲,将输入、计算、输出分别组织成独立的任务流,使I/O和计算真正并行。
工作原理:
用户作业加载到磁盘上的输入井。
按某种调度策略选择几个搭配得当的作业,调入内存。
作业运行的结果输出到磁盘上的输出井。
运行结果从磁盘上的输出井送到打印机。
现代计算机系统的打印过程通常采用的是SPOOLing技术。
分时操作系统
时间片:操作系统将CPU的时间划分成若干个片段,称为时间片。
操作系统以时间片为单位,轮流为每个终端用户服务,每次服务一个时间片。
其特点是利用人的错觉,使用户感觉不到计算机在服务他人。
追求目标:及时响应(依据是响应时间)。
响应时间:从终端发出命令到系统给予回答所经历的时间。
通用操作系统
分时系统与批处理系统结合。
原则:分时优先,批处理在后。
“前台”:需要频繁交互的作业。
“后台”:时间性要求不强的作业。
实时操作系统