来自 操作系统 2020-05-07 00:56 的文章
当前位置: 网上澳门金莎娱乐 > 操作系统 > 正文

本是同根解析Unix内核与Linux大比拼

网上澳门金莎娱乐,大家都知道所有的Unix内核都同宗同源,并且提供相同的API,现代的Unix内核存在许多设计上的相似之处。而且Unix内核几乎毫无例外的都是一个不可分割的静态可执行块(文件)。换句话说,它们必须以完整、单独的可执行块的形式在一个单独的地址空间中运行。Unix内核几乎都需要硬件系统提供页机制以管理内存。这种页机制可以加强内存空间的保护,并保证每个进程都可以运行于不同的虚地址空间上。

Linux内核简介

内核是操作系统的核心 ,其主要功能有:

  • 响应中断,执行中断服务程序
  • 管理多个进程,调度和分享处理器的时间
  • 管理进程地址空间的内存管理
  • 网络和进程间通信等系统服务程序

为了保护系统,通常操作系统被划分为内核空间用户空间,内核独立于普通的应用程序,一般处于系统态,拥有受保护的内存地址和硬件设备的所有访问权限;相对的,应用程序工作在用户空间,仅能访问系统允许他们使用的部分系统资源,并通过系统调用的方式对硬件设备进行访问,同时不同的应用程序不能访问内核划给其他应用程序的内存范围。

内核的活动范围:

  • 运行于用户空间,执行用户进程
  • 运行于内核空间,处于进程上下文,代表某个特定进程的执行
  • 运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中断

Unix内核与Linux内核单内核与微内核设计之比较

单内核和微内核

操作系统内核主要分为两大阵营:单内核和微内核。

操作系统内核可以分为两大设计阵营:单内核和微内核(第三阵营外内核,主要用在科研系统中,但也逐渐在现实世界中壮大起来)。

单内核

内核运行在一个单独的地址空间,因此所有内核服务都在一个大内核地址空间运行,内核间的通信开销很小,所有内核服务都运行在内核态,并处于同一地址空间,这种模式的优点是简单和性能高。大多数Unix系统都设计为单内核。

单内核是两大阵营中一种较为简单的设计,在1980年之前,所有的内核都设计成单内核。所谓单内核就是把它从整体上作为一个单独的大过程来实现,并同时运行在一个单独的地址空间。因此,这样的内核通常以单个静态二进制文件的形式存放于磁盘。

微内核

每个内核服务是一个独立的过程,叫做服务器,每个服务器都有各自的地址空间。仅有强烈要求特权服务的服务器会运行在特权模式下,其他服务器都运行在用户空间。因此系统不能直接调用函数,而是通过进程间通信(IPC)的方式进行消息传递。

所有内核服务都在这样的一个大内核空间中运行。内核之间的通信是微不足道的,因为大家都运行在内核态,并身处同一地址空间:内核可以直接调用函数,这与用户空间没有什么区别。这种模式的支持者认为单模块具有简单和高性能的特点。大多数Unix系统都设计为单模块。

单内核和微内核对比

单内核由于所有的服务运行于同一地址空间,因此可以系统可以直接调用服务,相对于微内核减少了IPC时间,同时不需要上下文来回切换的开销;但是单内核由于所有的服务处于同一地址空间,这样恶意程序容易通过内核服务对系统进行攻击。因此,Linux在单内核的基础上采用了微内核的优点。

另一方面,微内核并不作为一个单独的大过程来实现。相反,微内核的功能被划分为独立的过程,每个过程叫做一个服务器。理想情况下,只有强烈请求特权服务的服务器才运行在特权模式下,其他服务器都运行在用户空间。不过,所有的服务器都保持独立并运行在各自的地址空间。

Linux单内核优化

Linux是一个单内核,其内核运行在单独的内核地址空间,但是Linux汲取了微内核的精华:模块化设计抢占式内核支持内核线程动态加载内核模块

本文由网上澳门金莎娱乐发布于操作系统,转载请注明出处:本是同根解析Unix内核与Linux大比拼

关键词: