目录
当进程运行在内核空间时,它就处于内核态;当进程运行在用户空间时,它就处于用户态
内核态 & 用户态【OS】
参考链接
怎样去理解Linux用户态和内核态?
IO 系列——用户空间与内核空间
现代计算机是由硬件、操作系统组成,操作系统通过内核与硬件交互
当需要 进行IO操作 时,如读写硬盘文件、读写网卡数据等,进程需要 切换到内核态linux内核空间访问用户空间,否则无法进行这样的操作
无论是从内核态切换到用户态,还是从用户态切换到内核态,都需要进行一次 上下文的切换
一般情况下,应用不能直接 操作 内核空间的数据,需要把内核态的数据拷贝到用户空间才能操作
内核态 用户态 内核空间 & 用户空间【内存】
参考链接
用户空间和内核空间之间有什么区别?
IO 模型知多少 | 理论篇
I/O之于应用程序来说,强调的通过向内核发起系统调用完成对I/O的间接访问。换句话说应用程序发起的一次IO操作实际包含两个阶段:
IO调用阶段:应用程序进程向内核发起系统调用
IO执行阶段:内核执行IO操作并返回
准备数据阶段:内核等待I/O设备准备好数据拷贝数据阶段:将数据从内核缓冲区拷贝到用户空间缓冲区
sum
由于CPU某些指令比较危险,如果错用会导致系统崩溃,为了保护系统如何安装LINUX,操作系统将内存空间划分为了两部分:
内核空间:存储内核代码并在其下执行的位置 IO示例
假如有一个网络请求想访问服务器上的某个静态文件linux内核空间访问用户空间linux学习视频,具体IO流程:
整个过程如下:
进程发起一个系统调用sys_read,读取磁盘的文件;
DMA将磁盘文件数据拷贝到内核空间的read缓冲区;
CPU把内核空间read缓冲区数据拷贝到用户空间的缓冲区;
进程发起一个系统调用socket_write,向网卡写数据;
CPU把用户空间缓冲区的数据拷贝到内核空间的socket缓冲区;
最后DMA把内核空间的socket缓冲区数据拷贝到网卡;