操作系统笔记 Lecture 1 概论

第一章

操作系统笔记 Lecture 1 概论

文件系统的层次:字节流=>字符流

高级语言程序–转换并编译为–>目标代码–链接为–>可执行程序–装载到–>内存

注意:可执行程序不是机器语言,而是扩展的机器语言。

操作系统的演进:

  1. 卡片时代:装入程序,由操作员手动装入程序。后来操作员与程序员分开,使得程序可以模块化使用,提高了运行效率。但是尽管这样,而且后来纸带被磁带取代,仍然存在一个问题,就是机械输入(卡片读取)与电子速度(计算机的速度)严重不匹配。
  2. 后来,磁盘出现,解决了机械与电子速度不匹配的问题。与螺旋式储存数据的光盘不同,磁盘有很多盘片,每个盘片上的数据呈同心圆分布,这样就是一个三维的储存结构,使得读取速度大大增加。
  3. 再后来引进了汇编语言与作业控制语言,才逐渐出现了操作系统的概念。

操作系统是一个巨大工程

  • 软件工程严格来说不是一门科学,而是一种工程,是一种“伪科学”。因为一个软件开发的过程有很多的不确定性。
  • 可以说最早对软件工程提出要求的就是操作系统开发。最早可以追溯到上个世纪五十年代(?存疑)美国国防部要求MIT开发一款操作系统,然而经过很多时间花费了很多物力财力,结果证明:个人开发操作系统是一件不可能完成的事情。正是因为操作系统作为一个巨大的工程,要求软件工程师用工程化的管理方式实现软件的开发、运行和维护,美国的大学逐渐开始开设软件工程专业。
  • 对软件工程提出进一步要求的是软件管理系统。美国通用汽车公司开发信息系统的时候发现,作为一个软件管理系统,更重要的是客户的需求,而不是个人的开发能力。所以从此软件工程不再局限于研究工程的问题,而更多的开始专注于需求的确定与开发的问题。

操作系统的两大功能

操作系统两大功能:资源管理、控制程序执行。

资源分配

设备的分配方式有两种,一是“独占”,二是“并发”。

资源的分配方式有三种:静态方式(例如:轮询,使用率低)、动态方式(需要且空闲时分配资源,但是对相同资源的需要与占有可能产生死锁)、资源抢占方式(优先级更高的时候直接抢夺资源,但是被抢占资源的资源需要回滚,比较复杂)

控制程序执行

多道程序的方式可以解决与CPU电子速度不匹配的问题——程序流水线方式

于是我们用这样的操作系统来解决这四大问题:

问题 解决
如何使用资源 服务例程
如何复用CPU 进程调度
如何使得CPU与I/O更好并行 设备控制器与通道
如何让出CPU 中断机制

什么是“陷入”?有一些行为,例如中断,普通权限程序不能进行,只能交由操作系统这一“超级程序”执行,操作系统对普通程序具有生杀予夺的权利,那么这样的过程我们就叫做“陷入”。


本博客同步发于我的个人主页:www.frostwing98.com