自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 SELinux 基本原理

本文讲述 SELinux 保护安全的基本原理Rand_cs。

2024-01-01 22:34:07 1019

原创 BLP模型

如果低安全级别主体想要往高安全级别客体写,即 l1 domby l2(这里其实就是 l1 < l2,没有等于,应为如果有等于,则在 l1 eq l2 的时候便会判断通过了),说明想要违反 strong *-property,违反完整性规则,那么需要额外条件 h1 dom l2,可以这样理解:因为在完整性规则描述中,高级别可以向低级别进行写操作,所以既然主体的低安全级别已经小于了客体的低安全级别,那么就必须要满足主体的高安全级别大于客体的低安全级别(主体的安全级别范围里至少有一个要大于等于客体的安全级别)。

2024-01-01 22:26:20 1037

原创 SELinux策略语法以及示例策略

type a;#定义一个类型 atype a_t;#定义一个类型 a_t#定义一个属性 TestFile#定义一个类型 b_t,具有属性 TestFile#使a_t也具有TestFile属性type 和 attribute 两者位于同一个命名空间,也就是说如果定义了 type a,那就不能定义 attribute aa_t,后面有个 t 是表示 “type” 类型,这是 PC 端 SELinux 策略常见写法,但是 Android 不这样用,没有后缀。

2024-01-01 22:13:37 1181

原创 SELinux 安全模型——TE

通过前面的示例策略,大家对 SELinux 应该有那么点感觉认识了,从这篇开始的三篇文章讲述 SELinux 的三种安全模型,会涉及一些代码,旨在叙述 SELinux 内部的原理SELinux 提供了 3 种安全模型:RBAC:Role Based Access Control

2024-01-01 22:12:36 934 1

原创 SELinux 安全模型——MLS

BLP 模型:于1973年被提出,是一种模拟军事安全策略的计算机访问控制模型,它是最早也是最常用的一种多级访问控制模型,主要用于保证系统信息的机密性,是第一个严格形式化的安全模型暂时无法在飞书文档外展示此内容多层安全的核心:“”,所以只能向上写数据,从下层读数据,或者同级之间读写数据。此图有四个安全级别,由低到高分别为:unclassified → restricted → confidential → secret。

2024-01-01 22:11:27 894

原创 Ubuntu 上使能 SELinux

此文档说明如何在 ubuntu 上启用 SELinux,测试环境为虚拟机,开始前一定一定一定先来个快照,不要问我为什么有三个一定。

2023-11-29 00:28:02 1843 1

原创 SELinux(一) 简介

Subject,主体:访问的发起者,通常就是进程Object,客体:被访问的对象,一般是操作系统所管理的资源,最常见的就是文件Rules DB,规则库/策略:定义了主体客体的属性以及主体对客体的访问规则RVM:操作系统内实现的验证机制,上述访问控制策略的执行者,在访问操作过程中根据规则库判断当前操作是否合法DAC(Discretionary Access Control),自主访问控制机制,名字听着很陌生,但你一定很熟悉,就是 Linux 下那套常见的 ugo、rwx 规则。

2023-11-29 00:24:50 542

原创 xv6 内核空间共享

xv6 不需要内核页表同步,因为 xv6 在启动的时候,内核地址空间的映射关系已经建立好了,而纵观代码也没有修改内核地址空间映射关系的地方,所以内核地址空间的映射关系应是一直不变的。每个进程页表只需要映射它自己的地址空间以及跳转到内核那一小段代码段即可,跳转到内核后,切换到内核页表,在内核办完事儿后再切换回进程页表,这个过程似乎没有问题,也就是根本就没必要拷贝整个内核页表到进程页表的内核部分,那为什么还要这么做呢,让内核地址空间和进程用户地址空间在同一张页表共存?这就有个问题,如何共享的?

2023-11-29 00:23:04 399

原创 xv6 磁盘中断流程和启动时调度流程

而加入周期性的开中断后,CPU 便会响应中断。当有键盘输入时,中断当前的调度上下文而进入中断上下文,执行键盘中断处理程序,唤醒 shell 进程,中断处理完成后再回到调度上下文。假如当前系统只有一个进程(shell进程),它需要等待键盘输入而被阻塞(state==SLEEPING),内层循环是找不到 RUNNABLE 进程的,便回到外层循环,外层循环现在相当于什么也不做,便又再次进入内层循环。停更这么久啊,一直再忙工作,学习新的东西,时间不是很多,当然也有懒的原因,后面慢慢克服回归吧。

2023-11-29 00:21:47 959

原创 操作系统面经

前一段时间在面试,这里整理一下操作系统方向的面经分享给大家,我是因为做了一个简易的操作系统,面试问题也主要是围绕着操作系统展开,这里就面试遇到的问题以及我自己的想法整理一下,可以参考参考,有什么问题也还请批评指正。自己引申出来的问题黑色普通文字是我的“回答”或者与面试官闲聊的内容。

2022-09-22 22:59:19 364 1

原创 童年神机小霸王(七) Mapper

首发公号:Rand_cs,求关注支持Mappermapper,这个概念来源于 memory mapping,又叫做 Memory Management Circuit,它是解决地址映射的一种电路,简单来说就是决定物理内存如何映射到 CPU 或者 PPU 的地址空间。mapper 可以用来支持增加卡带的 RAM 甚至支持额外的音频通道,但更一般的目的就是控制物理内存到地址空间的映射,突破游戏 40KB 的限制。为什么说是 40KB 的限制,因为早期一般的游戏最大就是 16×2=32KB16 \ti.

2022-02-12 00:00:59 2309

原创 童年神机小霸王(六) 手柄

首发公号:Rand_cs,求关注支持Controller&FormatController本文讲述 NES 的输入设备,最为常见的就是手柄 joypad:一般支持两个手柄,手柄 1 和手柄 2 分别映射到 CPU 的地址空间 0x4016 和 0x4017,我们可以从这两个寄存器读出手柄按键的状态,1 代表按下,0 表示弹起状态。手柄的内部有个移位寄存器来存放这些键的状态,每次从 0x4016 读取的数据只表示一个键的状态,需要连续读取 8 次才能读取所有键的状态,8 个键的读取顺序.

2022-02-11 23:59:19 3740 1

原创 童年神机小霸王(五) 滚屏渲染 2

首发公号:Rand_cs,求关注支持Render&Scroll本文继续来说滚屏渲染,讲述每条 Scanline 每个周期具体干些什么事情以及一些高级玩法,屏幕分割技术,看看前面所说的大片级效果是如何制作的。还是先来看渲染部分,PPU (NTSC TV)每一帧渲染 262 条 scanlines,每条 scanline 又持续 341 个时钟周期,对此,wiki 上有一张很详细的图,看懂了,就大致明白了:上面一排数字表示周期,左边一列数字表示第几条 Scanline,也可以当作坐标来看.

2022-02-11 23:57:32 542

原创 童年神机小霸王(四) 滚屏渲染 1

首发公众号:Rand_cs,求关注支持滚屏渲染(基础部分)本文继续 PPU 的话题来讲述滚屏,从我们小时候玩游戏的经验知道 NES 是支持像素级滚屏的,这在当时那个年代是个创举,这也是为什么 FC/NES 那么火热的原因之一那 PPU 是如何支持像素级的滚屏?这就要先来看看 PPU 的一些硬件部分。内存映射寄存器首先来看看映射到 CPU 地址空间的一些寄存器,也是 CPU 与 PPU 通信的端口。从本文开始十六进制数我还是用 0x 表示,用 $ 有太多的格式问题,前文我每个 $ 前面加上了 \.

2022-02-11 23:55:50 723

原创 为什么魂斗罗只有128KB却能实现那么长的剧情有答案了

PPU首发公号:Rand_cs本文继续讲述 NES 的基本原理,承接上文的 CPU,本文来讲述 PPU,较为复杂,慢慢来看。例子基本都是使用的魂斗罗,看完本文相信对那问题“为什么魂斗罗只有128KB却可以实现那么长的剧情”有一定答案。废话不多说,直接来看,先是 PPU 的地址空间部分。地址空间PPU 有自己的总线,再来看看这张图:可以看出通过 PPU 总线能够访问到的地址空间主要由三部分组成:PatternTable, NameTable, Pallete,其中 PatterTable 是映

2022-01-20 12:44:28 3414 2

原创 红白机基本原理(二) CPU

CPU首发公号:Rand_csNES 使用的 CPU 为 6502,但与标准的 6502 有些许不同,最大的不同在于 NES 使用的芯片拥有一个 pAPU(pseudo-Audio Processing Unit),使其能够处理声音。本文主要来介绍 6502,废话不多说,直接来看内存布局前文简要介绍了 CPU 和 PPU 的地址空间,再来看看:CPU 的地址空间主要分为三部分,CPU RAM,内存映射寄存器,卡带中的内存 这三部分。由前文任天堂给出的总线图知道,地址总线有 16 位,所以可

2022-01-20 12:42:00 5353 1

原创 红白机基本原理(一)总述

Overview本来想直接开始写 CPU 的,想了想,还是先来写个总述,好有个大致概念。省去了很多东西,但总体大概就这么个样子。手柄是输入设备,电视为输出设备,CPU 为处理器,PPU 为图形处理器,卡带可以看作是存储的一部分任天堂给出的与 CPU 相关的总线图如下所示:可以看出地址总线为 16 位,但是数据总线只有 8 位。按照上图所示,其中 CPU 的地址空间分为三部分,一部分为 ROM,它位于卡带里面,RAM 为 CPU 自个儿的内存,I/O 为内存映射的一些寄存器,CPU 通过这些寄存

2022-01-20 12:34:46 6607

原创 红白机原理(零)前言

今天来聊聊 FC 游戏机,FC 的意思就是 Family Computer,虽然如今渐渐落寞被淘汰,但在当年的确是风靡全球,不负 Family Computer 这名字。FC 大家应该基本知道吧,emmm 应该还是有不知道的,就比如我那和蔼可亲爱看热血中二少年加后宫番的舍友就不知道,简单说一下,FC 就是打超级玛丽,魂斗罗的那个机器,现下基本很少见到这个东西了,现在的 PC 上也有相应的模拟器,较为成熟出名的有 Virtual NES 还有 FCEUX,可能还有其他的,不过我就了解这两个。一般来说 FC

2022-01-20 12:33:16 1516

原创 到底什么是挂载?

首发公号:Rand_cs在 LinuxLinuxLinux 的文件系统中,有个很重要的概念就是挂载,挂载大家应该都很熟悉,除了根文件系统,其他所有文件系统都要先挂载到根文件系统中的某个目录之后才能访问。所谓的根文件系统就是系统启动的时候安装的第一个文件系统,它也是内核映像所在的文件系统。而 挂载到某个目录 的 某个目录 就是所谓的挂载点。LinuxLinuxLinux 中有专门的命令来挂载文件系统,mount device dir,devicedevicedevice 为要挂载的设备文件名,dir.

2022-01-20 12:25:08 7601 4

原创 为什么计算重启后时间依然正确?

TIME首发公号:Rand_cs相信很多朋友接触计算机的时候都有这么一个疑惑,为什么计算机在关机断电,隔一段时间后重启的时间依然正确?这背后的原因其实不难猜测,关机后重启的时间正确说明关机的情况下时钟仍然在工作,关机的情况下时钟仍然在工作,说明这个时钟应是有备用电源支持它工作的。这个时钟叫做 RTCRTCRTC,RealRealReal TimeTimeTime ClockClockClock,可以“永久”的存放系统时间,也就是说它在系统关闭,没有电源的情况下也能继续工作。这里说的是没有计算机的

2022-01-20 12:21:52 1632

原创 给操作系统捋条线

前言时隔四个多月,终于把 xv6xv6xv6 这个系列写完了,我把它们整合起来做成了这个 PDFPDFPDF,并命名为给操作系统捋条线。在写第一篇计算机启动的时候,我就说过想要通过 xv6xv6xv6 给操作系统的前前后后,里里外外捋一条线出来,让自己让大家都对操作系统有个清晰的认识。可能有朋友还不知道 xv6xv6xv6 是个什么东西,都说 mitmitmit 的 6.8286.8286.828 课程是学习操作系统的神级课程,而 xv6xv6xv6 就是其教学使用的操作系统。xv6xv6xv6 这个系

2021-10-30 12:42:25 320 1

原创 了解文件系统调用吗?如何实现的?

文件系统调用本文接着上文系统调用,也是接着 xv6xv6xv6 文件系统的最后一层,讲述各种具体的文件系统调用是怎么实现的,文件描述符,inodeinodeinode,文件之间到底有什么关系,创建打开关闭删除文件到底是何意义,文件删除之后数据就不存在了吗,链接又作何解释等等问题,看完本文相信你能找到答案。基本数据结构前面的文章捋一捋文件系统中曾提到过,LinuxLinuxLinux 里会为每一个打开的文件维护两张表,一个是系统级的打开文件表,简称为文件表。还维护了一张进程级的打开文件表,且称为文件描述

2021-09-21 22:08:43 277

原创 多处理器下的中断机制

INTERRUPT中断是硬件和软件交互的一种机制,可以说整个操作系统,整个架构都是由中断来驱动的。中断的机制分为两种,中断和异常,中断通常为 IOIOIO 设备触发的异步事件,而异常是 CPUCPUCPU 执行指令时发生的同步事件。本文主要来说明 IOIOIO 外设触发的中断,总的来说一个中断的起末会经历设备,中断控制器,CPU 三个阶段:设备产生中断信号,中断控制器翻译信号,CPU 来实际处理信号。本文用 xv6xv6xv6 的实例来讲解多处理器下的中断机制,从头至尾的来看一看,中断经历的三个过程。其

2021-09-21 22:01:13 1506

原创 系统调用如何实现?

公号:Rand_csSYSCALL系统调用就是调用操作系统提供的一系列内核功能函数,因为内核总是对用户程序持不信任的态度,一些核心功能不能直接交由用户程序来实现执行。用户程序只能发出请求,然后内核调用相应的内核函数来帮着处理,将结果返回给应用程序。如此才能保证系统的稳定和安全。本文采用 xv6xv6xv6 的实例来讲解系统调用具体是如何实现的。系统调用是给用户态下的程序使用的,但是用户程序并不直接使用系统调用,而是系统调用在用户态下的接口。这个用户接口就是操作系统提供的系统调用 APIAPIAPI.

2021-09-21 21:51:34 757

原创 xv6 文件系统

文件系统公众号:Rand_cs本文继续来看 xv6xv6xv6 的文件系统部分,xv6xv6xv6 将文件系统的设计分为 7 层:磁盘→缓存区→日志→inode→目录→路径→文件系统调用磁盘 \rightarrow 缓存区 \rightarrow 日志 \rightarrow inode \rightarrow 目录 \rightarrow 路径 \rightarrow 文件系统调用磁盘→缓存区→日志→inode→目录→路径→文件系统调用 ,磁盘、缓存区、日志三个部分在前文已经说了,本文接着讲述 i

2021-08-30 19:31:34 1050 1

原创 你知道键盘是如何工作的吗?(xv6键盘驱动程序)

键盘驱动程序公众号:Rand_cs键盘如何工作的前文曾经说过,当时是以 Linux 0.11 为基础讲的但不系统,本文以 xv6 的键盘驱动程序为例来系统地讲述键盘是如何工作的。关于驱动程序前文磁盘那一篇说过了,它就是硬件物理接口的封装,所以了解键盘驱动程序,同样的还是先来了解键盘的一些物理接口。与键盘相关的芯片有两个,一个是键盘编码器 i8048,另一个是键盘控制器 i8042,分别来看。键盘编码器键盘编码器位于键盘,它的作用主要是监测键的按下和弹起,然后将两种状态编码,发送给键盘控制器。

2021-08-30 19:21:04 391

原创 如何实现一个简单的文件系统

日志公众号:Rand_cs本文来聊聊文件系统中的日志系统,来看一个简单的日志系统是如何实现的。本文是接着前面的 xv6 系列,用到的一些前导知识不再说明,没看的可以先看一下。文件系统设计中通常要考虑错误恢复,这是因为文件系统会涉及对磁盘的多次写操作,如果在写的过程中系统崩溃了,就会使得磁盘上的文件系统处于不一致的错误状态。日志就是设计来解决因为系统崩溃导致的错误问题,本文就 xv6xv6xv6 来讲解怎么实现一个简单的日志系统。在 xv6xv6xv6 的日志系统中,文件操作方面的系统调用并不会直

2021-08-30 19:17:47 482

原创 键盘是如何工作的?

键盘驱动程序公众号:Rand_cs键盘如何工作的前文曾经说过,当时是以 Linux 0.11 为基础讲的但不系统,本文以 xv6 的键盘驱动程序为例来系统地讲述键盘是如何工作的。关于驱动程序前文磁盘那一篇说过了,它就是硬件物理接口的封装,所以了解键盘驱动程序,同样的还是先来了解键盘的一些物理接口。与键盘相关的芯片有两个,一个是键盘编码器 i8048,另一个是键盘控制器 i8042,分别来看。键盘编码器键盘编码器位于键盘,它的作用主要是监测键的按下和弹起,然后将两种状态编码,发送给键盘控制器。

2021-08-22 10:49:06 782

原创 xv6 的锁机制

LOCK公众号:Rand_cs锁,大家应该很熟悉了,用来避免竞争,实现同步。本文以 xv6 为例来讲解锁本身是怎么实现的,废话不多说,先来看一些需要了解的概念:一些概念公共资源:顾名思义就是被多个任务共享的资源,可以是公共内存,也可以是公共文件等等临界区: 要访问使用公共资源,肯定得通过一些代码指令去访问,这些代码指令就是临界区并发:单个 CPU 上交替处理多个任务,宏观上看就像是同时进行的一样,但微观上看任意时刻还是只有一个任务在进行。并行:多个处理器同时处理多个任务,能够做到真正意义上

2021-08-16 16:45:49 767

原创 带你了解磁盘驱动程序(xv6)

磁盘驱动程序本文来聊聊磁盘驱动程序,驱动程序是硬件的接口,操作系统通过这个接口来控制硬件工作,所以驱动程序就好比是硬件和系统之间的桥梁。这是百科上给出的解释,可能看起来还是云里雾里,我来做做注解。每个硬件都有自己的 “CPU”(控制器),寄存器,有着自己的一套执行逻辑。对外提供了一些列的物理接口,就是那一个个端口(寄存器),可以通过设置这些端口来控制硬件工作。要知道直接通过物理接口来控制硬件工作是很繁复的,所以将这些接口给封装起来便于使用,这就是驱动程序。所以操作系统通过驱动程序提供的接口来间接控制硬

2021-08-16 16:43:09 2655

原创 多处理器下的调度

Rand_cs调度是操作系统里面一个很重要的概念,进程中有调度,页面置换有调度,磁盘访问也有调度,本文讲述的是进程之间的调度,以及多处理器之间的调度策略。废话不多时直接来看,先来简单了解各种概念:各种概念简析各种时间到达时间:进程到达等待队列的时间开始时间:CPU 开始执行进程的时间完成时间:进程执行完成的时间服务时间:进程在 CPU 上总共执行的时间等待时间/响应时间:进程在队列中等待的时间,即开始时间−到达时间开始时间-到达时间开始时间−到达时间周转时间:进程被提交给系统到完成的这.

2021-08-09 21:12:57 630

原创 xv6 内存管理

前文讲述了 xv6 的启动过程,本文接着讲述 xv6 内存管理的部分,直接来看。公众号:Rand_cs启动部分完善前文只是介绍了启动的过程,但是各类函数之间的调用,地址的变换,内存布局的变化并没有详细说明明,本节来完善。BIOS还是从 BIOS 开始,入口点是 0xffff00xffff00xffff0,是一跳转指令 jmp  f000:e05bjmp \ \ f000:e05bjmp  f000:e05b,然后开始执行 BIOS 的代码,内存低 1M

2021-08-09 21:11:31 1269 1

原创 魔方还原算法(三) 上帝算法

本文是有关魔方还原算法的第三篇,上帝算法——krof 算法。在篇一的时候说过,上帝算法那就是上帝还原魔方使用的算法嘛,上帝无所不知所以在还原的过程中每一步总是能够朝着距离还原状态更近的方向前进。因此使用上帝算法来还原魔方总是能够以最小步数来还原。那么我们人类要怎么实现上帝算法呢?最直观的想法那就是要创建一张超大的表,里面存放魔方所有状态和能够使它距离还原状态更近一步的转动。这个想法的确是对的,看着上帝算法这么高大上的名字,实际上就是一种暴力美学。暴力归暴力,实现的时候也还是要注意优化,首先我们并不需要存

2021-07-29 11:54:17 1845 2

原创 捋一捋磁盘及分区

磁盘即分区温彻斯特硬盘今天我们所使用的机械硬盘实质上都是温彻斯特硬盘,最早是在 1973 年由 IBM 研制的一种新型硬盘 IBM 3340。它使用了一种了不起的技术:磁头不与盘片接触,只有不予接触才可能有着更高的转速而且磁盘才不易损坏。至于这个名字的来历,是因为 IBM3340 拥有两个 30MB 的存储单元,而当时一种很有名的 “温彻斯特来福枪” 的口径和装药也恰好包含了两个数字 “30”;于是这种硬盘的内部代号就被定为 “温彻斯特”。我们来看看这种硬盘的结构图:盘片盘面磁头上图中光盘状的东

2021-07-29 11:53:05 430

原创 捋一捋系统调用

系统调用就是调用操作系统提供的一系列内核功能函数,因为内核总是对用户程序持不信任的态度,一些核心功能不能交由用户程序来实现执行。用户程序只能发出请求,然后内核调用相应的内核函数来帮着处理,将结果返回给应用程序。如此才能保证系统的稳定和安全,关于系统调用的这些理论知识不多说,书本上有一大堆,本文旨在捋清楚系统调用这条线。总述Linux 里系统调用是由中断来实现的,既然利用中断实现,那么总体来说系统调用的过程应该与中断的过程相似。也的确如此,总体流程是差不多,但也有所区别。每一种中断都会有一个中断向量号或

2021-07-29 11:51:24 343

原创 魔方还原算法(二) 科先巴的二阶段算法

科先巴的二阶段算法本文来具体介绍一种具体的魔方还原算法——科先巴的二阶段算法,有一部分相关内容在前篇讲述,主要是方向定义那一块儿,没有看的建议先看一下:二阶段,顾名思义,解决问题分为两步,先完成一个目标,再最终复原。对于二阶段算法有一个生动的比喻,复原魔方就像是一条小船要在汪洋大海上行驶到一个固定的目的地。二阶段算法就是先让小船行驶到一个固定的特殊水域,再驶向最终的目的地,这显然比直接寻找目的地要容易简单的多。比喻归比喻,终归抽象,我们来具体看看。一、总述为方便叙述,也避免搞混淆,我们定义任意打乱

2021-07-29 11:50:34 6311 8

原创 再谈中断机制(APIC)

中断是硬件和软件交互的一种机制,可以说整个操作系统,整个架构都是由中断来驱动的。一个中断的起末会经历设备,中断控制器,CPU 三个阶段:设备产生中断信号,中断控制器翻译信号,CPU 来实际处理信号。中断控制器前面的文章曾讲过一些 PIC,PIC 只用于单处理器,对于如今的多核多处理器时代,PIC 无能为力,所以出现了更高级的中断控制器 APIC,APIC 分成两部分 LAPIC 和 IOAPIC,前者 LAPIC 位于 CPU 内部,每个 CPU 都有一个 LAPIC,后者 IOAPIC 与外设相连。外设

2021-07-29 11:48:27 2139

原创 实例讲解多处理器下的计算机启动(xv6的启动过程)

启动启动方面的文章之前也写过,那是我的第一篇文章,本文在前文的基础之上完善,然后增加了多处理器启动的情况,废话不多说直接来看。启动可以分为两种,一种为冷启动,是指计算机在关机状态下按 POWER 键启动,又叫硬件启动,比如开机,这种启动方式在启动之前计算机处于断电状态,像内存这种需要加电维持的存储部件里面的内容都丢失了,加电开机那一刻里面的值都是随机的,操作系统会对其进行初始化。而热启动是在加电的情况下启动,又叫软件启动,比如重启,这种启动方式在启动之前和启动之后电没断过,内存等存储部件里面的值不会改

2021-07-29 11:47:49 967

原创 捋一捋磁盘及分区

温彻斯特硬盘今天我们所使用的机械硬盘实质上都是温彻斯特硬盘,最早是在 1973 年由 IBM 研制的一种新型硬盘 IBM 3340。它使用了一种了不起的技术:磁头不与盘片接触,只有不予接触才可能有着更高的转速而且磁盘才不易损坏。至于这个名字的来历,是因为 IBM3340 拥有两个 30MB 的存储单元,而当时一种很有名的 “温彻斯特来福枪” 的口径和装药也恰好包含了两个数字 “30”;于是这种硬盘的内部代号就被定为 “温彻斯特”。我们来看看这种硬盘的结构图:盘片盘面磁头上图中光盘状的东西就是盘面,

2021-07-10 11:44:51 345

原创 魔方还原算法(一) 概述

写在前面我最初接触魔方的时候是在初二,那时不知是谁先起的头,然后全班都开始玩。我也不例外,花了一晚上学了学层先法,层先法挺简单的,只有几个公式,一晚上就会了。从那时起我也是能够复原魔方的人了,但是层先法复原魔方速度很慢,到了高中又学了学 CFOP 这个高级还原公式,速度提升很多。我玩魔方吧也没想过去拼什么段位追求 sub 几几几,就一业余爱好,魔方随时放在旁边,兴起时就转两把。而最近开始写公众号,一直想写点不一样的,然后就瞄准了魔方,关于魔方的研究国内其实不少,但数学偏多,有关计算机方面讲述还原算法的文

2021-06-02 19:09:15 9194 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除