1004
此文试图回答以下问题:
- 为什么需要学习操作系统?
- 操作系统可以拆分成哪几个部份?
- 计算机程序是怎么运行起来的?
-
为什么需要学习操作系统?
答:这个问题可以换成为什么学好编成语言需要了解操作系统?答:因为程序语言相当于是人和计算机之间的中介,我们依靠程序语言和计算机进行沟通,安排他们替我们做事。而程序语言显然不是计算机硬件(任务直接执行者)能读懂的,需要经过一级一级的翻译。而其中操作系统便是连接硬件和客户端(应用端)最重要的桥梁。举例说来,我们平时常用的单击双击拖动等鼠标操作,键盘输入汉字/字符等都是直接作用给了操作系统,操作系统经过一系列复杂的转换将这些信号以数字信号的形式传递给硬件。
所以,我们对计算机下达的几乎每一个指令都会经过操作系统,为了设计出更友好更高效的程序必须了解操作系统。
另外,因为操作系统本身也是程序,本身就蕴含着很多巧妙的设计思想。所以如果能学好操作系统的话,就意味着程序设计能力有了一定的水准。 -
计算机程序是怎么运行起来的?
答:大致都会经过如下几步:
a. 源程序经过编译器/解释器等变成机器语言
b. 机器语言加载到内存,形成运动中的程序,也就是“进程”(需要操作系统的帮助)
c. 进程被调度到CPU上运行(同样需要操作系统帮助)
d. 然后,在CPU上执行的机器语言指令需要变成能够在一个个时钟脉冲里执行的基本操作,这需要指令集系统和硬件的支持。
注意:整个程序的执行过程实际上当然不是像上述流程那样顺次进行的,而是充满了穿插和交互。比如硬件的执行肯定是贯穿始终的。另外,操作系统起到的平台作用也是贯穿始终的。
从中可以看出,程序的运行至少需要如下四个因素:
程序设计语言;
编译系统;
操作系统;
指令集结构(计算机硬件系统)。
- 操作系统可以拆分为哪几个有机的部分?
答:先探讨以下一下操作系统充当的角色。
像是魔术师:
把差的东西变好,复杂东西变容易,相对于裸机编程。
少的东西变多,虚拟内存抽象,用户感觉物理内存无限多。
像是管理者:
CPU管理(进程管理);
内存管理;
外存管理;
I/O管理。
引用操作系统之哲学原理的目录回答此问题:
第六篇:I/O原理
第五篇:文件原理
第四篇:内存原理
第三篇:线程原理
第二篇:进程原理