首先我们需要解决的问题是操作系统是什么,其本质上就是一段计算机程序,用于管理计算机的硬件和软件资源,操作系统需要处理很多事务,如管理与配置内存、决定系统资源的优先次序、控制I/O设备等。一个计算机系统可以分成三层,如下图所示:
计算机系统的组织结构图我们将计算机操作系统的特征分为四个方面,下面将通过几段程序,依次进行说明。
一、CPU的虚拟化
编写如下的c程序
程序运行指令 common.c common.h cpu.ccpu.c的功能是打印你输入的字符串,然后在一个无限循环的函数里spin一秒钟,这里提一下在运行了上述的函数之后,需要使用指令
killall cpu
来终止整个程序的运行,cpu是指生成的可执行文件的名字。我们观察结果会发现虽然我们同时运行了多个程序,但是所有程序都会输出结果,结果是cabcabcab....这样子的无限字符串序列。即使我们只有一个物理cpu,这种现象依然存在,即说明操作系统通过某种机制令每个应用程序都感觉自已拥有整个cpu,会直接执行。
二、内存的虚拟化
编写如下的程序,
mem.c输出结果中的pid表示进程的id,在操作系统中每个进程都有系统分配的独一无二的id来做相互之间的区分,从上图的结果我们可以发现二者是并行实现的,而且二者被分配了同样的地址!是不是很神奇!这说明cpu通过某种机制让应用有完整的虚拟地址空间。
三、并发性
程序如下,
运行结果 threads.c在threads.c中我们创造了两个子线程,每一个线程都对一个共享的全局变量做设定次数的 ++ 操作,但是我们发现这个结果是不确定的,这说明这两个线程的执行并不是严格并发的,操作系统需要去控制线程的并发。
四、持久性
程序如下:
执行操作 io.cio.c创建了一个文本文档,并且在里面存储了字符串,无论我们用什么物理存储装置,我们都可以访问到这个路径以及里面的文件,这说明操作系统提供了文件系统来做一个持久性的存储。
网友评论