什么是操作系统以及如何学习操作系统
2017-11-05 12:19
901 查看
操作系统是什么
计算机是由若干硬件组成:显示器、CPU、内存、主板(提供总线)、键盘、鼠标、硬盘等。计算的发明是帮助人类完成一些计算与逻辑任务。
但是人们不能直接的使用计算机硬件,需要在计算机硬件上包上一层软件,我们使用这些软件来完成一些特定的任务,比如进行数学计算、文字排版、聊天、邮件等。
操作系统就是计算机硬件与应用软件之间的一层软件(或者说是接口),两个目标:1)方便我们使用硬件;2)高效的使用硬件
操作系统管理哪些硬件呢:CPU管理、内存管理、终端管理、磁盘管理、文件管理、网络管理、电源管理和多CPU管理。
网络管理、电源管理和多核管理属于高级操作系统的相关知识。在Udacity的高级操作系统中有讲授。
操作系统的发展历史
操作系统是伴随着计算机的发展而发展的,在任何时期都是以解决当时遇到的实际问题为创新点,大致经历了如下几个时期:第一个阶段,以上古神机IBM7094为代表的计算上的操作系统,计算机的主要目的是大量计算,所以当时的操作系统是一种批处理操作系统,作业一批一批的被顺序执行。输入输出都是磁带。
第二个阶段,计算机开始进入多个行业,需要完成各种不同的任务,一台计算机需要干更多的事,这时候就出现了多道程序操作系统,因为有的作业是计算任务,有的作业是IO类型的任务,所以可以在作业之间进行切换和调度,让CPU忙碌起来。典型代表为IBM OS/360。
第三个阶段,出现了分时操作系统,每个使用计算机的人都可以启动一个作业,作业之间快速的进行切换,而不是像上个阶段那样只有处理IO时,才会换到下个作业。这个时期的代表是MIT的MULTICS。
第四个阶段是,随着小型机的大量普及,出现了Unix和Linux操作系统。从设计上更简单和灵活。同时Windows操作系统也诞生了,它主要是在用户界面方面做了很大的创新与改进。
学习操作系统的三个层次
Learn OS concepts by coding them!
学习操作系统根据学习深浅的不同可以分为三个层次:
层次一:从应用软件出发“探到操作系统”,主要讲解如何使用操作系统提供的接口如:
printf/fork/open/read等。
层次二:从应用软件出发“进入操作系统”:了解操作提供的系统接口是如何实现的,可以自己给操作系统增加服务接口,为新的硬件写驱动程序等。
层次三:硬件出发“设计操作系统”,给一个硬件板子,通过查硬件手册,可以自己配一个操作系统,针对这个板子实现自己的操作系统。
我们要以对照一下Standford的操作系统的学习要求,主要是能完成4个操作系统实验,这4个实验也体现了操作系统的真正核心。
实验一: 扩展线现,实现线程调度
实验二: 实现系统调用,将整个接口剥掉,添加
实验三: 实现虚存管理,扩展实现内存管理
实验四: 扩展文件系统,扩展实现一个文件管理
操作系统相关学习资源
实验楼8个操作系统实验实验环境搭建
实验代码参考
实验手册
相关文章推荐
- 【linux c】什么是野指针以及如何避免野指针_学习笔记_010
- java.io.tmpdir的默认在操作系统的什么位置以及如何配置
- 【OC学习-21】什么是类的类目category和类的延展extension?以及如何创建和注意事项
- 如何搭建云平台,云平台搭建,需要学习什么云技术
- 献给初学者:谈谈如何学习Linux操作系统
- cg profiles,什么是profiles,以及如何使用CGC编译Cg语言
- Linux第二周学习总结——操作系统是如何工作的
- 如何学习Linux操作系统
- vue router 如何使用params query传参,以及有什么区别
- 程序猿应该了解的内容以及程序猿如何强迫自己学习(思考篇)
- Android中滑屏实现----手把手教你如何实现触摸滑屏以及Scroller类详解 (强烈推荐军哥的博客,大家多跟他学习学习)
- 学习笔记 什么是中断向量以及配置中断服务函数的原理
- 什么是RDD以及如何创建RDD
- 什么是最好的网站学习&如何使用Linux系统?
- 你应当如何学习C++(以及编程)
- 我们该如何选择学习什么?
- 如何学习大数据以及学习曲线
- 什么是可变变量以及如何使用
- mybatis学习笔记 一对一 和一对多 以及 如何通过框架直接返回主键id
- 6.文件系统――什么是交换分区以及如何创建和使用交换分区(free,reboot,mkswap,swapon,swapoff)