首页 > 数据库 >redis自学(12)用户空间和内核空间

redis自学(12)用户空间和内核空间

时间:2024-03-07 14:46:14浏览次数:26  
标签:12 redis 用户 缓冲区 内核 IO Linux 空间

用户空间和内核空间

服务器大多采用Linux系统,所以以Linux为例:

任何Linux发行版,其系统内核都是Linux。我们的应用都需要通过Linux内核与硬件交互。

 

 

用户应用是无法直接访问计算机硬件,只能访问内核,基于内核操作计算机硬件

 

 

为了避免用户应用导致冲突甚至内核崩溃,用户应用与内核是分离的:

l 进程的寻址空间会划分为两部分:内核空间、用户空间(32位的系统,它的寻址空间是2的32次方,也就是4GB)

 

 

l 用户空间只能执行受限的命令(Ring3),而且不能直接调用系统资源,必须通过内核提供的接口来访问

l 内核空间可以执行特权命令(Ring0),调用一切系统资源

 

Linux系统为了提高IO效率,会在用户空间和内核空间都加入缓冲区:

l 写数据时,要把用户缓冲数据拷贝到内核缓冲区,然后写入设备

l 读数据时,要从设备(磁盘或网卡,或者说本地或网络)读取数据到内核缓冲区,然后拷贝到用户缓冲区

 

 

IO读写效率不好就因为这个,读要用户态切换到内核态,然后等待硬件的数据存入内核态的缓冲区,然后内核态的缓冲区要复制到用户态的缓冲区。反过来,写要先写入用户态的缓冲区,然后存到内核态的缓冲区,最后存入硬件。

因此提高IO的效率,主要是两个点

  1. 减少无效等待的时间
  2. 减少用户态和内核态缓冲区的数据拷贝

标签:12,redis,用户,缓冲区,内核,IO,Linux,空间
From: https://www.cnblogs.com/bulesea/p/18058849

相关文章

  • P10120『STA - R4』冰红茶 题解
    分析出得很好,模板套模板,希望下次再来。难点在于维护最后连续喝的DS饮料数量。设这次喝原味饮料的区间为\([l,r]\),上一次为\([l',r']\)。则有两种情况:\([l,r]\)与\([l',r']\)不相交。如:在\([l',r']\)和\([l,r]\)两个区间中的DS连续喝的同种饮料数量都会变成\(k......
  • CH9126网口配置协议及说明
    目录1.CH9126简介及应用特点2.通信相关结构体定义3.通信流程解析3.1搜索设备3.2恢复出厂设置3.3获取设备配置3.4配置设备本文通过wireshark抓包分析了官方配套CH9126搜索上位机软件的底层通信,简单分析了搜索,恢复出厂,配置,获取配置这四个操作。1.CH9126---......
  • CF1223F Stack Exterminable Arrays 题解
    分析接着这个说。现在我们需要优化\(\mathit{nxt}_{i}\)。重新定义一下,\(\mathit{nxt}_{i,j}\)表示在后\(i\)个数中,\(j\)第一次出现的位置,且\([i+1,\mathit{nxt}_{i+1,a_i}-1]\)是一个合法串。这玩意很像一个DP,所以完全可以按照DP的转移思路转移:\(\mathit{nxt}_{i,j}=......
  • 开源.NET8.0小项目伪微服务框架(分布式、EFCore、Redis、RabbitMQ、Mysql等)
    1、前言为什么说是伪微服务框架,常见微服务框架可能还包括服务容错、服务间的通信、服务追踪和监控、服务注册和发现等等,而我这里为了在使用中的更简单,将很多东西进行了简化或者省略了。年前到现在在开发一个新的小项目,刚好项目最初的很多功能是比较通用的,所以就想着将这些功能抽......
  • 开启空间新纪元:探索3D轴测图可视化的魅力
    在这个信息爆炸的时代,我们每天都在与海量的数据打交道。而如何将这些数据以直观、易懂的方式呈现出来,一直是科技界不断探索的课题。近年来,随着3D技术的迅猛发展,3D轴测图正逐渐崭露头角,成为各行各业数据展示和分析的得力助手。 什么是3D轴测图呢? 简单来说,它就是一种利用三维......
  • 【实战技能】简单易实现的SWD接口烧录目标板挂载的EEPROM,支持AT24C02/04/08/16/32/64/
    之前针对外部SPIFlash的SWD接口烧写,制作过一期专题视频教程。产品生产时,不仅SPIFlash,有时候希望烧录目标板程序后,将EERPOM里面的参数也通过SWD接口存储进去,这样就不再需要大家单独再接上EEPROM的I2C接口烧录了,产品生产比较省事。针对这个问题就花了些时间,制作了下EEPROM的烧写......
  • 宕机后,Redis如何实现快速恢复?
    Redis作为非常火热的内存数据库,其除了具有非常高的性能之外,还需要保证高可用,在故障发生时,尽可能地降低故障带来的影响,Redis也提供了完善的故障恢复机制:哨兵。下面就来具体来看看Redis的故障恢复是如何做的,以及其中的原理。部署模式Redis在部署时,可以采用多种方式部署,每种部署方......
  • 1277. 维护序列
    #include<iostream>#include<stdio.h>#include<algorithm>#include<string>#defineFor(i,j,n)for(inti=j;i<=n;++i)usingnamespacestd;typedeflonglongLL;constintN=1e5+5;intn,m,P,a[N];structnod......
  • CSP认证2022.12 452分题解
    A、现值计算题解题目简单易懂,直接写就行了。importmathn,i=map(float,input().split())n=int(n)a=list(map(int,input().split()))ans=0.00forjinrange(n+1):ans=ans+math.pow(1+i,-j)*a[j]print(ans)B、训练计划题解显然是个......
  • Redis中的渐进式Rehash机制
    哈希冲突链上的元素只能通过指针逐一查找再操作。如果哈希表里写入的数据越来越多,哈希冲突可能也会越来越多,这就会导致某些哈希冲突链过长,进而导致这个链上的元素查找耗时长,效率降低。对于追求“快”的Redis来说,这是不太能接受的。所以,Redis会对哈希表做rehash操作,......