- 博客(9)
- 资源 (6)
- 收藏
- 关注
原创 对于文件操作中写操作的误解
由于对于文件从当中开始写操作一只有一个误解,就是用seek定位到文件内容的当中,然后写入缓冲区内的内容,之前一直以为文件的大小会发生增加,之前该位置之后的内容都会自动往后挪。然后看了《现代操作系统》中关于文件系统中的部分,才发现自己的理解是错的,这种写法,会将seek的位置之后的内容替换成缓冲区写入的内容,大小是缓冲区写入的内容的大小。...
2018-03-24 18:01:39 163
原创 多级页表的优点和缺点
多级页表是基于虚拟地址的分段来划分等级的,最低等级的页表上保存了最终的虚拟页号和物理页号的对应关系。例如拿32位的虚拟地址来说,如果页面的大小为4K,也就是12位,那么地址空间内将有20位,也就是1M的页表项目,每个项目对应一个虚拟页面。那么对于地址空间中用于表示页号的20位地址再次分级,分成10位的一级页号和10位的二级页号呢也就是说根据一级页号可以知道1K个连续的页面中是否已经有被加载到内存或...
2018-03-20 11:00:54 9843
转载 TLB的作用与机制
TLB(Translation Lookaside Buffer),转换检测缓冲区,是用来帮助CPU中的MMU进行地址转换的。在可分页系统中,每个进程都有自己虚拟地址空间和虚拟页面,当CPU执行进程代码读到虚拟地址时,不是直接将该虚拟地址送到地址总线上去访问内存,而是交给MMU去处理,进行虚拟地址和物理地址的转换。虚拟地址和物理地址的转换是依赖于进程 页表的,页表中保存了当前进程虚拟地址空间的页面...
2018-03-20 10:37:19 3478
原创 操作系统交换页面入门理解
对于操作系统来说,当物理内存不足以满足为当前进程增加新的页面的时候,需要将当前内存中的页面置换出去,置换出去的页面一般是存放到磁盘上的,在linux下,有一种文件系统叫做交换分区,就是用来存放被操作系统从内存中置换出去的页面。 一般有两种模式用来实现交换分区的功能: a.交换分区中保存进程的所有页面的副本 这种模式下,进程启动后,交换分区中就为该进程的虚拟内存空间分配了一...
2018-03-19 20:47:45 4129
原创 页表间共享页面
对于一个程序的多个进程实例来说,如果页表可以根据代码和数据分为两个,则可以节省较大的页表空间,因为这多个进程可以共享同一个代码的页表,而只需要个字维护自己的数据页表就可以了。对于这种情况,每个进程的进程表中需要维护两个指针,分别指向同一个代码的页表首地址以及属于各自进程自己的数据页表首地址。顺便提一下进程表的概念,进程表是保存在操作系统内核中的,用以给内核进行进程调度提供信息,进程表保存了进程的状...
2018-03-18 16:13:52 1671
转载 linux VolumnGroup
linux下VolumnGroup的作用是将一个或者多个物理磁盘上的一个或者多个物理分区整合起来形成一个抽象的物理卷,然后用户可以从这个整合的抽象的物理卷上分配自己需要的逻辑卷,而不用操作在哪个磁盘设备上面建立逻辑卷。 例如,如果有三块硬盘,除去的第一块盘上划分出的一个物理卷用来安装系统,第一块盘上剩下的分区以及其他两块盘上的所有空间首先被系统建立为三个物理卷(phy...
2018-03-16 14:45:49 237
转载 关于存储管理,缺页中断以及页表,TLB以及倒序页表的知识整理
早期的操作系统没有地址空间(如经典macos,windows3.1等),所有的进程都可以公用全部的物理内存,并且以物理地址访问内存,这样的操作会导致很多问题,例如程序中的代码访问的地址必须加上该程序的进程在内存中的偏移量进行访问,以及最致命的物理内存远远小于程序需要的存储容量,另外,程序在运行过程中还会额外申请更大的内存空间来使用。 对于“程序中的代码访问的地址必须加上该程序...
2018-03-15 17:58:42 3406
原创 管道和XARGS
近半年一直在linux环境下进行开发,使用的版本工具为svn每次提交代码时候,我都是使用svn st|svn ci -m 'xxxxxx'进行代码提交,我一直以为svn st首先列出需要上传的代码列表,然后通过管道到svn ci命令进程中。直到今天同事看到我这样操作,来问我为什么需要在svn ci前面svn st,我才发现了自己对于linux命令和管道认识上的一个巨大的错误。首先,对于管道(|)来...
2018-03-14 16:45:35 205
转载 C++等号操作符重载错误
今天在帮同事看一段代码时发现这么一个问题,虽然不大,但是困惑了不少时间,知道在CSDN论坛上找到答案,特此记录下来大家都知道,C++支持操作符重载,操作符重载可以有两种实现方式:成员函数和全局函数但是,我今天碰到的问题就是,我实现了一个等号操作符用来操作自定义类,编译的时候,提示void operator=(const A& ,const A&) must be a nonstat...
2018-03-14 15:48:00 2939 1
teraterm.zip
2020-06-03
makefile中文手册
2017-09-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人