Week1 操作系统概述
本笔记是基于Coursera的北大操作系统课程,感觉这是一门很基础很概念的课,看似没什么高深的数学内容,但其实每个部分都包含很细致的算法精华,有兴趣的同学可以根据相关概念的关键字扩展学习。笔记大部分内容是老师讲义PPT的内容,图片也大多来自视频截图。如有错误,欢迎大家讨论和指正。
1. 操作系统做了什么?
以c++的helloworld程序为例
1).用户告诉操作系统执行helloworld程序(如何告知?)
2).操作系统:找到程序的相关信息,检查其类型是否是可执行文件;并通过程序首部信息,确定代码和数据在可执行文件中的位置并计算出对应的磁盘块地址(可执行文件格式?)
3).操作系统:创建一个新的进程,并将helloworld可执行文件映射到该进程结构,表示由该进程执行helloworld程序
4).操作系统:为helloworld程序设置CPU上下文环境,并跳到程序开始处(假设调度程序选中helloworld程序)
5).执行helloworld程序的第一条指令,发生缺页异常。
6).操作系统:分配一页物理内存,并将代码从磁盘读入内存,然后继续执行helloworld程序。如果程序很大,则会产生多次缺页异常,多次读入内存。
7).Helloworld程序执行puts函数(系统调用),在显示器上写一字符串。
8).操作系统:找到要将字符串送往的显示设备,通常设备是由一个进程控制的,所以,操作系统将要写的字符串送给该进程。
9).操作系统:控制设备的进程告诉设备的窗口系统,他要显示字符串,窗口系统确定这是一个合法的操作,然后将字符串转化成像素,将像素写入设备的存储映像区
10).视频硬件将像素转换成显示器可接受的一组控制数据信号
11).显示器解释信号,激发液晶屏
12).然后在屏幕上就可以看到“hello world”了。
2. 操作系统的定义与作用
2.1操作系统的定义
操作系统是计算机系统中的一个系统软件,是一些程序模块的集合:
1).它们能以尽量有效、合理的方式组织和管理计算机的软硬件资源;
2).合理地组织计算机的工作流程,控制程序的执行 并在程序执行的过程中向程序提供各种各样的服务功能;
3).使得用户能够非常灵活、方便地使用计算机,使整个的计算机系统能够高效率地运行
关键词:
1).有效:系统效率,资源利用率
CPU利用率是否高?I/O设备是否忙碌?
2).合理:各种软硬件资源的管理是否公平合理
不公平、不合理会产生什么问题?
3).方便使用:两种角度,用户界面与编程接口。
2.2 操作系统的作用
1).资源的管理者→有效
操作系统管理什么资源?
硬件资源:CPU、内存、设备(I/O设备、磁盘、时钟、网卡等)
软件资源:磁盘上的文件、各类管理信息
操作系统如何管理资源?
i. 跟踪记录资源的使用状况——数据结构
如:哪些资源空闲,分配给谁使用,允许使用多长时间等。
ii. 确定资源