当前位置: 首页 > news >正文

网络招商平台网站怎么做营销型网站建设公司哪家好哪个好哪里好

网络招商平台网站怎么做,营销型网站建设公司哪家好哪个好哪里好,前端一个页面多少钱,建材外贸网站建设W...Y的主页 #x1f60a; 代码仓库分享 #x1f495; 前言#xff1a;我们前面的博客中一直提到的是被进程打开的文件#xff0c;而系统中不仅仅只有被打开的文件还有很多没被打开的文件。如果没有被打开#xff0c;那么文件是在哪里进行保存的呢?那我们又如何快速定位… W...Y的主页 代码仓库分享 前言我们前面的博客中一直提到的是被进程打开的文件而系统中不仅仅只有被打开的文件还有很多没被打开的文件。如果没有被打开那么文件是在哪里进行保存的呢?那我们又如何快速定位一个文件的具体位置呢话不多说开始我们今天的旅程。 磁盘 说到文件的存储我们先来了解一下磁盘的构成。 磁盘的机械构成 磁盘是计算机存储设备的一种它用于存储和读取数据。磁盘的机械构成主要包括以下几个部分 1. 盘片Platter这是磁盘的主要部分通常由铝或其他磁性材料制成。数据以磁性形式存储在盘片上。现代硬盘驱动器HDD通常包含多个盘片它们被堆叠在一起。 2. 读写头Read/Write Head这些是用于读取和写入数据到磁盘表面的精密设备。每个盘片的每个面都有一个读写头它们悬浮在盘片上方非常微小的距离上。 3. 磁头臂Actuator Arm这是连接读写头和驱动器主体的机械臂。当数据被请求时磁头臂会移动读写头到正确的盘片位置。 4. 主轴Spindle这是盘片中心的轴盘片固定在主轴上并随其旋转。主轴的旋转速度通常以每分钟转数RPM来衡量常见的转速有5400 RPM、7200 RPM等。 5. 电机Motor电机用于驱动主轴旋转使盘片旋转到所需的速度。 6. 控制电路板Control Circuit Board这是硬盘的电子部分包含用于控制磁盘操作的微处理器和接口电路。它负责协调读写头的位置、数据传输和与计算机的通信。 7. 外壳Enclosure这是硬盘的外部结构用于保护内部组件免受物理损害。 8. 缓存Cache硬盘可能包含一个小型的快速存储器称为缓存用于临时存储频繁访问的数据以提高性能。 9. 接口Interface这是硬盘与计算机其他部分通信的接口常见的接口类型有SATA、SAS等。 硬盘的工作原理是通过电机驱动盘片旋转磁头臂移动读写头到正确的盘片位置然后读写头通过改变盘片表面的磁性来存储或读取数据。这个过程需要非常精密的机械协调和电子控制。随着技术的发展固态硬盘SSD逐渐取代了传统的机械硬盘因为它们没有移动部件读写速度更快耐用性更高。 磁盘的物理存储 磁盘的物理存储主要是指硬盘驱动器HDD中数据的物理存储方式。 盘片Platter硬盘驱动器包含一个或多个圆形的盘片这些盘片通常由铝、玻璃或陶瓷材料制成并覆盖有磁性涂层。数据以磁性的方式存储在盘片上。 磁性颗粒Magnetic Particles盘片上的磁性涂层由数以亿计的微小磁性颗粒组成。这些颗粒可以被磁化成两种不同的状态通常表示二进制数据的0和1。 磁道Track数据在盘片上以同心圆的形式存储每个同心圆称为一个磁道。磁道是数据存储的物理路径。 扇区Sector磁道被进一步划分为更小的单元称为扇区。扇区是数据存储的基本单元通常大小为512字节或4096字节在现代硬盘中。 读写头Read/Write Head硬盘驱动器的每个盘片面都有一个读写头用于读取或写入数据。读写头通过电磁场的变化来检测或改变盘片上的磁性颗粒状态。 磁头臂Actuator Arm读写头安装在磁头臂上磁头臂可以移动读写头到盘片上的不同位置以便访问不同的磁道。 伺服系统Servo System硬盘驱动器使用伺服系统来精确控制磁头臂的位置确保读写头能够准确地定位到正确的磁道和扇区。 旋转速度Rotational Speed盘片的旋转速度影响数据访问速度。转速以每分钟转数RPM来衡量常见的转速有5400 RPM、7200 RPM等。 硬盘驱动器的物理存储方式依赖于磁头和盘片的精确协调。数据的读写是通过改变磁性颗粒的极性来实现的。 虽然说一个磁盘是一个圆形的物体但是在上面存储的数据并不是杂乱无章的。其实磁盘上有很多同心圆——也叫磁道。而同心圆中的一小段被称作扇区是磁盘IO的基本单位但不一定是系统的基本单位一般情况下大小为4kb或521字节。虽然扇区的面积不同但是可以通过密度的调整让其扇区的大小都是一样的。 扇区、磁头、盘面、磁道都有自己的唯一编号所以我们想要访问一个具体的扇区首先我们先通过磁头定位到哪一个磁道/柱面然后确认使用哪一个磁头进行读取(本质就是使用哪一个盘面)最后确认到哪一个扇区。这种在硬件层面上定位一个扇区被我们称为——CHS定位法。 磁盘的逻辑存储 磁带我们想必都见过小学时使用的英语听力一般使用的就是磁带。磁带存储内容就是我们下图所看到的长条。当我们将磁带拉直像不像我们所学的一种数据结构——线性表。 我们通过磁带来类比磁盘如果我们将一个个扇区看作一段空间将他们全部拼接起来不也就是线性表吗假设一个磁盘有800GB内存一个扇区所占空间是512字节那么我们就可以看到下图 所以我们对磁盘的管理也就变成了对数组的增删查改 但操作系统觉得一个扇区512字节太小因为磁盘是一个硬件而硬件的速度是很慢的磁盘IO太麻烦所以OS就将文件IO定在4KB。操作系统会选择连续的8个扇区作为数据块这样操作系统又会形成一个数组大小为4kb的数据块。 这样的操作系统也可以将自己的IO转换到磁盘中4kb等于8个512字节所以当数据块下标为1时想要对应磁盘中的扇区只需要1*8 [01234567]即可一一对应。我们只需要知道起始扇区偏移量就可以做到对应。 所以从此往后整个磁盘不会以扇区作为单位而是以数据块作为单位我们将数据块的下标叫做LBA地址。 系统对内容的管理 我们都见过Windows中的C盘D盘E盘等等为什么要分这么多盘呢因为系统要对我们的内存进行管理如果800GB放一个盘中会比较大不好进行管理而且分盘可以对电脑的性能提升。所以我们要分区/分盘管理Linux下也是如此。 分盘管理是将大的空间进行缩小化磁盘的管理方式都是类似相同的所以我们要把512GB内存管理好从而就进化到管理好256GB内存即可。但是256GB还是有些大这时操作系统就会做一些我们看不到的事情——分组。 将256GB内存分成10GB左右更小的内存进行管理这样我们的问题从如何管理好256GB转移到如何管理好10GB内存了。  作系统中的内存分组是指操作系统将内存划分成多个逻辑组或分区以便于更有效地管理内存资源。内存分组可以基于不同的标准例如用途、访问频率、安全性等。 代码区存储程序的指令代码通常被设置为只读以防止程序代码被意外或恶意修改。 数据区用于存储程序运行时的数据包括全局变量和局部变量等。 堆栈区每个线程或进程都有自己的堆栈用于存储函数调用的参数、局部变量和返回地址。 堆区动态内存分配区域程序在运行时可以申请和释放内存。 内核区操作系统内核代码和数据结构的存储区域通常与用户空间隔离以提高安全性。 缓存区用于存储频繁访问的数据以提高访问速度。 I/O缓冲区用于临时存储输入输出操作的数据可以减少I/O操作的延迟。 虚拟内存区当物理内存不足时操作系统可以使用硬盘空间作为虚拟内存通过页面置换算法管理内存。 共享内存区允许多个进程共享同一块内存区域用于进程间通信。 保护模式在某些操作系统中内存分组还包括不同的保护级别以确保进程不能访问不属于它们的内存区域。 内存分组的好处包括 提高安全性通过隔离不同区域的内存防止恶意程序访问或修改其他程序的内存。优化性能通过合理分配内存资源可以减少内存碎片提高内存访问速度。便于管理分组管理使得操作系统更容易跟踪内存使用情况简化内存分配和回收的过程。支持多任务处理允许多个任务同时运行每个任务都有自己的内存空间提高了系统的多任务处理能力。提高可靠性当一个程序崩溃时分组管理可以限制错误的影响范围减少系统崩溃的风险。 内存分组是操作系统内存管理的一个重要方面它有助于提高系统的稳定性、安全性和效率。 那问题又来了操作系统如何管理好分组中的内存呢 理解文件系统 我们使用ls -l的时候看到的除了看到文件名还看到了文件元数据。 [rootlocalhost linux]# ls -l 总用量 12 -rwxr-xr-x. 1 root root 7438 9月 13 14:56 a.out -rw-r--r--. 1 root root 654 9月 13 14:56 test.c 每行包含7列 模式 硬链接数 文件所有者 组 大小 最后修改时间 文件名  ls -l读取存储在磁盘上的文件信息然后显示出来  其实这个信息除了通过这种方式来读取还有一个stat命令能够看到更多信息 [rootlocalhost linux]# stat test.c File: test.c Size: 654 Blocks: 8 IO Block: 4096 普通文件 Device: 802h/2050d Inode: 263715 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2017-09-13 14:56:57.059012947 0800 Modify: 2017-09-13 14:56:40.067012944 0800 Change: 2017-09-13 14:56:40.069012948 0800 系统文件 属性 内容那内容是可大可小的但是属性都是固定大小他们被放在一个struct inode的结构体中进行存储只能说他们的属性内容不同但是大小一定是相同的在Linux操作系统下规定固定大小为128字节。所以文件的属性和内容就要分开进行存储。 我们又回到刚才的问题10GB的内容我们要怎么样管理我们先来看一张图 Linux ext2文件系统上图为磁盘文件系统图内核内存映像肯定有所不同磁盘是典型的块设备硬盘分组被划分为一个个的block。一个block的大小是由格式化的时候确定的并且不可以更改。例如mke2fs的-b选项可以设定block大小为1024、2048或4096字节。而上图中启动块Boot Block的大小是确定的。 而在系统中标识一个文件用的不是其文件名而是其inode。 那我们就来认识一下文件系统图中的各个区域的含义 Block Groupext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。政府管理各区的例子 i节点表(inode table):存放文件属性 如 文件大小所有者最近修改时间等。inode位图inode Bitmap每个bit表示一个inode是否空闲可用。比特位的位置第几个inode。比特位的内容表示该inode是否被使用。数据区(data blocks)存放文件内容。我们可以想象成数据区中是一个特别大的内存内存中有非常多的4kb数据块当我们想要存放数据时无非就是数据库使用的多少问题。块位图Block BitmapBlock Bitmap中记录着Data Block中哪个数据块已经被占用哪个数据块没有被占用。比特位的位置第几个数据块。比特位的内容表示该数据块是否被使用。   那inode属性区怎么与block数据区进行关联呢在属性结构体struct inode中有一个数组数组中存放的就是这个文件在数据区中使用数据块的下标。所以无论是内容还是属性只要找到inode就可以将全部信息获取到。而我们删除一个文件的内容不会去删除inode table 与data blocks中的内容只会删除位图中的内容让后面来的文件进行覆盖即可。 inode是在整个分区内唯一的而想要寻找一个文件的inode首先我们得确认在哪个分组中。每个分区中都有其起始编号和终止编号我们只需要将inode进行范围比较即可确认在哪个分组中。然后再减去分组中的起始编号后就可以得到inode table。 现在又有一个问题inode table中存放文件的属性而文件的属性中又有一个block[15]数组用来存放数据块的下标但是有的文件是非常大的15个位置15个数据块是不够的那怎么办实际上block数组中0~11是直接保存的数据块的编号而12~13并不是保存数据块的编号而是保存其他数据块的编号其他数据块是内容。而14保存的是其他数据块的编号其他数据块也是指向更多的数据块编号。这样我们就可以存储非常大的文件编号了。 GDTGroup Descriptor Table块组描述符描述块组属性信息。即全局描述符表Global Descriptor Table是x86架构的CPU中用于定义不同内存段的一块内存区域。GDT是操作系统用来实现内存保护、分页和多任务处理的关键组成部分。每个条目Descriptor在GDT中定义了一个内存段的属性包括段的基地址、大小、访问权限等。 所以GDT是对一个块组整体做管理的管理数据结构。描述了起始LBA是多少、起始inode编号是多少、一共有多少个inode多少个数据块、已经使用了多少个inode和数据块、下一次怎么分配等等信息。 超级块Super Block存放文件系统本身的结构信息。记录的信息主要有bolck 和 inode的总量未使用的block和inode的数量一个block和inode的大小最近一次挂载的时间最近一次写入数据的时间最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏可以说整个文件系统结构就被破坏了。整个分区是由super block进行管理的。而GDT是管理分区中的一个分组的数据结构。 还有一个Boot Block一般是在第一个分区才有它是和开机有关系的。当开机时我们首先要识别磁盘才可以将操作系统加载到内存中。我们可以简单理解为了解整个磁盘的分区情况并且告诉操作系统在哪个分区中。 而这些文件信息不是在我们分区后就有的而是在格式化后进行写入的。 我们可以在分区中写入相同或者不同的文件系统以上的文件系统属于Ext*(2)现在我们用到的一般是Ext*(3)以上但是核心原理是不变的。 文件系统中最核心的就是super block所以操作系统在管理文件时就可以将每一个分组的super block加载到内存中建立一个数据结构进行管理所以对文件的管理就进而转化成对super block的z增删查改工作。 现在我们已经知道文件系统的底层逻辑后我们创建一个文件的逻辑是什么呢 1. 存储属性 内核先找到一个空闲的i节点这里是263466。内核把文件信息记录到其中。 2. 存储数据 该文件需要存储在三个磁盘块内核找到了三个空闲块300,500800。将内核缓冲区的第一块数据 复制到300下一块复制到500以此类推。 3. 记录分配情况 文件内容按顺序300,500,800存放。内核在inode上的磁盘分布区记录了上述块列表。 4. 添加文件名到目录 新的文件名abc。linux如何在当前的目录中记录这个文件内核将入口263466abc添加到目录文件。文件名和inode之间的对应关系将文件名和文件的内容及属性连接起来。 因为目录也算文件而任何一个文件都在目录中那目录文件中就存放文件名和inode编号的映射关系如果目录文件中没有写权限我们就不能在目录中创建新的文件因为它要修改目录文件内容。而差一个目录的内容都是从根目录开始的因为它是从前一个目录中进行查找目录内容的所以是逆向递归查找的。 一个inode是在一个分区中是唯一的但是不知道其在哪一个分区。所以这时候我们的路径就出马了。一个文件写入文件系统的分区要被Linux使用必须要先把具有系统文件的分区进行“挂载”。一个文件系统所对应的分区挂载到对应的目录中我们才可以访问。所以分区的访问就是所挂载路径的访问。这里我们不讲什么是挂载有兴趣的可以自己去学习以及mount指令。 以上就是我们本次的全部内容感谢大家观看
http://www.sczhlp.com/news/173480/

相关文章:

  • 网站建设界面建议白酒类网站模板
  • 云南建设网站图书馆网站建设背景
  • o2o平台有哪些行业搜索引擎优化的步骤
  • 网站建设排期更新文章时间 wordpress
  • 上海闵行区网站制作公司企业类网站模板
  • 极简建站一般做淘宝的素材都有哪个网站
  • 7k7k网页游戏大全seo优化排名价格
  • 专业建设网站服务wordpress导出数据字典
  • 51网站一起做网店建站做网站哪家好
  • 网站建设制作软件app界面设计论文
  • 文明网站建设方案及管理制度为什么没人做同城购物网站
  • 网站开发培训网站网站版式布局
  • 顺德网站建设公司做私活一个网站大概多少钱
  • 国内外优秀网站360竞价推广怎么做
  • 手机怎样下载安装建设银行网站WordPress开启自带redis
  • 网站建设常用的编程语言网页打不开但是有网什么原因禁用
  • 网站设计的机构青岛做一个网站多少钱
  • 广州越秀网站建设公司ip查询网站备案查询系统
  • 服装厂网站模板北京建设银行对公网站
  • 广州网站排名优化开发特价网站建设费用
  • 做家纺的网站网站建设工作会议
  • 惠城网站制作最新采购求购信息网站
  • 建设 市民中心网站网络工程师需要具备什么条件
  • 怎么给人介绍自己做的网站建设工程施工安全网站
  • 如何做网站域名外贸网站建设 联雅
  • 实用指南:【结构型模式】代理模式
  • cnblog Test
  • 用 Haskell 实现英文数字验证码识别
  • 深入解析:Day43 Python打卡训练营
  • 一些有一定趣味性的杂题