
对待知识领域,我们总喜欢去下一个定义。 *** 作系统是我们每天工作都要使用的东西,由于现代商业 *** 作系统的复杂性和没有统一的标准,若对一个 *** 作系统下定义并不能精确的描述 *** 作系统所属领域。根据经验我们可以认为 *** 作系统就是在整个应用系统中负责最基本功能和系统管理的那部分。包括内核、设备驱动程序、启动引导程序、命令行Shell或者GUI界面、基本文件管理工具和系统工具。
严格的来讲linux只是 *** 作系统内核本身,广义上的linux则常用来指基于linux内二的完整的 *** 作系统,它包括GUI组件和其它许多工具。
GUI其实只是 *** 作系统的表象,内核才是 *** 作系统内在的核心。系统的其它部分必须依靠内核所提供的服务,像管理硬件设备、分配系统资源等,内核有时候被称为管理者或者 *** 作系统核心。
通常一个内核由负责响应中断的中断服务程序,负责进程调度的CPU调度程序,负责管理进程地址空间的内存管理程序以及网络、进程间通信等系统服务共同组成的。
内核在有安全机制的 *** 作系统中不同于普通程序,一般处于系统态(内核态),拥有受保护的内存空间和访问硬件设备的所有权限。这种系统状态和被保护起来的内存空间,统称为 内核空间 。
与内核空间相对的,用户所执行的应用程序在用户空间执行。用户态的应用程序只能访问允许它们使用的系统资源,并且只使用某些特定的系统功能,不能直接访问硬件,也不能访问内核划分给其它应用程序的内存空间。
应用程序通过系统调用来和内核通信,当一个应用程序发起系统调用时,内核便代其执行。在这种情况下应用程序通过系统调用在内核空间运行,而内核被称为运行在进程上下文中。应用程序通过系统调用进入内核空间时应用完成其工作的基本方式。
*** 作系统内核可分为两大阵营:单内核和微内核。
单内核是一种较为简单的设计,通常以单个静态二进制文件存储在磁盘中,整体上作为一个单独的大过程,所有的内核服务都在这样的一个大内核地址空间上运行。内核服务都处于内核态,并身处同一内核地址空间,之间可以几乎无性能损耗的相互通信。
单内核具有简单和高性能等特点。
微内核根据功能被分割成多个独立的过程,每个过程都叫做一个服务器。所有的服务器都运行在各自的地址空间上(大部分处于用户空间),只有强烈请求特权服务的服务器才运行在特权模式下。
微内核服务器之间不能直接调用函数通信,而是通过 消息传递 通信。系统采用进程间通信(IPC)机制,服务之间各自独立,通过IPC互换消息,有效的避免了服务之间的失败传染。
IPC机制的开销远高于函数调用,而且在运行时还会牵扯到内核空间和用户空间上下文切换,所以消息传递需要一些开销。所以在内核的实际实现上大部分微内核的 *** 作系统也会让大部分的服务放置与内核中,这样就可以直接调用函数,消除消息传递的开销。
windows NT和Mach(Mac OS X)都是典型的微内核,不过在实际实现上,其所有服务都运行在内核空间。
linux是一个单内核,不过linux汲取了微内核的精华,并拥有模块化设计、抢占式内核、支持内核线程以及动态装载内核模块等特性。
linux内核在设计时充分参考了已有的很多UNIX的内核实现,并且有一些创新方案。linux内核和传统的UNIX系统之间存在一些显著的差异:
本文的写作和学习中参考了以下资料
1.《Linux Kenel Development ~ Thrid Edition 》
常用的Linux版本主要有:
1、Redhat 版本5.5和6.0最新;培训、学习、应用、知名度最高的Linux发行版本,对硬件兼容性来说也比较不错,版本更新很快,对新硬件和新技术支持较好。
2、Debian 版本5.0和6.0最新;社区版的Linux来说是较好的,文档和资料较多,尤其是英文的。但在国内的占有率有一定的局限性。关键是上手难,但在所有的Linux发行版本中,这个版本应该说是最自由的。
3、SuSe 版本11和11.4最新;最华丽的Linux发行版,很多人都这样说,X windows和程序应用方面做的确实不错。尤其与Microsoft的合作关系,应该是在所有的Linux发行版本中最亲密的。
相关内容:
Linux是一套免费使用和自由传播的类Unix *** 作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的 *** 作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络 *** 作系统。
1、Linux由众多微内核组成,其源代码完全开源。
2、Linux继承了Unix的特性,具有非常强大的网络功能,其支持所有的因特网协议,包括TCP/IPv4、 TCP/IPv6和链路层拓扑程序等,且可以利用Unix的网络特性开发出新的协议栈。
3、Linux系统工具链完整,简单 *** 作就可以配置出合适的开发环境,可以简化开发过程,减少开发中仿真工具的障碍,使系统具有较强的移植性。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)