
OS相关
文章平均质量分 84
OS的一些皮毛
花事了哎
这个作者很懒,什么都没留下…
展开
-
汇编的杂乱无章
从汇编的角度理解程序(三)—— 函数调用我们已经知道,程序是按顺序执行的指令流水线(PipeLine)。分支和循环逻辑,可以通过在流水线中往后跳或往前跳实现。其实,函数调用也不过是在跳转。调用某个函数,就跳转到那个函数的指令流的开始位置,函数执行完成后,再跳转回来。函数能获取外部写入的数据(输入),能持有自己独特的数据(本地状态),还能向外部写数据(输出)。而理论上程序所拥有的函数数量是无限的,但是寄存器的数量却很少,无限的函数怎么通过有限的寄存器数量来保存它们各自的数据呢?一、 如何通过跳转实现函原创 2021-10-22 20:06:05 · 203 阅读 · 0 评论 -
汇编的杂乱无章
从汇编的角度理解程序(三)—— 函数调用我们已经知道,程序是按顺序执行的指令流水线(PipeLine)。分支和循环逻辑,可以通过在流水线中往后跳或往前跳实现。其实,函数调用也不过是在跳转。调用某个函数,就跳转到那个函数的指令流的开始位置,函数执行完成后,再跳转回来。函数能获取外部写入的数据(输入),能持有自己独特的数据(本地状态),还能向外部写数据(输出)。而理论上程序所拥有的函数数量是无限的,但是寄存器的数量却很少,无限的函数怎么通过有限的寄存器数量来保存它们各自的数据呢?一、 如何通过跳转实现函原创 2021-10-22 20:02:35 · 319 阅读 · 0 评论 -
无符号格式化输出的区别%d,%u?
上来就是重点unsigned int uint;int i = -1;uint = i;printf("%x %u %d\n", uint, uint, uint);printf("%x %u %d\n", i, i, i);//输出 ffffffff 4294967295 -1 ffffffff 4294967295 -1/* 因为 根据打印格式打印的 %d 有符号32位整数 %u 无符号32位整数 %lld 有符号64位整数*/uint = 0xffffffff;i =原创 2021-10-13 13:01:16 · 8347 阅读 · 1 评论 -
虚拟机NAT模式下物理主机和虚拟机ping的问题
原文链接:https://blog.youkuaiyun.com/ww1473345713/article/details/51490525在NAT模式下物理机无法ping通虚拟机 今天在做一个端口转发实验时遇到了一个问题,发现在NAT模式下自己的虚拟机可以ping通物理机,但是物理机ping不同虚拟机。自己又不想换成桥接模式,怎么办呢,我也不知道。 众所周知,在NAT模式下,物理机和虚拟机互相通信是完全没有问题的,那么问题就应该出现在外地网络配置上面。原因:最大的原因可能是因为VMware Networ原创 2021-09-07 00:35:46 · 1313 阅读 · 0 评论 -
如何理解存储器层次
转: https://zhuanlan.zhihu.com/p/51869081随着摩尔定律指引下半导体行业的发展迅猛,CPU运算能力显著增长,此时如何构建与之匹配的高效存储器问题随之而来。这问题好比诸位解题高手,约莫五分钟就解出手头卷子的题目,但下一套卷子尚需半小时才能从教务处慢慢悠悠送来。这自然不能忍耐。本文尝试通俗地解释计算机高效运行的基础:存储器层次结构Memory hierarchy在这里插入图片描述看图很头大吧?下面尽量通俗地从构建和运行两个角度解读“层次结构:Cache、TL原创 2021-09-05 23:39:35 · 156 阅读 · 0 评论 -
《操作系统》之I/O系统
计算机的两个主要工作是I/O和处理,在很多情况下,主要工作是I/O,而处理只是附带的。例如:当浏览器网页和编辑文本时,直接兴趣是读取或者输入信息,而非计算。计算机的操作系统I/O 的功能是,管理和控制I/O 操作和I/O设备。概述计算机设备的控制是操作系统的设计人员的主要关注之一。因为I/O设备的功能与速度差异很大。所以需要采用不同的方法来控制设备,这些方法构成了内核的I/O子系统。I/O设备技术呈现两个冲突趋势。一方面。软件和硬件的接口标准化日益增长。这个趋势有助于将改进和升级设备,从而可以集成到原创 2021-08-07 23:21:39 · 1661 阅读 · 0 评论 -
《操作系统》之文件系统篇(二)- 文件系统实现
文件系统结构文件系统本身通过由许多不同层组成,每层的设计利用更低层的功能,创造新的功能。I/O控制层(I/O control):包括设备驱动和中断处理程序,以在主内存和磁盘系统之间进行信息交流。基本文件系统(basic file system): 本层需要发送通用命令给设备驱动层,并且还要管理内存缓冲区和保存各种文件系统,目录和数据块的缓存。文件组织模块(file-organization module): 知道文件及其逻辑块以及物理块。由于知道所用的文件系统的类型和文件位置,文件组织可以将逻辑块原创 2021-08-07 19:53:39 · 639 阅读 · 0 评论 -
《操作系统》之文件系统篇(一)- 基本概念
基本概念文件文件是操作系统对存储设备的物理属性加以抽象定义的逻辑存储单位。文件包括文件的属性和操作:属性包括:名称,标识符,类型,位置,尺寸,权限,创建和修改时间,文件的所有者和使用者等等。文件的操作包括:创建文件,读文件,写文件,重新定位文件的读写位置,删除文件和截断文件。进行文件操作的实质?上面的文件操作涉及搜索目录。为了方便文件操作的搜索更简单,许多系统在首次使用文件之前进行系统调用open()。 操作系统在内核上维护一个打开文件表用于维护所有打开文件的信息。当进行访问文件时,直接使用这原创 2021-08-07 16:34:15 · 539 阅读 · 0 评论 -
《操作系统》之磁盘篇(二)-RAID结构
本来打算在磁盘(一)中讲,但是RAID在后面的文件系统中很重要,所以单独提出来。RAID结构磁盘冗余阵列(Redundant Array of Independent Disk, RAID) 是由多块硬盘通过RAID 控制器控制管理组成的一个更大容量的逻辑盘,在操作系统中识别为一个盘符。RAID什么是RAID?RAID :磁盘阵列1988年由加利福尼亚大学伯克利分校提出来的。多个磁盘合成一个“阵列”来提高更好的性能,冗余,或都提供。RAID 可以提高磁盘I/O能力,也可以提高磁盘的耐用性。原创 2021-08-07 12:41:07 · 1890 阅读 · 0 评论 -
《操作系统》之磁盘篇
磁盘现代计算机系统最常用的外部大量存储就是磁盘或者硬盘。磁盘的大致结构为图上所示。他包括一系列的盘片(platter),在盘片的两面都涂着磁质材料。通过在盘片上进行磁性记录可以保存信息。读写磁头(read-write head)在一个盘片“飞行”从而可以读写数据。磁头是悬挂在磁臂(arm)上的,磁臂将所有磁头作为一个整体和进行一起移动。每一个磁盘的盘片(platter)上逻辑的可以分为磁道(track)。磁道又可以分为扇区(sector)。同一磁道上的柱面形成了柱面(cylinder)。每个磁盘驱原创 2021-08-07 12:24:23 · 1023 阅读 · 0 评论 -
操作系统个人见解之内存篇
1.逻辑地址和物理地址?进程的地址空间。内存,虚拟内存和交换空间是怎么回事? 为什么进程地址空间可以比物理内存大?个人理解这个这个问题就通俗的比喻下就是一座高楼,和图纸的比喻。(虽然这个在后面分页分段的映射上不能使用,但是这是一个区别物理和逻辑地址好的方法)。物理地址就是楼层的建好后的实体, 每个物理地址代表这个楼房的一个位置。逻辑地址就好比手里拿到的工程师拿到图纸,你也可以通过地址指出楼的不同位置,但是只是逻辑上的,而不是实际运行的。进程的地址空间其实也类比下,实际的物理地址空间。比如32位的物理原创 2021-08-07 00:58:47 · 127 阅读 · 0 评论 -
《操作系统》之内存篇(七)-内存分配,伙伴系统,slab策略
分配内核内存在用户模式下运行进程请求额外的内存时(new, malloc)时,从内核【操作系统】维护的空闲页帧列表上分配页面(书上的这句话,我理解为,new和malloc的时候,在虚拟空间会在堆空间进行申请内存,但是映射到物理内存,需要重新分配物理帧,而这个帧是由内核维护的空闲帧列表上来的)。这个帧的列表是用来进行页面置换的,所以在它相邻的部分,不一定是来自于进程的同一个连续的虚拟内存,而是来自于物理内存的不同空闲页面。而且在用户申请单个字节的时候,他为了避免内存碎片,会分配整个帧给进程。用于内核分配原创 2021-08-07 00:54:43 · 960 阅读 · 0 评论 -
《操作系统》之内存篇(六)-内存映射
内存映射文件假设采用标准系统调用open(), read(), write()来顺序读取磁盘文件。每个文件的访问都需要系统调用和磁盘访问。或者采用虚拟内存技术,将文件I/O作为常规的内存访问。这种方法称为内存映射文件,它允许虚拟内存和文件进行逻辑关联。基本机制实现文件的内存映射,是将每个磁盘块映射到一个或者多个内存页面。(注意这里是内存页面,内存页面,内存!!!重要的事情说三遍)最初,文件访问按普通请求调页来进行,从而产生缺页错误。这样,**文件的一个页面或者多个页面大小的内容从文件系统读取到了物理原创 2021-08-07 00:34:30 · 1607 阅读 · 0 评论 -
《操作系统》之内存篇(五)-页面置换
页面置换在内存分配页面的时候,不仅用于保存程序页面,用于I/O 的缓冲也需要消耗大量的内存,这种使用会增加内存置换算法的压力。确定多少内存给用户程序,多少内存给I/O缓冲去是个很棘手的问题,有的系统给I/O缓冲分配了固定百分比的内存,有些系统则允许用户进程和I/O子系统进行竞争所有内存。基本概念当用户进程在执行时,可能发生缺页错误。操作系统确定所需要页面的磁盘位置,但是却发现内存上没有空闲的帧。所有内存都在使用。这时,操作系统不能终止一个进程来释放,因此这样太不友好了。此时,它会选择交换出一个进程,以原创 2021-08-07 00:26:29 · 659 阅读 · 0 评论 -
《操作系统》之内存篇(四)-虚拟内存
经过以前的学习,了解到了内存的管理策略。不管是分页,还是分段,或者是页表的管理策略。这些都有一个共同的目标:将多个进程都保存在内存中,这一操作,都是为了保证在进程启动时,进程处于内存中。但是虚拟内存技术允许执行进程不必完全处于内存。这就使得程序可以完全大于物理内存,从而在开发的过程中,程序员不用担心内存的限制。基本概念**虚拟内存:**虚拟内存可以是一种逻辑上扩充物理内存的技术。它会把进程的逻辑地址空间进行扩展。(书中说的虚拟内存,可以看做是假象的逻辑内存,虽然在平常使用top 命令看到了虚拟内存表示原创 2021-08-07 00:08:23 · 227 阅读 · 0 评论 -
《操作系统》之内存篇(三)-分页的页表结构
之前讨论了分段和分页,现在看下页表的主要涉及的页表结构。分层分页大多数现代计算机系统支持大逻辑地址空间(2^32 ~ 2^64)。这种情况下,页表本身可以非常大。例如:假如具有32位逻辑地址空间的一个计算机系统。如果系统的页大小为4KB(2^12)。那么页表可以多达100万的条目 (2^32/ 2^12)。假设某个项目有4字节。那么每个进程需要4MB的地址物理地址来存储页表本身。显然,我们并不想在内存中连续分配这么多页表。这个问题的一个简单的解决方法就是讲页表划分为更小的块。完成这种划分方法有很多种原创 2021-08-06 23:48:37 · 2994 阅读 · 0 评论 -
《操作系统》之内存篇(二)-分段-分页
分段 基本概念在编写代码的时候,程序员认为它是由主程序加上一组方法,过程或者函数的集合。他还包括这种数据结构:对象,数组,堆栈,变量。每个模块或者数据元素通过名字来引用。而不关心具体的内存位置。分段就是支持这种用户视图的内存管理方法。逻辑地址空间是由一组段构成。每个段都有名称和长度,比如,代码段,数据段,堆栈,堆等等。地址指定了段名称和段内偏移。所以段一般是由两个量来进行表示:<段号, 偏移>通常,在编译用户程序的时候,编译器会自动生成:代码全局变量堆栈程序库分段的硬原创 2021-08-06 23:21:22 · 756 阅读 · 0 评论 -
《操作系统》之CPU调度
基本概念根据之前进程一章中的介绍,进程的执行一般会分为两个执行周期:CPU执行和I/O等待。**抢占调度:**在进程执行的过程中,CPU被操作系统中断而执行其他进程的调度,称为抢占调度。**非抢占调度:**一个进程分配到CPU 后,该进程会一直占用CPU,直到它终止或者切换到等待状态。进程调度算法先到先服务(First-Come First-Served, FCFS)最简单的调度算法:可以采用FIFO队列实现。最短作业优先(Shortest-Job-First, SJF)当CPU变为空闲时原创 2021-08-06 23:04:25 · 400 阅读 · 0 评论 -
《操作系统》之内存篇(一)
《操作系统概念精要》之内存篇(一)基本概念内存是现在计算机运行的核心。CPU可以直接访问的通用存储只有内存和处理器的内置寄存器。机器指令可以用内存地址作为参数,但是磁盘地址不可以。在访问速度上,寄存器的内容一般都可以在一个时钟周期解释并执行完。但是对于内存,可能需要多个时钟周期。所以为了访问速度上能更加快速,一般会有高速缓存。在系统安全上,首先,用户的进程不能影响操作系统的执行; 在多用户系统上,还应该保护不同的进程之间不能互相影响。所以一般会有专门的硬件方式来进行保护。为了进程之间不会相互影响,原创 2021-08-06 22:59:03 · 419 阅读 · 0 评论