操作系统系列(一)

简介: 操作系统系列(一)

一、什么是零拷贝

零拷贝是指CPU不需要在用户空间和用户空间、用户空间和内核空间之间拷贝数据,消耗资源。

二、用户空间,内核空间,内核缓存,进程缓存

操作系统将虚拟内存分为两部分,应用程序只能访问用户空间

用户空间:应用程序只能访问用户空间

内核空间:内核程序都可以访问用户空间和内核空间

应用程序通过系统调用的方式,向内核空间发出指令,完成内核空间的访问。

缓冲区:为了低速设备的缓冲,外部的物理设备太慢了,磁盘,网卡的数据需要先放入到缓冲区。缓冲区会映射到虚拟内存,最终要落在物理内存

内核缓冲区:内核程序都可以访问内核缓冲区和进程缓冲区。

进程缓冲区:用户程序只能访问的进程缓冲区。

三、传统C程序IO过程中的4次数据拷贝,4次模式切换

f1766cc6349f2de56fb96f983be5f4c2.png

1、如果该内核地址缓冲区与套接字相关,叫做socket send buffer,如果与文件系统相关,叫做filesystem cache。

2、如果数据非常大的话,是很耗费时间的,因为一个字节一个字节copy的

3、DMA物理硬件上,复制的是内核空间来做的。从内核缓冲区传递到协议引擎栈:也是有一点缓存的。

为什么内核缓冲区不可以去掉:

(1)、因为用户空间对应的物理内存有关的,假设用户缓冲区映射到硬盘里面的,用户缓冲区的数据不一定在物理上存在可能在硬盘上的,但是不影响代码去访问。如果不存在物理内存里面的话,这个时候内核会产生缺页异常,然后内核程序偷偷的从物理硬盘读取到物理内存来而这个时候对用户程序不可见。

(2)、这种的调拨 是在内核缓冲区里面是不可以的,必须要求内核缓冲区的数据对应到物理内存,必须是一对一存在的。否则就报错。

(3)、用户空间里面的数据是可以调拨的,是可以从硬盘调拨到物理内存来。所以要进行用户缓冲区到内核缓冲区的cpu复制,如果用户缓冲区的数据在物理内存上没有,还在硬盘上,是有问题的。sys_write发现数据没在物理内存。所以copy到内核缓冲区的数据的步骤是必须存在的。

相关文章
|
存储 算法 安全
操作系统
一、操作系统 操作系统是计算机系统中的一个重要组成部分,它是管理和控制计算机硬件和软件资源的软件系统。操作系统提供了一个统一的接口,使得用户和应用程序可以方便地与计算机系统进行交互和使用。 操作系统的主要功能包括: 1. 进程管理:操作系统负责管理和调度计算机系统中的各个进程(程序的执行实例),包括进程的创建、调度、切换、同步和通信等。它通过分配和管理CPU时间片,使得多个进程可以并发执行,提高计算机系统的利用率和响应速度。 2. 内存管理:操作系统管理计算机系统中的内存资源,包括内存的分配和回收、虚拟内存的管理、页面置换算法等。它通过内存管理机制,为应用程序提供统一的地址空间,并保证应用程序
87 0
|
6月前
|
Java Linux 调度
初识操作系统
初识操作系统
45 3
|
7月前
|
存储 算法 API
深入操作系统(什么是操作系统)
深入操作系统(什么是操作系统)
79 1
|
算法 Linux 调度
操作系统相关题
你熟悉哪些服务器操作系统?对于不同操作系统的特点和用途,你有什么了解和经验?
92 0
|
监控 机器人 调度
操作系统概论——操作系统
操作系统概论——操作系统
79 0
|
消息中间件 存储 资源调度
操作系统总结
操作系统总结
111 0
|
存储 算法 程序员
|
算法 调度 索引
|
安全 算法
|
存储 算法 调度