1.1-程序是如何运行的
图——由程序到结果的演变
程序设计语言
|
高级语言程序 ——人工编写
|
编译器和汇编器
|
机器语言程序
|
操作系统(加载器,文件,内存)
|
进程
|
操作系统(CPU调度,进程管理)
|
CPU上执行 ——程序语言执行环境+指令集结构
|
操作系统(文件,输入输出)
|
结果
程序的运行至少需要以下4个因素:
1.程序设计语言
2.编译系统
3.操作系统
4.指令集结构(计算机硬件系统)
————事实上:程序可以直接在机器语言或汇编语言上编写——"低级语言"。用这种语言编写的程序无需经过编译器的翻译可以直接在计算机指令集上执行。
————如果是汇编语言编写的程序,需要经过汇编器翻译即可加载执行。
1.2操作系统到底是什么?操作系统到底操控什么?
操作系统是掌控计算机上所有事情的软件系统
功能包括:
1.替用户及其应用管理计算机上的软硬件资源
2.保证计算机资源的公平竞争和使用
3.防止对计算机资源的非法侵占和使用
4.保证操作系统的自身正常运作
1.3管理者和魔幻者
1.4操作系统与应用程序之间的关系
硬件——操作系统 [当前关注点---------------]
应用软件——操作系统 [系统编程或底层编程的关注点]
以下是应用软件和操作系统的关系:
操作系统通过虚拟机器界面给应用程序提供各种服务,应用程序在运行过程中不断使用操作系统提供的服务来完成自己的任务。
例如:程序在运行过程中需要读写磁盘,这时候就需要调用操作系统的服务来完成磁盘的读写操作。
当调用这些服务时,控制从应用程序转移到操作系统,而操作系统在完成这些服务后将控制返回给应用程序。
在这种思维下:
应用程序——主程序 操作系统——子程序
从另一个角度看,会得出相反的结论。应用程序不能在操作系统启动之前启动(除非很厉害的病毒)。在此之后每次启动一个应用程序,都相当于操作系统将控制权转移给应用程序;而在应用程序执行完毕后,控制权又回到操作系统。
在这种思维下:
操作系统——主程序 应用程序——子程序
上面的两种说法完全相反,没有对错之分,只有好坏,一切取决于你的观点。
实际上操作系统和各个应用程序之间是相互调用。是一个很复杂的动态关系,弄懂这种复杂的关系就是接下来的目的。
1.5操作系统的范畴
——操作系统的5个核心构建:
1.CPU管理——进程管理——如何分配CPU给不同应用和用户
目的:
一.公平
每个程序都有机会使用CPU
二.非阻塞
任何程序不能无休止的阻挠其他程序的正常推进。就像世界缺了谁地球都照样旋转
三.优先级
某些程序比另外一些程序优先级高。如果优先级高的程序开始运行,则低优先级的程序就要让出资源
2.内存管理——虚存
一. 管理缓存,主存,磁盘,磁带等存储介质所形成的内存构架
二.让很多程序共享一个物理内存。这需要对内存进行分割和保护,不让一个程序访问另一个程序所占用的内存空间,专业术语称为——不能 越界。
3.外存管理(存储管理)——文件系统
文件系统的主要目的:
将磁盘(硬盘)变成一个很容易使用的存储媒介提供给用户使用,这样我们在访问磁盘时无需了解磁盘的物理属性或数据在磁盘上的精确位置,诸如磁道,磁柱,扇面等。
4.设备(I/O)管理——管理输入输出设备
一.屏蔽不同设备的差异性。就是用户用同样的方式访问不同的设备,从而降低编程难度。
二.提供并发访问。将那些看上去并不具备共享特性的设备,如打印机,变得可共享。
5.批处理管理
批处理提供一种无需人机交互的程序运行模式。不需要人交互,批处理交给计算机,主要达到吞吐量的最大化,单位时间内完成的任务最多。
网友评论