Chapter 8 File system
文件系统的目的是为了组织和存放数据。文件系统通常是为了用户之间和应用程序之间共享数据使用,同时还能够实现持久话存储,以便于数据在重启之后依旧可用。
xv6文件系统提供了类Unix的文件,目录和路径名称,并且存储它的数据在virtio磁盘以持久话数据。文件系统需要解决几个挑战:
文件系统需要在磁盘之上的数据结构来表达树形的目录和文件,能够记录块标识来控制每个文件的内容,记录磁盘上的哪些区域是空闲的。
文件系统必须支持崩溃恢复。这是因为,如果崩溃发生了(如断电),文件系统必须在重启之后仍然能够正常地工作。风险在于崩溃可能会中断一个一连串的的更新,并且在磁盘数据结构上留下不一致性。(例如:一个块既被一个文件所使用又被标记为空闲块)
不同的进程可能在同一时间操作文件系统,所以文件系统的代码必须是 coordinate 来维持 invariants.
访问一个磁盘比访问内存慢几个数量级,所以文件系统对于频繁使用的块必须维护一个内存缓存。
这一章阐述了xv6的文件系统将如何应对这些挑战。
8.1 Overview
xv6文件系统实现被组织成为了7层,如图8.1。
disk层在virtio硬件 ...
[论文翻译] Review of FAT data structure of FAT32 file system
原始 Paper
http://www.computerscijournal.org/dnload/Wasim-Ahmad-Bhat-and-S-M-K-Quadri/OJCSV03I01P161-164.pdf
标题
回顾FAT数据结构,FAT32文件系统
概述
FAT 文件系统是一种最原始,可兼容并且简单的文件系统,它如今仍然在支撑着各种数码设备的运行,比如mini MP3播放器,智能手机和数字相机。由于它的简单性和经典性,这种文件系统几乎被所有的操作系统都支持。这篇论文回顾了FAT数据结构中最基本,最重要的一些设计技巧,约束,规则去构建FAT32文件系统中的块数据结构。
介绍
FAT (文件分配表) 文件系统于20世纪70年代开始发展并且早在20世纪80年代就被微软的MS-DOS操作系统所支持。
它也是包括DR-DOS, FreeDOS, MS-DOS, OS/2(v1.1)和Microsoft Windows (一直到Windows Me)在内的各种操作系统的原生文件系统。
FAT 最初是为了500KB以内的软盘设备而开发的。
随着存储容量的提升,FAT也被增强来支持大 ...
oh-my-zsh 安装
123456789101112131415161718192021# 安装zshsudo apt install zsh# 下载oh my zshgit clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh# 复制oh my zsh配置cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc# 设置默认终端为zshchsh -s /bin/zsh# 下载补全插件git clone git@github.com:zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions# 编辑配置文件,修改 plugins=(git zsh-autosuggestions)vim ~/.zshrc# 重启zshsource .zshrc
SIT-board-远程交互式白板的实现
本作品为七牛云2022年1024创作节校园黑客马拉松参赛作品
需求分析
基本绘图功能
作为一个在线协作白板,离线的本地化的白板是一切功能的前提。本地白板中需要包含所有白板绘图相关的基本功能。
分页展示
白板需要支持分页显示,每一页都有其独立标题,用户能够切换当前页面,增加新页面,删除非当前页面,需要保证项目至少存在一页。
123456789101112@startumlleft to right directionusecase 使用分页 as usePageUser --> usePage usecase 切换当前页面 as switchPage usecase 增加新页面 as addPage usecase 删除非当前页 as deletePage usePage <-- switchPage: <<extends>> usePage <-- addPage: <<extends>> usePage <-- deletePage: <<extend ...
大整数求幂模
大整数幂模分解公式
ma+b mod q=(ma×mb) q=((ma mod q)×(mb mod q)) mod q\begin{aligned}
m^{a+b} \space mod \space q
&=(m^a \times m^b) \space q\\
&=((m^a \space mod \space q)\times (m^b \space mod \space q)) \space mod \space q\\
\end{aligned}
ma+b mod q=(ma×mb) q=((ma mod q)×(mb mod q)) mod q
证明:
设
ma+b mod q=tm^{a+b} \space mod \space q = tma+b mod q=t
ma mod q=t1m^{a} \space mod \space q = t_1ma mod q=t1
mb mod q=t2m^{b} \space mod \space q = t_2mb mod q=t2
等价于
ma+b ÷ q=x⋯tm^{a+b} \space \ ...
Diffie-Hellman密钥交换算法
简介
Diffie和Hellman在1976年发表的论文中提出了公钥密码思想,但没有给出具体的方案,原因在于没有找到单向函数,但在该文中给出了通信双方通过信息交换协商密钥的算法,即Diffie-Hellman密钥交换算法,这是第一个密钥协商算法,用于密钥分配,不能用于加密或解密信息。
算法描述
算法描述:Diffie-Hellman算法的安全性基于离散对数问题,设p是一个满足要求的大素数,并且g(0< g < p)是循环群Zp的生成元,g和p公开。
用户A选取一个大的随机数 α(2≤α≤p−2)α(2≤α≤p-2)α(2≤α≤p−2),
计算SA=gαmod p)S_A=g^α mod \space p)SA=gαmod p), 并且把SAS_ASA发送给用户B
用户B选取一个大随机数β(2≤β≤p−2)β(2≤β ≤p-2)β(2≤β≤p−2),计算SB=gβmod p),并且把S_B=g^β mod \space p),并且把SB=gβmod p),并且把S_B$发送给用户A
用户A收到SBS_BSB后,计算K=SBαmod pK={S_B}^α mo ...
RSA算法
RSA算法简介
RSA密码算法是美国麻省理工学院的Rivest、Shamir和Adleman三位学者于1978年提出的。RSA密码算法方案是唯一被广泛接受并实现的通用公开密码算法,目前已经成为公钥密码的国际标准。它是第一个既能用于数据如密,也能通用数字签名的公开密钥密码算法。在Internet中,电子邮件收、发的加密和数字签名软件PGP就采用了RSA密码算法。
RSA的理论基础
RSA的理论基础是大整数因数分解的困难性质。
RSA加解密过程
密钥生成
选取两个大素数p,qp,qp,q
计算n=p⋅qn=p \cdot qn=p⋅q
计算欧拉函数 ϕ(n)=(p−1)⋅(q−1)\phi (n) = (p-1)\cdot(q-1)ϕ(n)=(p−1)⋅(q−1)
随机选取一个整数e(1<e<ϕ(n))e(1 < e < \phi(n))e(1<e<ϕ(n)),使满足gcd(e,ϕ(n))=1gcd(e,\phi(n))=1gcd(e,ϕ(n))=1
由扩展欧几里得算法计算d使得e⋅d mod ϕ(n)=1e \cdot d \space mo ...
积分推导中的双曲函数与三角函数的联系
积分公式引发的思考
从积分公式中我们会发现以下有意思的情景
∫11−x2dx=arcsinx+C1=−arccosx+C2\int \frac 1 {\sqrt{1-x^2}} dx = arcsinx+C_1= -arccosx+C_2
∫1−x21dx=arcsinx+C1=−arccosx+C2
∫1x2+1dx=arcsinhx+C\int \frac 1 {\sqrt{x^2+1}} dx = arcsinhx+C
∫x2+11dx=arcsinhx+C
∫1x2−1dx=x∣x∣arccosh∣x∣+C\int \frac 1 {\sqrt{x^2-1}} dx = \frac x {|x|} arccosh|x|+C
∫x2−11dx=∣x∣xarccosh∣x∣+C
∫11+x2dx=arctanx+C\int \frac 1 {1+x^2} dx = arctanx+C
∫1+x21dx=arctanx+C
∫1x2−1dx=x∣x∣arctanhx+C\int \frac 1 {x^2-1} dx = \frac x {|x|} arctanh ...
积分公式数形结合辅助记忆
以下公式仅用于辅助记忆,不可用于证明题,求积分公式本身的题目。
公式1
∫a2−x2dx=x2a2−x2+a22arcsinxa+C\int \sqrt{a^{2}-x^{2}} d x = \frac x 2 \sqrt{a^2-x^2} + \frac{a^2}2 arcsin \frac x a + C
∫a2−x2dx=2xa2−x2+2a2arcsinax+C
如图,函数y=a2−x2y=\sqrt{a^2-x^2}y=a2−x2 为上图的半圆,则原函数可表示为S=∫axa2−x2dxS=\int ^x _a \sqrt {a^2-x^2} dxS=∫axa2−x2dx,不妨设a=0a=0a=0,x=xCx=x_{C}x=xC,则SSS为如图阴影部分的面积。
阴影部分可拆分成两部分S1,S2S_1, S_2S1,S2,
三角形部分的S2S_2S2可表示如下
S2=12xCyC=x2a2−x2S_2 = \frac 1 2 x_C y_C=\frac x 2 \sqrt{a^2-x^2}
S2=21xCyC=2xa2−x2
扇形部分的S1 ...
S-DES加密过程
加密模型
输入输出
算法流程
密钥生成流程
已知10位的种子密钥k=(k0,k1,...,k9)k=(k_0,k_1,...,k_9)k=(k0,k1,...,k9)
执行P10P10P10置换变换得到m1=P10(k)m_1=P10(k)m1=P10(k)
5位一组分割成两组,每组内循环左移s位记作变换SLsSL_sSLs,对m1m_1m1进行5位一组分割的循环左移1位变换,得m2=SL1(m1)m_2=SL_1(m_1)m2=SL1(m1)
执行10位变8位的P8置换变换得到k1=P8(m2)k_1=P8(m_2)k1=P8(m2)
对m2m_2m2进行5位一组分割的循环左移2位变换,得m3=SL2(m2)m_3=SL_2(m_2)m3=SL2(m2)
执行10位变8位的P8置换变换得到k2=P8(m3)k_2=P8(m_3)k2=P8(m3)
加密流程
先来看加密算法,已知明文ppp
对ppp执行初始变换IPIPIP得到IP(p)IP(p)IP(p)
对IP(p)IP(p)IP(p)执行依赖密钥k1k ...