换源 1 sudo pacman-mirrors -i -c China -m rank 或者自动选择 1 pacman-mirrors -c China 或者自动选择最快的 1 pacman-mirrors --fasttrack 安装 Yay 1 sudo pacman -Sy yay 安装字体 1 yay -Sy wqy-zenhei wqy-microhei adobe-source-han-sans-otc-fonts tty-font-awesome tty-cascadia-code nerd-fonts-cascadia-code ttf-material-icons 输入法 1 sudo pacman -Sy fcitx5 fcitx5-chinese-addons fcitx5-qt fcitx5-gtk fcitx5 是输入法框架,默认支持英文。 fcitx5-chinese-addons 是中文支持。 配置环境变量 1 sudo vim ~/.pam_environment 输入: 1 2 3 4 INPUT_METHOD DEFAULT=fcitx5 GTK_IM_MODULE DEFAULT=fcitx5 QT_IM_MODULE DEFAULT=fcitx5 XMODIFIERS DEFAULT=\@im=fcitx5 配置自启动 1 sudo cp /usr/share/applications/org....

3 min · Boii

淘汰算法 将计算机简单看作一个 「计算+存储」 的工具,那么 CPU 的主要作用就是 「计算」,硬盘的主要作用就是 「存储」。 计算需要从硬盘里将数据搬运到 CPU 中,但是硬盘的速度是在太慢,从而有了折中的「内存」。即能存储一定的数据,又比硬盘速度更快些,虽然对于 CPU 而言还是太慢了。 计算机将部分数据从硬盘搬到内存中,在 CPU 需要时可以快速给到 CPU,从而提高 CPU 使用率。 但是内存是有限的,她被发明的本意就是为了加快访问。计算机不可能同时将全部的程序都放在内存中,但是我们又需要同时运行许多程序,于是操作系统就站出来负责这些工作。 一台计算机只有 4G 的内存,但是却可以运行 8G 的程序,其原因是由于程序的局部性原理,我们不需要同时运行 8G 的程序。 我们可以将程序中目前需要的部分先加载到内存中,随着程序的运行访问到某个子程序不在内存中,这个时候再去硬盘中加载到内存,这称为「内存页面置换」,也就是操作系统的内存管理的内容之一。 站在操作系统的视角,现在 A 程序运行的时候需要有个子程序 A’ ,但不在内存中,毫无疑问需要去硬盘中加载。但是加载之前有个问题需要考虑:目前内存是否有足够空间容纳子程序 A’? 如果空间足够,那么加载进来就完事儿,如果不够怎么办?答案就是把一部分数据抱回硬盘,再把需要的子程序 A’ 抱进来内存中。 那么,把哪部分数据抱回去?也就是个淘汰谁的问题。于是诞生出许多的淘汰算法。这就是淘汰算法的由来。 !!! summary 由于资源的稀缺,我们建立一个兼顾速度和容量的中间件——内存。但是内存容量依然有限,而我们又有多程序同时运行的需求,所以操作系统站出来负责内存管理。 在进行内存管理的时候,需要将旧数据换下去,把新数据换上来,所以有了把谁换下去的问题,于是有了淘汰算法。 解决方案 淘汰算法不仅仅适用于操作系统的内存管理,同样适用其他空间不足时需要替换数据的场景中。 常见的淘汰算法有: OPT (Optimum 最佳淘汰算法) (理想化,未来没准能实现) FIFO (First In First Out 先进先出算法) (绝对公平,但不实用) LRU (Least Recently Used 最近最少使用算法) (容易把热点数据淘汰掉) LFU (Least Frequently Used 最近最不常使用算法) (实现比较复杂) ARC (Adaptive Replacement Cache 自适应缓存替换算法) (结合了 LRU 和 LFU) 首先我们准备一个空队列,然后准备一组编号代表第几号页被访问的顺序:701203042303212...

2 min · Boii