《程序是怎样跑起来的》——第9章 操作系统和应用的关系

一、操作系统功能的历史
1、在计算机中尚不存在操作系统的年代,完全没有任何程序,因此程序员就需要编写出处理相关的所有程序。用机器语言编写程序,然后再使用开关将程序输人,这一过程非常麻烦。于是,有人开发出了仅具有加载和运行功能的监控程序,这就是操作系统的原型。(操作系统(OperatingSystem)也称为基础软件。操作系统是计算机运行时不可或缺的控制程序,以及在控制程序下运转的为其他软件运行提供操作环境的软件的统称。另外,在操作系统上运行的应用也称为“应用程序”)
示例:监控程序可以说是操作系统的原型

2、操作系统的演变
(1)初期的操作系统=监控程序+基本的输入输出程序

(2)操作系统是多个程序的集合体


二、操作系统
1、操作系统的作用:是程序员不在制做硬件,而是通过利用操作系统的功能来直接控制硬件的程序。为程序员带来了巨大的便利。
示例:表示当前时间的应用及结果


(1)通过time_ttm;,为time_t类型的变量申请分配内存空间。
(2)通过time(&tm);,将当前的日期和时间数据保存到变量的内存空间中。
(3)通过 printf("%sn",ctime(&tm));,把变量内存空间的内容输出到显示器上。
2、应用程序控制硬件:在操作系统这个运行环境下,应用并不是直接控制硬件,而是通过操作系统来间接控制硬件的。变量定义中涉及的内存的申请分配,以及time()和 printf()这些函数的运行结果,都不是面向硬件而是面向操作系统的。操作系统收到应用发出的指令后,首先会对该指令进行解释,然后会对时钟IC(实时时钟)和显示器用的I/O进行控制。
示例:应用程序经过OS间接地控制硬件

计算机中都安装有保存日期和时间的实时时钟(Real-timeclock)
三、系统调用和高级编程语言的移植性
1、系统调用:操作系统的硬件控制功能,通常是通过一些小的函数集合体的形式来提供的。这些函数及调用函数的行为统称为系统调用(systemcall),也就是应用对操作系统(system)的功能进行调用(call)的意思。
2、高级编程语言的移植性:C语言等高级编程语言并不依存于特定的操作系统。高级编程语言的机制就是,使用独自的函数名,然后再在编译时将其转换成相应操作系统的系统调用(也有可能是多个系统调用的组合)。移植性指的是同样的程序在不同操作系统下运行时需要花费的时间等,费时越少说明移植性越好。
示例:高级编程语言的函数调用在编译后变成了系统调用

四、操作系统和高级编程语言使硬件抽象化
1、通过使用操作系统提供的系统调用,程序员就没必要编写直接控制硬件的程序了。而且,通过使用高级编程语言,有时甚至也无需考虑系统调用的存在。这是因为操作系统和高级编程语言能够使硬件抽象化。
2、物理上的磁盘媒体被抽象化成了文件

3、Windows操作系统的特征:
(1)32位操作系统(也有64位版本)
(2)通过API函数集来提供系统调用
(3)提供采用了图形用户界面的用户界面
(4)通过WYSIWYG(WYSIWYG是What You See Is What You Get 的略写。意思是,显示器上显
示的文本及图形等(WhatYou See),是(1s)可以原样输出到打印机上打印(What You Get)的,)实现打印输出
(5)提供多任务功能
示例:通过时钟分割实现多任务的机制

(6)提供网络功能及数据库功能

示例:应用可以利用操作系统和中间件的功能

(7)通过即插即用实现设备驱动的自动设定
posted @ 2024-02-23 17:25  加克  阅读(12)  评论(0编辑  收藏  举报