简述Linux系统与内核是如何构成的以及 linux内核是如何构成的
2017-03-09 22:51
405 查看
Linux系统与内核是如何构成的
从图上我们可以知道,Linux系统是由用户空间和内核空间两部分组成。
Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0~4G。
Linux内核将这4G的空间划分为两部分:
内核空间 最高的1G(0xC0000000~0xFFFFFFFF),供内核使用。
用户空间 将较低的3G字(0x00000000~0xBFFFFFFFF),供各进程使用。
因为各进程可以通过系统调用进入内核,因此Linux内核为系统内的所以进程共享。从进程的角度来看,每个进程可以
拥有4G的虚拟空间。
用户空间包含了用户应用程序和C库。
内核空间从上到下分别是:系统调用接口,内核,体系结构相关的代码,硬件。
用户空间进入内核空间的方法
内核空间与用户空间是程序执行的两种不同状态,通过系统调用和硬件中断能够完成从用户空间到内核空间的转移。
Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为
Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。
Linux内核是如何构成的?
system call interface:系统调用接口
Process Management:进程管理 ,主要的工作有进程的创建与销毁,进程间通信,进程调度等。
Memory Management:内存管理,主要工作是内存的分配,回收,映射等。
Arch:体系相关,各个与体系相关的代码都放在这里,比如内存管理与体系结构相关的代码,进程管理与体系结构相关
的代码等等,这样就方便移植
Device Driver:设备驱动
Network Stack:协议栈
Virtual File System:虚拟文件系统,它的作用只是隐藏各种文件系统的具体细节,为文件操作提供统一的操作接口
从图上我们可以知道,Linux系统是由用户空间和内核空间两部分组成。
Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0~4G。
Linux内核将这4G的空间划分为两部分:
内核空间 最高的1G(0xC0000000~0xFFFFFFFF),供内核使用。
用户空间 将较低的3G字(0x00000000~0xBFFFFFFFF),供各进程使用。
因为各进程可以通过系统调用进入内核,因此Linux内核为系统内的所以进程共享。从进程的角度来看,每个进程可以
拥有4G的虚拟空间。
用户空间包含了用户应用程序和C库。
内核空间从上到下分别是:系统调用接口,内核,体系结构相关的代码,硬件。
用户空间进入内核空间的方法
内核空间与用户空间是程序执行的两种不同状态,通过系统调用和硬件中断能够完成从用户空间到内核空间的转移。
Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为
Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。
Linux内核是如何构成的?
system call interface:系统调用接口
Process Management:进程管理 ,主要的工作有进程的创建与销毁,进程间通信,进程调度等。
Memory Management:内存管理,主要工作是内存的分配,回收,映射等。
Arch:体系相关,各个与体系相关的代码都放在这里,比如内存管理与体系结构相关的代码,进程管理与体系结构相关
的代码等等,这样就方便移植
Device Driver:设备驱动
Network Stack:协议栈
Virtual File System:虚拟文件系统,它的作用只是隐藏各种文件系统的具体细节,为文件操作提供统一的操作接口
相关文章推荐
- linux初学-内核编译以及文件系统1
- 如何在linux系统下挂接(mount)光盘镜像文件、移动硬盘、U盘以及Windows网络共享和UNIX
- 如何成为一个Linux系统内核开发者(转)
- 如何编译Linux内核(编译linux内核的基本步骤)
- Linux如何在系统启动时自动加载内核模块
- linux初学-内核编译以及文件系统2
- Linux如何在系统运行过程中修改内核参数
- Linux的内核空间和用户空间是如何划分的(以32位系统为例)?
- Linux强大的网络功能是如何实现的,让我们一起进入Linux内核的网络系统了解一下吧。
- linux初学-内核编译以及文件系统4
- Linux如何在系统运行过程中修改内核参数(转)
- linux2.6内核中如何添加新的文件系统
- linux 内核启动过程以及挂载android 根文件系统的过程 ( 转)
- 如何成为一个Linux系统内核开发者
- 【嵌入式Linux学习七步曲之第三篇 Linux系统bootlaoder移植】U-BOOT全线移植分析系列之四--U-boot如何引导Linux内核启动?
- 如何成为一个Linux系统内核开发者
- Linux如何在系统运行过程中修改内核参数
- linux下可执行程序如何定位共享库文件以及如何让系统找到用户指定的库
- Linux系统如何正确使用和安装内核模块
- 如何将自己的模块添加到Linux 2.6内核的配置系统中