随笔分类 - OS
摘要:1 控制块 shared_ptr 继承自 _Ptr_base,它包含两个成员变量:指向目标对象的指针 _Ptr 和 引用计数基类指针 _Rep。 private: element_type * _Ptr{nullptr}; _Ref_count_base * _Rep{nullptr}; 引用计数的
阅读全文
摘要:cfs_rq 每个 cpu 都有一个对应的运行队列 rq,在 rq 中维护着不同调度策略的调度队列。 struct rq { ... struct cfs_rq cfs; struct rt_rq rt; struct dl_rq dl; ... }; cfs的调度队列通过红黑树维护,在 cfs_r
阅读全文
摘要:sched_class 在 Linux 中有多种不同的调度策略,每一种调度策略都由不同的调度器类实现,在 sched_class 中定义了调度器需要实现的接口。 struct sched_class { const struct sched_class *next; void (*enqueue_t
阅读全文
摘要:list_head 在 Linux 内核中是通过链表的形式来管理进程的,其定义非常简单(/include/linux/list.h): struct list_head { struct list_head *next, *prev; }; 只有两个指针,不包含其他数据,那怎么通过 list_hea
阅读全文
摘要:假设现在有一个程序包含 2 个变量:data1、data2 和 2 个函数:func1、func2,找到其地址与数值的过程如下: 1 根据文件头结构 Elf64_Ehdr 中的 e_shoff 得知段表的位置。 2 根据段描述符结构 Elf64_Shdr 中的 sh_offset 得知每个段距离 E
阅读全文
摘要:将Ubuntu默认的python2改为python3 首先删除原有的python连接文件: rm /usr/bin/python 然后建立指向python3.6的软连接: ln -s /usr/bin/python3.5 /usr/bin/python 之后把路径/usr/bin/加入环境变量PAT
阅读全文
摘要:原因 如果使用的是#!/usr/local/bin/python3这种方式,就会出现 “/usr/local/bin/python3^M: bad interpreter: 没有那个文件或目录” 错误: 如果使用的是#!/usr/bin/env python3这种方式,就会出现“没有那个文件或目录3
阅读全文
摘要:redhat 默认自带的 yum 源需要注册,才能更新,所以对于我们来说需要替换掉redhat的yum源。下文更换为网易的。 删除原有的yum rpm -qa|grep yum|xargs rpm -e --nodeps 下载yum安装文件 wget http://mirrors.163.com/c
阅读全文
摘要:如果在codeblocks中设置了自动缩进但是没有效果的话,在终端中执行sudo apt-get install codeblocks-contrib命令。
阅读全文