Rachelint
码龄8年
求更新 关注
提问 私信
  • 博客:67,012
    社区:290
    67,302
    总访问量
  • 60
    原创
  • 7
    粉丝
  • 30
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:浙江省
加入CSDN时间: 2017-11-19

个人简介:不切实际的愉悦犯。

博客简介:

Rachelint的博客

查看详细资料
个人成就
  • 获得14次点赞
  • 内容获得17次评论
  • 获得86次收藏
  • 博客总排名516,301名
创作历程
  • 1篇
    2021年
  • 37篇
    2020年
  • 31篇
    2019年
成就勋章
TA的专栏
  • Linux学习
    24篇
  • C++语言基础
    9篇
  • 程序调试
    7篇
  • 算法基础
    4篇
  • 思考、技巧乱炖
    8篇
  • 复盘与反思
    1篇
  • 打杂
    4篇
  • 多线程
    2篇
  • 计算机网络
    2篇
  • 数据库
    4篇
  • 硬件相关优化
    2篇
  • 算法题解分析与扩展
    1篇
  • python学习

TA关注的专栏 1

TA关注的收藏夹 0

TA关注的社区 1

TA参与的活动 0

创作活动更多

新星杯·14天创作挑战营·第13期

这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。我们诚挚邀请你们参加为期14天的创作挑战赛!注: 1、参赛者可以进入活动群进行交流、互相鼓励与支持(开卷),虚竹哥会分享创作心得和涨粉心得,答疑及活动群请见:https://bbs.csdn.net/topics/619781944 【进活动群,得奖概率会更大,因为有辅导】 2、文章质量分查询:https://www.csdn.net/qc

75人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

ubuntu 18.04安装NVIDIA驱动失败经历 --- 不能进入图形界面

1.安装方法网上很找到,就不详述了。总结起来有三种:**从ubuntu标准仓安装。**使用ubuntu-drives autoinstall,其实就是apt-get install nvidia-drivers-xxx,不过版本不需要自行指定,直接安装系统推荐的而已。这种方法不需要手动禁止nouveau,不需要退出图形界面;**从PPA源安装。**添加PPA源,然后apt-get inst...
原创
博文更新于 2021.12.22 ·
7389 阅读 ·
1 点赞 ·
3 评论 ·
9 收藏

【内核资料】进程切换 switch_to 与 __switch_to

这是我觉得在网上介绍switch_to函数的众多文章中,讲得算最明白的一篇。只要有耐心一路看下来,基本上都能把这个比较奇葩的函数看明白。其实难点在于:需要有一点汇编知识,因为涉及到一点汇编层面的hack技巧;本身很晦涩,这边文章通过逐行讲解并且尽量转换的形式,很好地解决了一点;作者:visayafan文章链接#define switch_to(prev, next, last) \do { \/* \ * Context-switching cl
转载
博文更新于 2021.06.29 ·
1215 阅读 ·
0 点赞 ·
0 评论 ·
11 收藏

【INT的内核笔记】tcp接收端相关实现

1. file_operations在epoll_ctl(add)中有这样的调用链:主要涉及了file->f_op和private_data中的socket结构tfile->f_op->poll(tfile, &epq.pt) |->sock_poll |->sock->ops->poll |->tcp_poll(应该也是类似sk->sk_prot->recvmsg??
原创
博文更新于 2021.03.08 ·
428 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【INT的内核笔记】Linux信号递达过程详解

1. 什么时候执行信号处理一般在从中断或系统调用返回到用户态前,会执行一段逻辑检查TIF_SIGPENDING位,如果被置位了的话则会经由:–> do_notify_resume --> do_signal,进入到do_signal执行信号处理。中断/系统调用返回的大致情况,可以参考下图:中断返回用户态的相关代码:/** *返回用户空间,只需要检查need_resched * *可能从中断返回,也可能从系统调用返回。 */ENTRY(resume_userspace) #
原创
博文更新于 2020.11.28 ·
604 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

【INT的内核笔记】文件系统浅析

1. 磁盘中的文件系统理想组织形式| 引导块 | 超级块 | 空闲空间管理 | i节点表 | 逻辑块(根目录+文件和目录) |满足了文件系统几个需求:存储和读取信息、空闲管理、文件属性(基本信息+权限)职责分配:引导块,和系统启动有关,不讨论;超级块,保存整个文件系统的属性,可以类比到文件的属性,就是大小、时间之类。摘录:超级块中会存储整个文件系统的类型、大小,文件系统中索引节点的总数量,当前文件系统的空间占用量、空闲块数量,存储块的大小,文件系统的最近一次检查时间等信息。
原创
博文更新于 2020.11.25 ·
231 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【INT的内核笔记】调度研究(一)

未完待续…研究的源码主要是2.6版本。1. 调度策略概述1.1 调度调度时机和调度是不同的,什么时候阻塞进程,什么时候唤醒进行,什么时候执行调度,这属于调度时机;阻塞和唤醒进程时候相应调度变量如何改变,应该从可执行队列中挑选哪个进程运行,这属于调度;调度大致提供这些主要功能:从可执行队列中,选出合适进程执行;阻塞和唤醒进程;多CPU间等方面的负载平衡;1.2 进程类型类型批处理进程一般为后台进程,不需要和用户交互,处理上受慢待。例如编译程序,数据库搜索引擎,科学计算
原创
博文更新于 2020.11.25 ·
321 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【INT的内核笔记】关于pthread_cond_wait()虚假唤醒,在不同unix系内核的实验结果

1.博主的实验这两天把ULK的信号机制和相应的内核源码大致看了一遍,了解到pthread_cond_wait()的底层futex()属于慢系统调用,可以被信号中断,这是导致虚假唤醒的系统层面原因(另一个是逻辑层面)。所以我就写了一个小demo来进行验证,就是主线程给子线程发信号而已,很简单。结果当然是失败的,不然就不会纠结,也没有这篇记录了。所以我就很懵逼了,原理上不应该的啊?我直接去看pthread_cond_wait()的源码,了解到底是怎么回事的… 但是一来不好找对应OS版本的源码,二来是网上
原创
博文更新于 2020.11.25 ·
492 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

【INT的内核笔记】scheduler_tick()源码分析

1. 调用时机一般会在时钟中断时被调用,作用有:剥夺时间片耗完的进程的CPU使用权,当然具体细节上没这么简单;进行定时的CPU间负载均衡处理;2. 大致流程idle进程(swapper进程)的处理。idle进程没有时间片可言,主要思路是如果当前逻辑CPU的可执行队里已有进程,应该尽快调度。这里所指的调度还是延时调度,也就是设置TIF_NEED_RESCHED,还会有些强制调度之类的处理,细节暂未研究;实时进程的处理。在这版本的源码中,没有调度类的概念,实时进程和普通进程是放在
原创
博文更新于 2020.11.25 ·
478 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【INT的内核笔记】调度时机与抢占

1. 调度时机调度时机一般可以分成两类:主动调度和强制调度。1.1 主动调度在形式上一般是这样的:内核在等待资源的时候,将当前进程移到等待队列,并主动调用schedule()放弃CPU;主动调度的例子:read()系统调用,会调用到wait_on_sync_kiocb(),其中有这么一段 while (iocb->ki_users) { set_current_state(TASK_UNINTERRUPTIBLE); if (!iocb->ki_users)
原创
博文更新于 2020.11.25 ·
523 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

【INT的内核笔记】梳理sleep_avg,prio,activated,timestamp,last_ran等重要调度变量

1. sleep_avg1.1 sleep_avg简介sleep_avg处在task_struct数据结构中,sleep其实和平均没有什么关系,是一个睡眠时间评估值,命名可能有历史原因。直接关系到进程动态优先级prio的计算:动态优先级prio = 静态优先级static_prio - CURRENT_BONUS(p) + 5CURRENT_BONUS(p)和p->sleep_avg是正相关的,prio越小越好,因此:sleep_avg越大,调用effective_prio(p)重新计算
原创
博文更新于 2020.11.25 ·
619 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【INT的内核笔记】Linux内核内存空间布局研究

1.Linux内核映射从上面的页表设置可以看出:内核对内核虚拟地址和物理地址之间的转换,是会有需求的。很容易可以想到最简单的解决方法:将内核虚拟空间地址,和实际物理空间逐一对应进行线性映射。在很早期的时候,确实就是这样做的。但是在32位时代,内核的虚拟空间只有1G,也就是说全部都进行线性映射的话,内核只能使用1G物理内存,但是我们也知道就是32位时代,其实物理内存很多也不止4G了,而且CPU后面也相应支持。但是,虚拟地址空间还是只有4G,内核还是只有1G,如果还是进行直接线性映射的
原创
博文更新于 2020.11.25 ·
590 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【内核资料】stackoverflow上关于内核为何偏爱kmalloc(),而很少用vmalloc()的讨论

1. 问题What is the difference between vmalloc and kmalloc?2. 大致观点涉及到DMA的话,需要物理上连续的内存;内核之所以偏好分配物理上连续内存,并不是必须的,而主要是考虑性能:kmalloc()和vmalloc()效率高;kmalloc()对TLB更友好;内核的页面不会被swapped,而是常驻内存中,无论kmalloc()分配还是vmalloc()分配;...
转载
博文更新于 2020.07.14 ·
282 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

转stackoverflow一个问题,关于内核是如何管理页表(pgd,pud,pmd,pte)本身所占的内存

碎碎念我今天莫名开始纠结起,关于linux页表方面的问题。然后就想到,【页表本身也是要占有一部分内存的,所以内核又是如何管理页表本身所占有的这部分内存的呢?】找了很久,没太满意的答案。甚至都没有具体方向,所以也不太有希望从源码中找到答案。暂时就以在stackoverflow上找到的这个提问,作为这次疑惑的收尾吧,可能要很久很久之后才能得到圆满的解答了。回复的大致意思是:【根据linux内核相关wiki,页表就是常驻在内存中的,不会换出。】也不知道实际是如何的,还是希望有从动态层面上研究过内核的
转载
博文更新于 2020.07.09 ·
631 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

【内核资料】fork写时拷贝实现原理

作者:Leosocy链接:https://blog.leosocy.top/深入了解Linux-COW写时拷贝实现原理/为了节约物理内存,减少进程创建时资源和时间的消耗,父进程在调用 fork() 生成子进程时,子进程与父进程会共享同一内存区。只有当其中一进程进行写操作时,系统才会为其另外分配内存页面。这就是写时复制机制 (copy on write) 的意思。那么 Linux 内核是如何实现这种机制的呢,今天我们来简要的分析一下。fork 系统调用流程sys_fork -> _do_fork
转载
博文更新于 2020.07.02 ·
627 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

【内核资料】Linux进程的睡眠和唤醒

1. Linux进程的睡眠和唤醒在Linux中,仅等待CPU时间的进程称为就绪进程,它们被放置在一个运行队列中,一个就绪进程的状 态标志位为TASK_RUNNING。一旦一个运行中的进程时间片用完, Linux 内核的调度器会剥夺这个进程对CPU的控制权,并且从运行队列中选择一个合适的进程投入运行。当然,一个进程也可以主动释放CPU的控制权。函数 schedule()是一个调度函数,它可以被一个进程主动调用,从而调度其它进程占用CPU。一旦这个主动放弃CPU的进程被重新调度占用 CPU,那么它将从上次停
转载
博文更新于 2020.07.02 ·
427 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【内核资料】小知识点,likely与unlikely

看内核源码看见好几次likely和unlikely了,于是就查了一下具体的意义,之前发现了这篇文章,很短,小小地涨了一下姿势2333。作者:不详,看的那篇文章,作者也是转的别人转自:https://blog.csdn.net/tigerjibo/article/details/8279183###likely()与unlikely()在2.6内核中,随处可见,那为什么要用它们?它们之间有什么区别呢?首先明确:if (likely(value)) //等价于if (value)if (likel
转载
博文更新于 2020.07.02 ·
255 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C语言基础文件读写总结

1. 基础输入函数int fscanf(FILE *stream, const char *format, …)参数stream,输入流fileIn之类;format,例如"%c %d %s“, ”%c,%d,%s"是不行的,不接受这样的分割;…,变量的指针/数组指针;返回值返回读取单元数,当无出错和非到达文件末尾时;返回EOF,当在中途到达文件末尾,或者发生读...
原创
博文更新于 2020.06.07 ·
371 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

文件中经常遇见的小问题

问题1.linux和windows间传文件,’
’变成"\r
"。刚刚又被坑了一波,有一段时间我对这个特别敏感,帮同学指出过几次,现在太久没遇见自己都被坑了。解决方法很简单,使用linux上dos2unix这个小软件转一下就行。2.用’
’分割的txt数据文件中,某一行末尾多了一个空格。就是类似于这样abcabccdecdeefgefg'我是空格'hahahhahaha第一次遇到是在hadoop大作业的时候,还挺坑的,一眼下去啥问题没有。感觉可以写个小工具,自动检测和去除。
原创
博文更新于 2020.06.06 ·
277 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【暴力】凸包算法

1. 前言基本上就是最原始的暴力,多余的计算很多。试过优化,但是弄出了一堆bug,找的焦头烂额。最终放弃了,反正就是手痒实现着玩的,能AC就先算了。算法本身很简单,主要是特殊情况的处理有点烦,debug的时候实在有点暴躁。HDUOJ2. 实现#include <iostream>#include <vector>#include <map>#include <set>#include <cmath>#include <al
原创
博文更新于 2020.06.03 ·
356 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

软件测试复习

1. 前言软件测试中很多思想,尤其是对边界值的处理,还是值得借鉴的,因此进行一下简单的复习。2. 黑盒测试等价类划分法3. 白盒测试暂不复习路径覆盖。用到的例子:语句覆盖,就是每个语句都能执行到,例子中判断全为T即可达成:判定覆盖,每个判定的T、F都能执行到:条件覆盖,将判定分解成 条件(条件通过||,&&组合成判定),然后对条件进行覆盖:判定:(A > 1) && (B == 0),(A == 2) || (X > 1)条件:设
原创
博文更新于 2020.05.28 ·
368 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏
加载更多