操作系统--硬件与软件的桥梁
来源:互联网 发布:淘宝网包邮服务 编辑:程序博客网 时间:2024/05/20 10:56
现代计算机系统通常由一个或多个处理器,主存,磁盘,打印机,键盘,鼠标,显示器,网卡,还有各种各样的输入输出设备组成(数位板,扫描仪等等)
而操作系统就是在应用软件和底层硬件的一层抽象,让我们在编写应用程序时不用了解硬件的细节,而直接调用抽象的接口。
例如读取磁盘,可能需要翻看对应硬件的说明手册,知道有哪些指令,硬件一般还伴有一个简单的控制器,与CPU通过控制总线相连,就是用来传输这些指令以及返回值,然后控制器真正与硬件交互之后,再讲返回值放到指定的地方。
这些指令往往相当的底层,而且可能涉及到大量的硬件细节,读取一个磁盘可能需要要发送以下有关的参数到磁盘的控制器端口。例如磁道的扇区数,物理介质的记录格式,扇区间隙….
做过嵌入式的应该有体验,在开发程序中常常要查看硬件的指令手册,不过嵌入式上的程序一般较为简单,而且很多嵌入式程序都是独占整个硬件的,所以有些程序就是直接跑在硬件上,自己来写所有的硬件访问细节而不用系统(系统所要占用比较大的空间和时间也是一个问题)(当然现在一些用的多的嵌入式平台也有一些操作系统了,历史就是这样轮回的,在合适的时机,面对某种问题,就会有类似的解决方法被提出。)
但是现代计算机比嵌入式拥有更多的硬件以及各种各样的硬件,应用程序员不可能记住每一种硬件,例如每一种键盘的指令细节,所以转而由该硬件的生厂商来提供驱动。
驱动提供了一层薄薄的封装,然后驱动被操作系统加载,操作系统再做一层封装,此时应用程序员可以使用的接口已经与底层细节完全无关,相当抽象了,可能只需要发送读取多少字节,就可以取到磁盘上的数据。
再说一些有意思的东西,操作系统最重要的功能是提供了一层对底层的抽象,而不用让应用程序员关心麻烦的硬件细节,说到底就是一种社会分工,分工可以让每个人各司其职,发挥出更大的效率。
社会分工本身是经济学的概念,但这种类似的概念即使是在计算机软件领域也多次出现。稍微列举一下
操作系统—使上层应用可以不用关心底层是什么硬件
虚拟机—使虚拟机上的应用可以不用关心底层是哪个操作系统
浏览器—使浏览器上的应用可以不用关心底层是哪个操作系统
类库/框架—可以使使用该类库/框架的应用不用关心该领域的底层操作细节(比如一个游戏引擎可以使你专注于设计,而不用关心底层实现,以及各种效率问题)
说白了,以上所列的这些东西所做的,都是在一个合适的界限,将东西分类了开来。(当然,这个界限可能相当难找,而且在历史上也曾多次变动)
欢迎关注我的github https://github.com/luckyCatMiao
- 操作系统--硬件与软件的桥梁
- 操作系统的硬件软件资料
- 软件的桥梁
- 硬件与软件的类比
- 软件工程师的硬件与软件
- 软件工程师的硬件与软件
- 软件与硬件的思考
- 软件与硬件的关系
- 操作系统与硬件
- linux硬件软件操作系统查看
- 软件vpn与硬件的优势对比
- 我的电脑:软件与硬件配置
- 软件与硬件负载均衡的比较
- 软件与硬件负载均衡的比较
- 硬件防火墙与软件防火墙的区别
- 软件与硬件负载均衡的比较
- 项目中软件与硬件的沟通
- 软件与硬件的区别20171205
- Docker
- 3.Java变量初始化顺序
- Creational模式
- “戏”说spark---spark 内存管理详解
- ubuntu16.04 sudo:无法解析主机 解决方案
- 操作系统--硬件与软件的桥梁
- 电子科技大学第九届ACM趣味程序设计竞赛第二场(正式赛) 题解
- 算法提高 三进制数位和
- LintCode刷题记录入门题汇总
- C++学习笔记--类对象、继承、多态的内存模型
- Big Data Developer(Day01)
- const常量
- 【Android】一个例子解释创建者模式
- java基础系列(二)