当前位置:首页 > 开发 > 行业应用 > 正文

内核空间与用户空间

发表于: 2014-10-25   作者:aoyouzi   来源:转载   浏览次数:
摘要: 内核空间与用户空间   一个计算机通常有一定大小的内存空间,如使用的计算机是4GB 的地址空间,但是 程序并不能完全使用这些地址空间,因为这些地址空间被划分为内核空间和用户空间。程 序只能使用用户空间的内存,这里所说的使用是指程序能够申请的内存空间,并不是程序 真正访问的地址空间。   内核空间主要是指操作系统运行时所使用的用于程序调度、虚拟内存的使用或者连接

内核空间与用户空间

 

一个计算机通常有一定大小的内存空间,如使用的计算机是4GB 的地址空间,但是

程序并不能完全使用这些地址空间,因为这些地址空间被划分为内核空间和用户空间。程

序只能使用用户空间的内存,这里所说的使用是指程序能够申请的内存空间,并不是程序

真正访问的地址空间。

 

内核空间主要是指操作系统运行时所使用的用于程序调度、虚拟内存的使用或者连接

硬件资源等的程序逻辑。为何需要内存空间和用户空间的划分呢?很显然和前面所说的每

个进程都独立使用属于自己的内存一样,为了保证操作系统的稳定性,运行在操作系统中

的用户程序不能访问操作系统所使用的内存空间。这也是从安全性上考虑的,如访问硬件

资源只能由操作系统来发起,用户程序不允许直接访问硬件资源。如果用户程序需要访问

硬件资源,如网络连接等,可以调用操作系统提供的接口来实现,这个调用接口的过程也

就是系统调用。每一次系统调用都会存在两个内存空间的切换,通常的网络传输也是一次

系统调用,通过网络传输的数据先是从内核空间接收到远程主机的数据,然后再从内核空

间复制到用户空间,供用户程序使用。这种从内核空间到用户空间的数据复制很费时,虽

然保住了程序运行的安全性和稳定性,但是也牺牲了一部分效率。但是现在已经出现了很

多其他技术能够减少这种从内核空间到用户空间的数据复制的方式,如Linux 系统提供了

sendfile 文件传输方式。

 

内核空间和用户空间的大小如何分配也是一个问题,是更多地分配给用户空间供用户

程序使用,还是首先保住内核有足够的空间来运行,这要平衡一下。如果是一台登录服务

器,很显然,要分配更多的内核空间,因为每一个登录用户操作系统都会初始化一个用户

进程,这个进程大部分都在内核空间里运行。在当前的Windows 32 位操作系统中默认内

核空间和用户空间的比例是1:1(2GB 的内核空间,2GB 的用户空间),而在32 位Linux

系统中默认的比例是1:3(1GB 的内核空间,3GB 的用户空间)。

内核空间与用户空间

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
引言 Alan Cox在内核1.3版本的开发阶段最先引入了Netlink,刚开始时Netlink是以字符驱动接口的方式
关于虚拟内存有三点需要注意: 4G的进程地址空间被人为的分为两个部分--用户空间与内核空间。用户空
Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数
本文介绍malloc的实现及其malloc在进行堆扩展操作,并分析了虚拟地址到物理地址是如何实现映射关系
内核空间是由内核负责映射,它并不会跟着进程改变,是固定的。 高端内存:物理内存896M以上部分称之
转载:http://www.cnblogs.com/Anker/p/3269106.html 1、前言   最近在学习linux内核方面的知识,
《java NIO》缓存区之内核空间、用户空间和虚拟地址 转自 http://blog.csdn.net/hpsysljt/article/d
http://blog.csdn.net/hpsysljt/article/details/6179009 IO是基于缓存区来做的,所谓的输入和输出
1、前言   最近在学习linux内核方面的知识,经常会看到用户空间与内核空间及进程上下文与中断上下
内核处理管理本身的内存外,还必须管理用户空间进程的内存。我们称这个内存为进程地址空间,也就是
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号