操作系统怎么来的?

1.操作系统怎么来的?
没有操作系统之前,计算机处于裸机状态。想要控制计算机,程序员必须要在熟悉计算机硬件所有细节的基础上精于汇编语言程序设计,通过汇编语言程序来控制计算机。但是,时间长了,人们发现实现硬件操作的汇编语言程序模块具有通用性,可以将这些模块通过接口的形式作为一种通用的软件提供给用户,用户在装有这种通用软件的计算机上来编写汇编语言程序就非常容易。这种提供了一些例程接口,从而使应用程序可通过这些接口对计算机进行操作的软件,叫做计算机硬件的抽象层HAL。HAL作为操作系统的最底层,是对计算机硬件的第一次封装。更进一步,如果在HAL和应用程序之间再添一层;或者说,在HAL上再加一层,即使用高级语言再编写一些程序模块(例如C函数),并在这些模块中,通过调用诸如磁头移动、定位、读写磁盘等这些底层用汇编语言编写的程序模块(即HAL),把这些繁杂的硬件操作根据需要适当地组合更进一步地封装起来,同样形成一些具有通用性的模块,但是这些模块是用高级语言编写的,那用户就更加方便了。事实正是如此,现在应用程序设计人员在编写应用程序时使用的read()、read()等功能更为综合强大的函数,就是系统软件在硬件抽象层HAL的基础上为用户提供的用高级语言编写的程序功能模块。正因为应用程序时使用这些程序模块来操作计算机硬件工作的,所以把这些模块的集合就叫做操作系统。简言之,若干汇编语句构成底层程序模块HAL,若干HAL构成高级语言程序模块函数,若干函数构成操作系统。
2.函数库是什么?
为了方便用户,操作系统还提供了一些与硬件操作无关的通用程序模块(例如,开方、取整等一些数学运算函数),并把它们与上述的read()、write()等和硬件操作有关的函数组成函数库,以供应用程序来调用。这些函数(模块)也被叫做API(Application Programming Interface)函数,更准确的描述应该是系统调用。系统调用就是内核提供的一组用户进程与内核进行交互的接口。系统调用是用户空间访问内核空间的唯一手段。
从计算机应用程序的角度来看,API中与硬件相关的那些函数就是对计算机硬件的第二次抽象和封装
从用户的角度来看,计算机的功能更强大了。因为它能接受意义更为抽象的高级语言指令来工作,原来用户必须用几十条甚至几百条汇编语言指令,或者多个汇编语言程序模块HAL来完成的任务,现在只用一条或几条高级语言指令就可以完成。
这样一来,应用程序对计算机硬件进行操作就变得十分简单了:当应用程序需要硬件系统的某种服务时,只需以软件的方式提出要求即可。至于硬件是如何提供这个服务的,那是操作系统的事情,应用程序完全可以不予理会。
从计算机的角度来看,操作系统扩充了计算机硬件的功能,使得带有操作系统的计算机比只有硬件的计算机功能更强、更容易被编程操作。
从应用程序设计人员的角度来看,操作系统是计算机硬件系统与应用程序之间的接口。
所以又说,计算机操作系统是对计算机硬件的一个软件包装,它为应用程序设计人员提供了一个便于使用的虚拟计算机。
3.当用户应用程序读取磁盘数据时,用户应用程序、计算机操作系统、计算机硬件之间的关系如下图:
在这里插入图片描述
4.JVM是通过谁和操作系统交互的?
结合《一行 Java 代码是怎么执行的?》提个问题,假如在java中有代码最终调用了操作系统的read方法,那在从.java文件到机器码的过程中是如何处理的?我认为应该是Java解释器将java字节码中read方法相关的代码解释成了操作系统的read方法对应的汇编代码,所以据此认为JVM是通过Java解释器来和操作系统交互的。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值