linux内核的功能有哪些,由哪些部分组成 一部分对应一个功能哈哈

linux内核向上为应用层提供访问硬件的接口,或者说方法,同时又管理着应用层线程的调度管理。换一种说法内核有哪些部分组成?根据他的功能就能推理出来,比如它有管理线程调度的功能,管理内存的功能,

一、Linux内核的组成

一个完整的Linux内核一般由5部分组成,它们分别是内存管理、进程管理、进程间通信、虚拟文件系统和网络接口。

1、内存管理
  内存管理主要完成的是如何合理有效地管理整个系统的物理内存,同时快速响应内核各个子系统对内存分配的请求。Linux内存管理支持虚拟内存,而多余出的这部分内存就是通过磁盘申请得到的,平时系统只把当前运行的程序块保留在内存中,其他程序块则保留在磁盘中。在内存紧缺时,内存管理负责在磁盘和内存间交换程序块。
2、进程管理
  进程管理主要控制系统进程对CPU的访问。当需要某个进程运行时,由进程调度器根据基于优先级的调度算法启动新的进程。:Linux支持多任务运行,那么如何在一个单CPU上支持多任务呢?这个工作就是由进程调度管理来实现的。在系统运行时,每个进程都会分得一定的时间片,然后进程调度器根据时间片的不同,选择每个进程依次运行,例如当某个进程的时间片用完后,调度器会选择一个新的进程继续运行。由于切换的时间和频率都非常的快,由此用户感觉是多个程序在同时运行,而实际上,CPU在同一时间内只有一个进程在运行,这一切都是进程调度管理的结果。
3、进程间通信
  进程间通信主要用于控制不同进程之间在用户空间的同步、数据共享和交换。由于不用的用户进程拥有不同的进程空间,因此进程间的通信要借助于内核的中转来实现。一般情况下,当一个进程等待硬件操作完成时,会被挂起。当硬件操作完成,进程被恢复执行,而协调这个过程的就是进程间的通信机制。
4、虚拟文件系统
  Linux内核中的虚拟文件系统用一个通用的文件模型表示了各种不同的文件系统,这个文件模型屏蔽了很多具体文件系统的差异,使Linux内核支持很多不同的文件系统,这个文件系统可以分为逻辑文件系统和设备驱动程序:逻辑文件系统指Linux所支持的文件系统,例如ext2、ext3和fat等;设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。
5、网络接口
  网络接口提供了对各种网络标准的实现和各种网络硬件的支持。网络接口一般分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。网络设备驱动程序则主要负责与硬件设备进行通信,每一种可能的网络硬件设备都有相应的设备驱动程序。

二、Linux 内核开发与 驱动开发有什么关系?
  Linux设备驱动需要使用内核API来实现,一般被包含在Linux内核源码树中。驱动可以编译到内核,随着内核一起在系统启动的时候被加载。也可以编译成内核模块,在系统运行起来之后动态地加载到内核中,使得调试的时候无需重新编译内核,也无需重启系统,很大程度上方便了驱动代码的调试。但并不是只有设备驱动才能编译成模块,有些内核功能的实现也可以,以便在需要的时候再加载,比如内核中文件系统的实现、加密及校验的实现、网络协议栈的实现等等。

平时你听到的驱动开发一般指的是开发系统外围设备的驱动,使得设备能被内核操控,如USB主从设备、Flash设备驱动、I2C设备驱动、LCD设备驱动、网络设备驱动。平时你听到的内核开发一般就指除了设备驱动之外的开发了,比如Linux系统启动流程、进程管理、内存管理、时间管理、系统调用、文件系统等,但这些部分也在很大程度上被所谓的“驱动开发”所用。所以,实际上驱动开发只是内核开发的一部分。

转自:https://blog.csdn.net/cutter2002/article/details/39055101

你可能感兴趣的:(笔记,linux,服务器,运维)