- 博客(13)
- 资源 (32)
- 收藏
- 关注
转载 vs code 集成github
1. VSCode 默认已安装Git。输入git --version如果显示版本号,则安装成功。2. 在GitHub上新建一个仓库。例如:myrepo3. 在本地新建一个文件夹,作为VSCode代码的工作文件夹。例如:mycode4. mycode既是VSCode的代码工作文件夹又应该是Git的本地仓库。在命令行方式下进入mycode,输入git initgit init5. 添加用户名和邮箱。该用户名和邮箱是注册GitHub时使用的用户名和邮箱: git config --glob...
2020-07-29 07:45:00 295
原创 linux文件系统中文件阶段操作truncate
因为要给给文件系统增加数据索引功能,所以对文件系统进行了不少的修改(主要是仿照i_zone[]的方式进行索引数据的管理和存储),但是考虑到文件还有删除或者截断操作,我们就必须面对这个问题,看看文件系统是如何处理的。今天我们来看看ext2和minix是如何截断文件的:即,如何删除那些我们不需要的数据块了。 所谓的截断文件指的是:一个特定长度的文件,我们从某个位置开始丢弃后面的数据,之前的数据依然保留。对具体文件系统来说,截断数据主要意味着两件事情:1. 文件大小发生变化;2. 文件被截断...
2020-07-23 10:03:52 2273
转载 Linux内核Page Cache和Buffer Cache关系及演化历史
在我们进行数据持久化,对文件内容进行落盘处理时,我们时常会使用fsync操作(file sync,即文件同步),该操作会将文件关联的脏页(dirty page)数据(实际文件内容及元数据信息)一同写回磁盘。这里提到的脏页(dirty page)即为页缓存(page cache,也叫页高速缓存)。块缓存(buffer cache),则是内核为了加速对底层存储介质的访问速度,而构建的一层缓存。它缓存部分磁盘数据,当有磁盘读取请求时,会首先查看块缓存中是否有对应的数据,如果有的话,则直接将对应数据返回,从而减
2020-07-21 14:12:37 2241
原创 Page cache和buffer cache
这一段要在文件系统中对文件的记录增加索引。实现思路是借鉴了i_zone的三级间接寻址方案。i_zone实际上代表了3层意思,第一层是i_zone这个数组本身,它是放在episode_inode中的,只要拿到了episode_inode的指针或者对象,就可以直接访问;第二层,i_zone[0]--i_zone[9]的内容(就是一个blockid)所代表的那9个block、i_zone[7]-i_zone[9]指向的block里面存储的blocksize/4个blockid所代表的那blocksize/4个bl
2020-07-13 18:11:57 461
转载 使用PageCache读取文件元数据块
使用PageCache读取文件元数据块Linux 2.4的最大贡献是统一的PageCache与BufferCache,准确来说,它是讲所有数据都保存在了PageCache中,但是仍然保留了BufferCache的接口,以供如superblocks,bitmap,inode table,block table等文件元数据读写的使用。也即,与块设备交互时,我们依然使用bh抽象,但是,bh不会有自己的空间,其使用的是PageCache中对应页的空间。具体文件系统内部使用时,会在页上提供Buffer head抽
2020-07-10 13:33:42 414
转载 Linux系统中的高速缓存有哪几种
Linux系统使用了几种涉及到高速缓存的内存管理方法。1 缓冲区高速缓存缓冲区高速缓存中保存着块设备驱动程序所用到的数据缓冲区。这些缓冲区的大小固定,一般包括从块设备中读入的和将要写入到块设备中的信息块。块设备一次只能处理大小固定的数据块。硬盘就是块设备中的一种(这里指的是直接写硬盘这种块设备文件,我们平时用的是直接写普通文件,普通文件是一种文件类型,块设备文件也是一种文件类型,所以这里一定要区分清楚块设备和普通文件的区别)。缓冲区高速缓存使用设备标识符和块号作为索引来快速地查找数据块。块设备只通.
2020-07-10 11:30:11 931
转载 Linux内核空间中的高端内存HighMem
Linux内核地址映射模型x86 CPU采用了段页式地址映射模型。进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存。段页式机制如下图。Linux内核地址空间的划分通常32位Linux内核地址空间划分0~3G为用户空间,3~4G为内核空间。注意这里是32位内核地址空间划分,64位内核地址空间划分是不同的。Linux内核高端内存的由来当内核模块代码或线程访问内存时,代码中的内存地址都为逻辑地址,而对应到真正的物理内存地址,需要地址一对一的映射,如逻辑地址0..
2020-07-10 11:10:31 1397
转载 buffer_head的理解
在上一篇博客介绍address_space中,我们有提到,内存中一个page所包含的磁盘块在物理上不一定是相邻的。那么page中不同的磁盘块怎么管理呢?这里就涉及到了buffer_head结构。(实际上,我们的epsiode中设定了block大小和page 大小是一样的,都是4k,但buffer_head仍然大量存在,例如sb中的imap zmap,sbh,以及管理blockid的i_zone[10],我们下一步要做的i_index[]可能也得采用它)把块存放在页高速缓存page cache中就会涉及到
2020-07-10 10:07:08 2940
转载 dentry与inode
dentry与inode首先看dentry数据结构。位于include/linux/dcache.h中 struct dentryps:dentry虽然是目录的意思,但是在vfs中,目录和文件都有自己的dentry。(dentry中存了文件名,同一文件存在别名就是这个结构实现的) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
2020-07-09 16:19:52 1674 1
转载 linux文件系统的页高速缓存page cache中的核心数据结构address_space
address_space对象是文件系统中关于内存中页高速缓存的核心数据结构。这篇博客以address_space对象为切入点,分析文件系统的页高速缓存。1背景在文件系统中,内存中存在着dentry和inode结构,其中其分别的作用可以见我另一篇博客《dentry与inode》。由于这些结构要反复使用,所以内存里开辟了目录项高速缓存以及索引结点高速缓存,提高其访问速度。但这里要提到的是另一种高速缓存:页高速缓存,它是一种对完整的数据页进行操作的磁盘高速缓存,即把磁盘的数据块缓存在页高速缓存中。而ad
2020-07-09 10:51:21 2384 1
转载 段式、页式内存管理以及linux采用的方案图解
这两年的工作主要是写一个适用于高速传感器的文件系统,近期要实现在内核中增加对数据记录的索引,已经实现了数据和索引混合存储的方案,但效率低下,所以要实现一个数据和索引分离的机制。索引的方案类似早期minix文件系统中存储文件的blockid的i_data[10]数组类似的ji本篇跟大家说说内存管理,内存管理还是比较重要的一个环节,理解了它,至少对整个操作系统的工作会有一个初步的轮廓,这也难怪面试的时候常问内存管理。干就完事,本文的提纲:正文虚拟内存如果你是电子相关专业的,肯定在大学里.
2020-07-03 09:47:32 4070 6
转载 Linux内核内存管理算法Buddy和Slab
CPU所有的操作都是建立在虚拟地址上处理(这里的虚拟地址分为内核态虚拟地址和用户态虚拟地址),CPU看到的内存管理都是对page的管理,接下来我们看一下用来管理page的经典算法--Buddy。Buddy分配算法假设这是一段连续的页框,阴影部分表示已经被使用的页框,现在需要申请一个连续的5个页框。这个时候,在这段内存上不能找到连续的5个空闲的页框,就会去另一段内存上去寻找5个连续的页框,这样子,久而久之就形成了页框的浪费。为了避免出现这种情况,Linux内核中引入了伙伴系统算法(Buddy sy
2020-07-02 16:06:45 897
转载 基于内核模块实现linux内核中文件的读写
在为linux内核编写的模块中,用户空间的open,read,write,llseek等函数都是不可以使用的。而必须使用其在内核中对应的函数。可以使用filp->open配合struct file里的read/write来进行对文件的读写操作。直接上干货(内容自己悟!):例1 :filp->f_op->readfilp_openfilp->f_op->write#include <linux/kernel.h>#include <lin.
2020-07-02 14:46:55 1396
sensorPluginTest0916.zip
2020-09-16
数据库存储树结构ClosureTableCateogryStore-master.zip
2020-02-27
storage_ws_jin0906.tar.gz
2019-09-06
开源内存数据库的调研与分析.doc
2019-08-30
fastdb-arm.tar.gz
2019-08-23
ubuntu 16.04 opencv auto installation
2019-03-27
自然语言处理实践者指南Practitioner's guide to NLP part I
2019-01-15
Python code for Artificial Intelligence: Foundations of Computational Agents
2019-01-15
百页教程学机器学习the hundred page machine learning book pdf原版
2019-01-02
冰点下载器--百度文库豆丁网免费下载
2018-12-26
vcForPython27解决安装pycrypto报错vcvarsall.bat找不到问题
2018-06-01
手机app脱壳虚拟机镜像
2018-06-01
jd-gui1.4+dex2jar2.0+apkdb+apktool apk反编译套装
2018-05-31
win7 基于spring boot+elasticsearch+Redis+mysql+mybatis进行搜索引擎web开发--爬取IThome热评
2018-04-27
windows下redis管理工具treeNMS
2018-04-24
《C和指针》pdf高清版和《C陷阱和缺陷》以及源代码
2018-04-12
ROS的插件库pluginLIB机制讲解
2018-04-11
51CTO 机器人操作系统ROS精品课程PPT
2018-03-06
SSM框架——使用MyBatis Generator自动创建代码
2017-09-21
metronic 4.7.5 最完整版,共318M,文件中有链接
2017-09-06
quick4j IDEA进行javaweb开发的快速框架 maven+Spring+SpringMVC+shiro +myhatis
2017-09-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人