操作系统面经4:文件管理和输入输出管理
1 文件管理
1.1 文件的基本操作?文件属于抽象数据类型。为了恰当地定义文件,就需要考虑有关文件的操作。操作系统提供系统调用,它对文件进行创建、写、读、定位和截断。
创建文件:创建文件有两个必要步骤,一是在文件系统中为文件找到空间;二是在目录中为新文件创建条目,该条目记录文件名称、在文件系统中的位置及其他可能信息。
写文件:为了写文件,执行一个系统调用,指明文件名称和要写入文件的内容。对于给定文件名称,系统搜索目录以查找文件位置。系统必须为该文件维护一个写位置的指针。每当发生写操作,便更新写指针。
读文件:为了读文件,执行一个系统调用,指明文件名称和要读入文件块的内存位置。同样,需要搜索目录以找到相关目录项,系统维护一个读位置的指针。每当发生读操作时,更新读指针。一个进程通常只对一个文件读或写,所以当前操作位置可作为每个进程当前文件位置指针。
由于读和写操作都使用同一指针,节省了空间也降低了系统复杂度。
文件重定位(文件寻址):按某条件搜索目录,将当前文件位置设为给定值,并且不会读、写文件。
删除文件:先从目录中找到要删除文件的目录项,使之成为空项,然后回收该文件所占用的存 ...
基于脸部视频图像的早期老年痴呆诊断技术综述
1 摘要老年痴呆症是一种起病隐匿、呈进展性发展的神经系统退行性疾病。随着人口老龄化加剧,早期诊断老年痴呆对于阻止疾病发展至关重要。其中,基于脸部视频图像的老年痴呆诊断技术通过捕捉和分析患者的面部表情、动作等信息,为非侵入性诊断提供了新途径。综述近些年使用计算机视觉来进行面部识别进而诊断老年痴呆症相关的研究,尽管面临患者间面部特征差异大、诊断模型普适性不足等挑战,但该技术仍展现出巨大潜力,有望为老年痴呆症的早期诊断和防治工作带来新突破。
2 引言老年痴呆症作为一种随着全球人口老龄化趋势日益严峻而愈发普遍的神经退行性疾病,已成为全球主要的致残和致死原因之一。据统计,全球约有5500万人受到痴呆症的影响,其中最常见的类型包括阿尔茨海默病$^{\mathrm{[1]}}$(AD)、血管性痴呆、路易体痴呆(LBD)和额颞叶痴呆(FTD)。这类疾病不仅给患者本人的生活质量带来严重影响,也给家庭和社会带来了沉重的负担。然而,由于早期阶段的准确诊断方法匮乏,许多患者在症状明显时才得以确诊,从而错过了早期干预和治疗的最佳时机。
在老年痴呆症的复杂病程中,其发病过程呈现为一个高度渐进、持续恶化的动态演变 ...
论文AFT代码复现
1 AFT-simple123456789101112131415161718class AFT_Simple(nn.Module): def __init__(self, dim, hidden_dim=64, **kwargs): super().__init__() self.w_q = nn.Linear(dim, hidden_dim) self.w_k = nn.Linear(dim, hidden_dim) self.w_v = nn.Linear(dim, hidden_dim) self.out = nn.Linear(hidden_dim, dim) def forward(self, x): B, H, W, C = x.shape x = x.reshape(B, -1, C) q = self.w_q(x) k = self.w_k(x) v = self.w_v(x) y = torch.sig ...
论文精读1:An Attention Free Transformer
1 Abstract我们介绍了无注意力transformer(AFT),这是Transformer的有效变体,消除了对点积自注意力的需要。在AFT层中,键和值首先与一组学习到的位置偏置组合在一起,其结果以element-wise的方式与查询相乘。
这个新操作的内存复杂度与上下文大小和特征维度都是线性的,这使得它兼容于大的输入和模型大小。我们还介绍了AFT-local和AFT-conv两种模型变体,它们在保持全局连通性的同时利用了局域性和空间权重共享的思想。
我们在两个自回归建模任务(CIFAR10和Enwik8)以及图像识别任务(ImageNet-1K分类)上进行了广泛的实验。实验表明,AFT在所有基准测试中都表现出具有竞争力的性能,同时提供了出色的效率。
2 Introduction以Transformers为代表的自注意机制推动了各种机器学习问题的发展,包括语言理解和计算机视觉应用。与卷积神经网络(cnn)或循环神经网络(rnn)等经典模型架构不同,Transformer可以在序列中的每对元素之间进行直接交互,这使得它们在捕获长期依赖关系方面特别强大。
然而,Transforme ...
2024年X-Team夏令营考核任务2
1 exdark数据集低光数据集使用ExDark,该数据集是一个专门在低光照环境下拍摄出针对低光目标检测的数据集,包括从极低光环境到暮光环境等10种不同光照条件下的图片7363张,其中训练集5891张,测试集1472张,12个类别。
2 加载数据集2.1 实现思路exdark数据集中都是图片,看了一下原论文使用的coco数据集也都是图片,所以应该原论文代码中对数据集加载的代码应该可以用,但是需要修改一些地方。
原论文代码中加载数据集是使用的json格式,但是exdark数据集没有自带的json,所以可以先将标签之类的信息存储到一个json文件中。
不能直接使用了,因为源代码中使用了一个封装好的coco数据集类,但是我看了其中没有exdark数据集,所以相当于自己封装一个exdark数据集类吧,加油,一步一步来。
等一下,我突然想到一个问题,就是我把exdark数据集的格式搞得和coco数据集一样,那么我是不是就能用已经封装好的coco数据集类了?甚至直接使用coco类去加载exdark数据集。
2.2 coco数据集json详解1234567# coco_json结构示意{ ...
2024年X-Team夏令营考核任务1
1 知识储备实现aft-full/simple/conv,用它们替换代码中的tokenmixer部分,并做cifar100训练。
如果要替换代码中的token_mixer部分,需要首先实现aft-full/simple/conv。
1.1 cifar100CIFAR100数据集有100个类。每个类有600张大小为32 × 32的彩色图像,其中500张作为训练集,100张作为测试集。对于每一张图像,它有fine_labels和coarse_labels两个标签,分别代表图像的细粒度和粗粒度标签,对应下图中的classes和superclass。也就是说,CIFAR100数据集是层次的。
1.1.1 Top-1和Top-5我们在训练完某个分类网络后,假设我们需要分类的数量为50类,我们需要评估它的分类性能。输入测试集的每张图片,会得到它的50个类别的的概率。
Top-5准确率:在这张测试的图片50的类别中,取出概率最大的前五个类别,如果真实类别在这五个类别中,则预测正确,否则预测错误。
$$top5_{Accuracy}=\frac{真实类别在预测的5个类别中的数量}{所有测试 ...
信息安全实验5:SQL注入(字符注入)
1 实验环境
操作系统版本:Windows 11 家庭中文版23H2
VMware® Workstation 16 Pro:16.2.3 build-19376536
Metasploitable2虚拟机版本:2.6.24-16-server
2 实验内容2.1 判断注入点与注入类型(1)分别测试输入:1及1”
图2.1 判断注入类型:输入1
图2.2 判断注入类型:输入1”
由图2.2所示,从网页的url可知,页面采用GET方法提交数据,并且输入“1””后能够正确得到查询结果,所以推测注入类型为字符注入。
(2)测试输入:1及1’
之后输入1’进行测试,数据库报错如图2.3,这个错误提示是在使用MySQL数据库时,使用的SQL语法有问题,具体是在’1’处,所以可以推测SQL语句的闭合方式是单引号,并发现数据库为MySQL。
图2.3 判断注入类型:输入1’
(3)测试输入:1 and 1 = 1和1 and 1 = 2
图2.4 判断注入类型:输入1 and 1 = 1
图2.5 判断注入类型:输入1 and 1 = 2
由图2. ...
操作系统面经3:内存管理
1 存储器管理应具有的功能?存储管理的主要任务是为多道程序的运行提供良好的环境,方便用户使用存储器,提高存储器的利用率以
及从逻辑上扩充存储器,故应具有以下功能:
内存的分配和回收:实施内存的分配,回收系统或用户释放的内存空间。
地址变换:提供地址变换功能,将逻辑地址转换成物理地址。
扩充内存:借助于虚拟存储技术活其他自动覆盖技术,为用户提供比内存空间大的地址空间,从逻辑上扩充内存。
存储保护:保证进入内存的各道作业都在自己的存储空间内运行,互不干扰。
2 将用户程序变为可在内存中执行的程序的步骤?
编译:由编译程序将用户源代码编译成若干目标模块
链接:由链接程序将编译后形成的一组目标模块及所需的库函数链接在一起,形成一个完整的装入模块
装入:由装入程序将装入模块装入内存中运行
3 程序的链接方式有哪些?
静态链接:在程序运行之前,先把各个目标模块及所需库链接为一个完整的可执行程序,以后不再拆开。
装入时动态链接:将应用程序编译后所得到的一组目标模块在装入内存时采用边装入边链接的链接方式。
运行时动态链接:知道程序运行过程中需要一些模块时,才对这些模块进行链接。
4 ...
操作系统面经2:进程管理
1 进程与线程?1.1 进程的概念与定义在多道程序环境下,允许多个进程并发执行,此时他们将失去封闭性,并具有间断性及不可再现性的特征。为此引入了进程的概念,以便更好地描述和控制程序的并发执行,实现操作系统的并发性和共享性。
进程是程序的运行过程,是系统进行资源分配和调度的一个独立单位。
1.2 线程的概念和定义早期,在OS中能拥有资源和独立运行的基本单位是进程,然而随着计算机技术的发展,进程出现了很多弊端:
由于进程是资源拥有者,创建、撤消与切换存在较大的时空开销,因此需要引入轻型进程
二是由于对称多处理机(SMP)出现,可以满足多个运行单位,而多个进程并行开销过大
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,每条线程执行不同的任务。
1.3 进程和线程的区别
进程(Process)是系统进行资源分配和调度的基本单位,线程(Thread)是CPU调度和分派的基本单位;
线程依赖于进程而存在,一个进程至少有一个线程;
进程有自己的独立地址空间,线程共享所属进程的地址空间;
进程是拥有系统资源的一个独 ...
Python学习1:基础语法
1 相关工具1.1 IPythonIPython是一种基于Python的交互式解释器。相较于原生的Python交互式环境,IPython提供了更为强大的编辑和交互功能。可以通过Python的包管理工具pip安装IPython,具体的操作如下所示。
1pip install ipython
安装成功后,可以通过下面的ipython命令启动IPython,如下图所示。
2 语法2.1 类型转换可以使用Python中内置的函数对变量类型进行转换:
int():将一个数值或字符串转换成整数,可以指定进制。
float():将一个字符串转换成浮点数。
str():将指定的对象转换成字符串形式,可以指定编码。
chr():将整数转换成该编码对应的字符串(一个字符)。
ord():将字符串(一个字符)转换成对应的编码(整数)。
其中注意一下chr和ord,这两个之前没用过。
下面的代码通过键盘输入两个整数来实现对两个整数的算术运算。
1234567891011121314"""使用input()函数获取键盘输入(字符串)使用int()函数将输入的字符串转换成整 ...