《程序是怎么跑起来的》读书笔记(9)-- 操作系统

操作系统历史

操作系统:计算机运行不可或缺的控制程序,以及在控制程序下运转的为其他软件运行提供操作环境的软件的统称。
计算机尚不存在操作系统的时候,完全没有任何程序,因此程序猿就需要编写出处理相关的所有程序。用机器语言编写程序,在使用开关将程序输入,十分麻烦。
然后,就有人开发出了兼具有加载和运行功能的监控程序,这就是操作系统的原型。

通过事先启动监控程序,程序猿可以根据需要将各种程序加载到内存中运行。
监控程序可以认为是操作系统的原型。随着时代的发展,发现一些基本输入输出的程序都是一样的,于是也被放进监控程序上,后来越来越多的功能被追加到监控程序上,比如控制硬件的程序,编程语言处理器以及各种实用程序等。
因此,操作系统并不是单独的一个程序,而是多个程序的集合体。

要意识到操作系统的存在

操作系统出现以后,就不需要编写直接控制硬件的程序了,但是我们每个人都需要了解硬件的知识。
程序猿很少关注现实世界就是硬件的。
例如c语言的打印当前时间的函数,并不是本地代码直接控制计算机配置的时钟IC,而是通过操作系统来间接控制硬件的。
因此编程就从面向硬件的变为面向操作系统的。

系统调用和高级编程语言的移植性

操作系统的硬件控制功能,通常是通过一些小的函数集合体的形式来提供的,这些被叫做系统调用(System call)
c语言等高级编程语言并不依存于特定的操作系统。不管是windows还是mac,都几乎是相同的源代码。因此高级编程语言的机制就是实用独自的函数名,然后在编译时将其转换成相应操作系统的系统调用。
高级编程语言中,也存在可以直接调用系统调用的编程语言。不过,这种应用移植性并不友好。

操作系统和高级编程语言时硬件抽象化

由于通过操作系统提供的系统调用,程序就没必要编写直接控制硬件的程序了,而且甚至也无需考虑系统调用的存在。这是因为操作系统和高级程序语言使硬件抽象化。这是个很了不起的处理
文件是操作系统对磁盘媒介空间的抽象化。第5篇里介绍过,作为硬件的磁盘媒介,就如同树木的年轮一样,被划分为多个扇区,并以扇区为单位对磁盘进行读写。
但是代码并没有出现操作I/O指定扇区,都是一直使用文件这个虚拟的概念,操作系统会自动申请分配用来管理文件读写的内存空间。
程序猿不用关注文件读写的内存空间的内容实际在哪里,但需要意识到用来操作磁盘媒介的某些信息在某个地方存着

关于windows操作系统

windows操作系统

tips

以后说程序的时候应该说成应用
因为程序是操作系统、中间件、应用等所有软件的总称。

发表评论

电子邮件地址不会被公开。