对于操作系统的探索和minix的思考

发表于:2014-6-06 10:25

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:sunemp    来源:51Testing软件测试网采编

  首先声明这里的文字都是我个人的一些菜鸟型的思考,没有任何保证,不喜勿喷!
  这个学期学习操作系统,有点喜欢,写系列文章记之!先做一些理论复习,后结合minix谈!
  用的是现代操作系统,第一章无非是对于操作系统的一些历史探索:
  学习操作系统前,首先提出一个问题,什么是操作系统?为什么会有操作系统这样一个东西存在?
  我觉得明白这点是很重要的,你不知道这个东西有什么意义,一味的跟着老师学,最后越学越怀疑自己,你TMD到底在学什么?我们先假设没有操作系统,这个是可以的,现在的很多嵌入式设备(相当于微型PC)都没有系统,当然很多也可以支持你装系统,但是如果没有系统会怎么样?我们习惯了在windows下写东西以至于我们忽略了为何存在这样一种东西!如果有硬件开发经验的人就知道,你得直接对硬件操作,对于内存的每一个byte你要清楚的知道它的地址,你得往某些外设的寄存器写值,这是非常令人厌烦的工作,而当你的项目需要和现在的这种计算机系统打交道的话,对不起,你可以跳湖自杀了!所以,和硬件直接打交道不是一件让你高兴的事情,同时我们也没有必要这样做,操作系统产生了,它把硬件给包装了,让我们看到的是一个个美丽的api,我们直接调用api,至于底层,我们就不用管了!
  不过,你也可以看出,一般写底层的人更牛逼,越靠近底层越繁琐,这样后面的问题我们回答了,当然操作系统还有另外一个层面的功能,下面再说,不过你问我操作系统是什么,这个还真不好定义,不过我归纳操作系统是把硬件抽象为用户提供简单借口同时管理资源分配!
  向下,很多操作系统把硬件全部抽象为文件,我们只需要通过操作系统去简单的操控这些文件即可(当然没那么简单),向上,现在的系统往往运行多道程序,每个程序都想访问硬件,这要是乱了怎么办?呵呵,操作系统就会维护这种秩序,所以操作系统为我们和硬件提供了美丽的接口同时让我们的这种交流处于一种规律下!
  最后我们不妨称之为抽象者和资源管理者!
  我们接着大概介绍一下历史和其他杂七杂八:
  首先最早的真空管你就不要想什么操作系统了,那还是机器码时代,到了晶体管时代,严格意义上也没有这个概念,到了集成电路的时候,IBM最早推出了操作系统,开始了一系列的发展,首先比较大的进步是“多道程序设计”的支持,最开始的时候,我们如果在等待I/O,如果这个I/O很繁重,我们必须坐那等,浪费了大部分时间,CPU什么也干不了,这是不能容忍的,我们可以把内存分为好几块,每一部分做不同的事情。后来又提出来分时系统和兼容分时系统,其实这些我们只要了解即可,就不再介绍了,各种各样的操作系统为用户而活,有什么需求,就有什么出现。
  操作系统的特点:
  共享,我们在操作系统的平台上运行多个程序,这些进程需要访问有限的硬件资源,而我们操作系统要对这些资源做合理的分配和和使用,使资源能被进程轮流使用。
  并发,我们希望所有的事情能够一起往前跑,而不是一个个依次跑,这样速度才会快,可是我们无法达到并行(有几个cpu另说),对于单核下我们不能允许一个进程一直霸占着资源,我们希望模拟并行,所谓并发,就是通过时间片轮转,一个个轮流着来,而我们操作系统需要很好的维护这种并发过程。
  虚拟,典型的例子就是内存,首先我们不希望直接写到内存某块,这样可能破坏其他数据,我们把用户和真实内存隔开,告诉你有一个多大的虚拟内存,往里面写东西,我来帮你映射到物理内存,这样,我知道怎么分配,用户不知道也不想知道,还是一个接口的意思。
  异步性或者说不确定性,现在的多道任务操作系统无法保证你的执行顺序和执行时间,但我们应该保证有确定的结果。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号