1.Linux内核简介

Linux内核简介

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

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

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

内核的活动范围:

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

单内核和微内核

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

单内核

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

微内核

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

单内核和微内核对比

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

Linux单内核优化

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

Linux内核版本号

2.6.26.1:2为主版本号;6为从版本;26为修订版本号;1,奇数为开发版本,若是偶数则为稳定版本。

内核开发的特点

相对于用户空间内应用程序的开发,内核开发有一些独特之处,因此需要注意以下事项:

  • 不能访问C库和标准的C头文件(个人理解这些都是系统调用部分的库)
  • 必须使用GNU C
  • 缺乏用户空间那样的内存保护机制
  • 难以执行浮点运算
  • 每个进程只有一个很小的定长堆栈
  • 由于支持异步中断、抢占和SMP,必须时刻注意同步和并发
  • 需要考虑可移植性
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容