漫谈操作系统 (简介) -1
在准备写这一系列博客之前,为此准备了很久,由于本人的语文水平长期徘徊在及格线上,所以对写一些文字一直很忐忑。但是思考良多终于想为自己10年的操作系统相关学习和工作的经验写点什么,一个是为了记录自己这些年的所学,不至于日后发现所学都荒废了,二是为了能够对自己在操作系统方面的知识做一个总结和回顾。 虽然有些托大,但是心里却是是这么想的。
在过去的这些年来,对操作系统的了解主要集中在上学时所学的UC/OS2, Linux,工作中接触的FreeBSD改装版和其他一系列各种类型的操作系统,虽然各个系统有多多少少的不同,但都是为了完成对底层硬件资源的封装,从而达到分时复用硬件资源,并对应用程序提供统一的接口抽象。在这里这个统一应用程序接口抽象主要指 POSIX 标准系统调用接口,当然比较小型的嵌入式系统可能并不提供POSIX接口,但是它也会提供类似的统一接口给应用程序使用,而一般在此类接口之上我们能够自己实现POSIX兼容接口,从而兼容更多的应用程序。
下面我们从操作系统的简单分类开始讲起
广义的操作系统和狭义的操作系统
广义的操作系统指的是Android, YunOS, CentOS, Ubuntu, iOS, MacOS等这类操作系统发行版,它包括一个Linux内核或者Mach+FreeBSD内核,以及其上的整个中间件基础库和应用程序生态系统,它们要么工作在终端嵌入式领域 ,要么工作在服务器领域,直接对上层提供整个应用环境的所有基础业务,有的甚至提供应用程序本身。狭义的操作系统指的是Linux, FreeBSD(内核), LittleKernel, L4等操作系统内核,和广义的操作系统所不同的是,他们不包括内核之上的中间件和应用,仅仅指操作系统中对上屏蔽硬件差异性,并且提供分时复用硬件资源的内核态可执行程序。内核通常工作在硬件处理器的特权运行状态,享有高系统权限,能够完整(相对应用软件)的访问整个硬件提供所有硬件资源和能力 (这其中可能又例外,比如添加了虚拟化层或者 Secure Monitor层的硬件,其操作系统可能只能访问其中有限的硬件资源)。
</