Fedora20:1-硬盘

一、


二、硬盘按存储介质可分为机械硬盘(HDD),固态硬盘(SSD)。前者的存储介质是磁性碟片,采用机械方式操纵磁头读取碟片故称为机械硬盘;后者的存储介质是半导体存储芯片。以下内容针对传统的机械硬盘。


三、硬盘接口大致分为ATA(IDE), SATA, SCSI和SAS。硬盘介质同接口无关。
  • ATA:高技术配置(Advanced Technology Attachment),即IDE(Intergrated Drive Electronics)集成驱动电子设备。SATA(Serail ATA)推出后称之为PATA(Parallel ATA)。最大速度133MB/s。
  • SATA:不同版本1.0, 2.0, 3.0,Express对应的最大速度分别为150MB/s, 300MB/s, 600MB/s, 809MB/s。
  • SCSI:
  • SAS:串行SCSI(Serial Attached SCSI)。
四、机械硬盘的物理结构
  • 磁头/盘面:机械硬盘的有多个盘片,每个盘片可以是单面或双面,对应有一个或两个磁头。
  • 柱面/磁道:一个盘片有若干磁道,因为多个盘片在一起,因此相同的磁道组成了一个柱面。数据读写是按柱面进行,而非按照盘面,原因是统一柱面不同盘片不需要移动磁头。
  • 扇区:每个磁道被分为若干弧段,即扇区。扇区是硬盘数据读写的最小单位,一般是128字节的整数倍。传统理解不同磁道的扇区数是相等的,因为以盘面旋转的角速度控制寻址更容易,因此外磁道的数据稀疏;但有资料显示,现代机械硬盘采取内外不同的扇区数,增加存储空间。
  • 簇:同一磁道的若干扇区组成一个“簇”,簇是文件存储的最小单位。

五、硬盘的逻辑结构(系统启动的过程)

  • 引导程序:操作系统存放在硬盘之中,启动操作系统要通过“引导程序”。引导程序有两段,第一阶段引导程序位于MBR,第二阶段引导程序是NTLDR、BOOTMGR和GNU GRUB等,位于硬盘的某个位置,该位置由第一阶段MBR指明。
  • MBR:主引导记录(Master Boot Record,主引导记录):存储在硬盘0柱面,0磁头,1扇区的512字节空间中(一般1个扇区至少是512字节)。前446字节的内容特制“主引导记录”(MBR),其后4个16字节为“磁盘分区表”(DPT),最后2字节为结束标志(55AA)。
    • 磁盘分区表(DPT):只有4个,即一个磁盘最多有4个分区(主分区+逻辑分区)。
    • 主引导记录(MBR):其工作程序如下,
      1. BIOS加电自检。BIOS执行内存地址为FFFF:0000H处的跳转指令,跳转到固化在ROM中的自检程序处,对系统硬件进行检查。
      2. 读取主引导记录(MBR)。当BIOS检查到硬件正常并与CMOS中的设置相符后,按照CMOS中对启动设备的设置顺序检测可用的启动设备。BIOS将相应启动设备的第一个扇区(也就是MBR扇区)读入内存地址为0000:7C00H处。
      3. 检查0000:7CFEH-0000:7CFFH(MBR的结束标志位)是否等于55AAH,若不等于则转去尝试其他启动设备,如果没有启动设备满足要求则死机。
      4. 当检测到有启动设备满足要求后,BIOS将控制权交给相应的启动设备。启动设备的MBR将自己复制到0000:0600H处,然后继续执行。
      5. 根据MBR中的引导代码启动引导程序。具体引导程序,以下分别就NTLDR和GRUB展开说明。
  • NTLDR
  • GRUB

五、文件系统
  • FAT16:FAT(File Allocation Table)是文件分配表的意思,用以描述分区内簇的分配。FAT16采用16位的文件分配表,可以描述64K个簇。簇的大小根据分区的大小有不同的定义,从2KB到32KB。因此FAT16文件系统的最大可表示分区为64K*32K即2G。最大单个文件也是2G。
  • FAT32:FAT32采用32位的文件分配表,采用28位描述簇信息,理论上支持268,435,438(<2^28)个簇。由于微软scandisk工具的限制,FAT32不能大于4,177,920(<2^22)个簇。簇的大小仍然根据分区大小有不同的定义,从512B到32K。因此FAT32文件系统的最大分区为124.55G。最大单个文件限制在4G(原因?)。
  • NTFS:NTFS(New Technology File System)取代了FAT。理论支持最多(2^64-1)个簇,实际实现(xp professional)最多是(2^32-1)个簇。如果簇的大小固定为4KB,则最大分区为16T。由于MBR上分区表支持的单个分区最大为2T,所以NTFS分区最大为2T。理论最大单个文件为(2^64-2^10),实际实现为(2^44-2^16)。
  • ext2:第二代扩展文件系统(Second Extended Filesystem),是Linux内核所用的文件系统。最大支持2T。
  • ext3:第三代。最大分区和最大文件尺寸依赖于块尺寸的设置,块有四种尺寸1K、2K、4K、8K,对应的最大分区/最大文件尺寸为2T/16G、8T/256G、16T/2T、32T/16T。
  • ext4:第四代。Linux官方的建议默认文件系统。最大分区和最大文件尺寸为1E和16T。
六、Linux的硬盘标识
  • IDE硬盘,硬盘标识为hda,hdb依次类推,分区标识为1-4为主分区+扩展分区,5-n为逻辑分区,即使只有一个主分区,第一个逻辑分区也是5。例:只有一个硬盘,三个主分区,一个扩展分区,扩展分区有一个逻辑分区,盘符为:sda1,sda2,sda3,sda5。
  • SCSI硬盘,硬盘标识为sda,sdb依次类推。

这些标识在使用mount命令时就显得重要,使用mount命令常用来挂在U盘。比如我电脑只有一块硬盘,即sda,若干分区。插入U盘,U盘的标示符应为sdb1。因此挂载命令应为mount /dev/sdb1 /mnt/udisk。其中udisk是/mnt目录下自建的文件夹,挂载后该文件夹下即是U盘的内容。U盘的不同格式需要相应参数,这些另作参考。


七、Linux常见分区组成
  • /boot:500M(理由?)。存放引导程序和内核源码。
  • /:根目录。不要太小。相当于Windows的C盘。
  • /swap:建议大小为物理内存的两倍。虚拟内存,为内存提供缓存。
  • /home:用户目录,可以没有。如果没有,那么所有东西将存放于根目录下。

八、硬盘上的操作系统的启动过程


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
GeoPandas是一个开源的Python库,旨在简化地理空间数据的处理和分析。它结合了Pandas和Shapely的能力,为Python用户提供了一个强大而灵活的工具来处理地理空间数据。以下是关于GeoPandas的详细介绍: 一、GeoPandas的基本概念 1. 定义 GeoPandas是建立在Pandas和Shapely之上的一个Python库,用于处理和分析地理空间数据。 它扩展了Pandas的DataFrame和Series数据结构,允许在其中存储和操作地理空间几何图形。 2. 核心数据结构 GeoDataFrame:GeoPandas的核心数据结构,是Pandas DataFrame的扩展。它包含一个或多个列,其中至少一列是几何列(geometry column),用于存储地理空间几何图形(如点、线、多边形等)。 GeoSeries:GeoPandas中的另一个重要数据结构,类似于Pandas的Series,但用于存储几何图形序列。 二、GeoPandas的功能特性 1. 读取和写入多种地理空间数据格式 GeoPandas支持读取和写入多种常见的地理空间数据格式,包括Shapefile、GeoJSON、PostGIS、KML等。这使得用户可以轻松地从各种数据源中加载地理空间数据,并将处理后的数据保存为所需的格式。 2. 地理空间几何图形的创建、编辑和分析 GeoPandas允许用户创建、编辑和分析地理空间几何图形,包括点、线、多边形等。它提供了丰富的空间操作函数,如缓冲区分析、交集、并集、差集等,使得用户可以方便地进行地理空间数据分析。 3. 数据可视化 GeoPandas内置了数据可视化功能,可以绘制地理空间数据的地图。用户可以使用matplotlib等库来进一步定制地图的样式和布局。 4. 空间连接和空间索引 GeoPandas支持空间连接操作,可以将两个GeoDataFrame按照空间关系(如相交、包含等)进行连接。此外,它还支持空间索引,可以提高地理空间数据查询的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值