开机流程+文件系统 笔记

1.BIOS:开机主动执行的固件,会认识第一个可开机设备,比如硬盘。

2.MBR:第一个可开机设备的第一个扇区内的主引导分区块,内含引导加载程序。

3.Bootloader:一支可以读取kernel文件来执行的软件。

4.kernel:开始操作OS的功能。

BIOS和MBR都是硬件本身支持的功能,至于Bootloader则是操作系统安装在MBR上面的一套软件。MBR仅仅446

字节,因此这个Bootloader是小而完美的。

主要有下面这些功能:

提供菜单:用户可以选择不同的开机选项。

载入kernel:直接指向可开机的程序区段来开始操作系统。

转交给其他Bootloader。

引导程序除了可以安装在MBR之外,还可以安装在每个分区的引导扇区。

BOOTLOADER提供两个菜单,第一个菜单可以直接加载windose的内核文件来开机;

第二个菜单可以将引导加载工作交给第二个分区的boot sector。当用户开机选择菜单二时,那么整个引导加载工作就会交给第二分区的bootloader。

第二个bootloader启动之后,只有一个菜单,因此就能够使用linuxkernel来开机。

总结:每个分区都有自己的启动扇区bootsector。实际可开机的内核文件是放置到各个分区内的。loader只认识自己分区内的可开机内核文件,以及其他的loader。loader可以直接指向或者间接将管理权交给另一个管理程序。

每一个分区可以被格式化为不同的文件系统。

文件系统通常会将这两部分的数据分别存放在不同的块,权限与属性放置到了inode中,至于实际数据则被放置到了data block块中。还有一个超级块super block来记录整个文件系统的整体信息,包括inode与block的总量、使用量、剩余量。

superblock:记录此文件系统的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式和相关信息等。

inode:记录文件属性,一个文件用一个inode,同时记录此文件的数据所在的block号码;

block:实际记录文件的内容,若文件太大时,会占用多个block。

data block数据块在ext2中支持的文件系统大小有1,2,4kB对应这不同的单一文件限制和最大文件系统总容量。

原则上,block的大小与数量在各式花纹之后就不能够再改变了(除非重新格式化);

每个block最多只能放置一个文件的数据。

如果文件大于block的大小,则一个文件就会占用多个block。

若文件小于block,则该block的剩余空间就不能再被使用了。

例如 10000个小文件 每个50bytes 所有文件容量 50*10000=488.3KB,但是实际占用4046*10000=38.6MB。

inodetable(inode 表格)

inode的内容主要记录文件的属性以及文件实际数据是放在哪个block内。基本上,inode记录的文件数据至少是:

文件访问模式(read/write/excute);

该文件的所有者和组(owner/group);

文件大小;

该文件创建或者状态改变时间(ctime);

最近读取的时间(atime);

最近修改的时间(mtime);

定义文件的特性的标志(flag),比如SetUID等;

该文件真正内容指向(pointer);

inode文件的大小与数量已经在格式化时就已经确定。

每个inode文件固定大小128byte;

每个文件都金辉占用一个inode而已;

因此文件系统能创建的文件数量与inode的数量有关;

系统读取文件时先找到inode,并分析inode记录的权限与用户是否符合,若符合才能够开始实际读取block内容。

每个inode都有一个号码,操作系统用inode号码来识别不同的文件。

这里值得重复一遍,Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。

表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:

首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。

ls -i 显示文件的inode号。

每个block group都可能含有super block,每个文件系统都仅有一个superblock,后续的block group若是含有super block主要是完成对第一个block group的备份。

File system description文件描述系统说明 这个区段可以描述每个block group的开始与结束的block号码,以及说明每个区段(super block,bitmap,inodemap,data block)分别位于哪一个block号码之间。

block bitmap如果你想要添加文件时总会用到block。就选择bitmap中那些标记为空的block。

inode bitmap记录未使用的inode号码。

当我们在linux的ext2系统建立一个目录时,ext2会分配一个inode和至少一个block给该目录。其中inode记录的是该目录的相关权限和属性,并可以记录分配到的那块block号码,而block则是记录这个目录下的文件名与该文件名占用的inode号码。目录下面的文件数目太多,linux就给与该目录多一个block来存储文件相关的记录。

当我们在ext2新建一个文件时,一个block为4kb 新建一个100kb的文件,则需要 25个+1个=26个block来存储该文件,由于inode仅有12个直接指向,因此还要多一个block来作为block作为块号码的记录。

如果我想读取/etc/passwd那么读取顺序是这样的,/的inode  /的block etc的inode etc的block passwd的inode passwd的block。

linux文件系统的操作

如果你正在编辑一个很大的文件,所有数据都必须加载到内存,CPU才能读取,编辑过程中需要频繁写回磁盘,由于磁盘写入的速度要比内存慢很多,因此你需要经常等待硬盘的频繁写入/读取。因此linux使用异步读取来解决这个问题:

当一个文件加载到内存,如果这个文件没有被改动过,则在内存中文件数据就会被设置成clean的。如果改动了,就设置成dirty。此时所有数据还呆在内存中,并没有写入磁盘中。系统会不定期的将dirty的数据写回磁盘,以保持磁盘和内存数据的一致性。可用sync手动写入磁盘。正常关机系统会主动调用sync来手动强迫写入磁盘。

文件系统必须要挂载到目录树的某一个目录,才能够使用该文件系统。

时间: 2024-10-09 21:53:49

开机流程+文件系统 笔记的相关文章

开机流程与主引导分区(MBR)——鸟哥私房菜

在前篇随笔中,已经谈到了CMOS与BIOS,CMOS是记录各项硬件参数(包括系统时间.设备的I/O地址.CPU的电压和频率等)且嵌入到主板上面的存储器,BIOS是一个写入到主板上的韧体(韧体是写入到硬件上的一个软件程序). 这个BIOS是在开机的时候计算机系统会主动执行的第一个程序. 接下来,BIOS会去分析计算机里面有哪些存储设备,以硬盘为例,BIOS会依据用户的设置去取得能够开机的硬盘,并且到该硬盘里面去读取第一个扇区中的主引导分区(Master Boot Record,MBR)位置.MBR

CentOS开机流程详解

CentOS开机流程详解 一.linux开机流程: BIOS:(Basic Input Output System)基本输入输出系统,它是一组固化到计算机内主板上一个ROM芯片 上的程序,保存着计算机最重要的基本输入输出的程序.开机后自检程序和系统自启动程序,可从CMOS中读写系统设置的具体信息. MBR:Master Boot Record,主要引导记录区. Boot Loader:启动引导程序. 二.详细流程 第一步:加载BIOS 打开计算机电源,计算机硬件会自动加载BIOS,读取BIOS内

开机流程介绍

开机流程: 计算机中有BIOS与CMOS两个东西, CMOS是记录各项硬件参数且嵌入在主板上面的储存器,BIOS则是一个写入到主板上的一个韧体( 韧体就是写入到硬件上的一个软件程序).这个BIOS就是在启动的时候,计算机系统会主动运行的第一个程序了! BIOS可以设置计算机中的硬件设备,我们以硬盘为例,BIOS会依据使用者的配置去取得能够启动的硬盘,并且到该硬盘里面去读取第一个磁区的MBR位置. MBR占据446bytes的硬盘容量,其中放置了引导加载程序,而接下来就是MBR内的引导加载程序的工

Linux开机流程即运行级别

Linux开机流程 一.概念 1.boot  loader: 领导装载程序,常用的有(Grub, spfdisk) 2.Grub: 是一个多操作系统启动管理器,开机时领导不同系统,windows  linux等 二.开机的流程 1.加载BIOS(basic input output system)的硬件信息,并进行自我测试 2.读取并执行第一个开机装置内MBR(主引导记录扇区)的boot loader即grub  spfdisk 等程序! 3. grub(boot loader)就是一个多操作系

liunx 开机流程与模块管理

系统开机的经过可以汇整成底下的流程的: 加载 BIOS 的硬件信息与进行自我测试,并依据设定取得第一个可开机的装置: 读取并执行第一个开机装置内 MBR 的 boot Loader (亦即是 grub, spfdisk 等程序): 依据 boot loader 的设定加载 Kernel ,Kernel 会开始侦测硬件与加载驱动程序: 在硬件驱动成功后,Kernel 会主动呼叫 init 程序,而 init 会取得 run-level 信息: init 执行 /etc/rc.d/rc.sysini

linux开机流程、模块管理与Loader

1.系统开机过程: 1)加载BIOS的硬件信息与进行自我测试,并依据设定取得第一个可开机的装置 2)读取并执行第一个开机装置内MBR的boot Loader(亦即grub,spfdisk等程序) 3)依据boot loader的设定加载Kernel,Kernerl会开始侦测硬件信息与加载驱动程序 4)在硬件驱动成功之后,Kernel会主动呼叫init程序.而init会取得run-level信息 5)init执行/etc/rc.d/rc.sysinit档案来准备软件执行的作业环境(如网络,时区等)

Linux 开机流程详解

对于任何系统, 开机不仅仅是接通电源这么简单的事情, 在这短短的几秒或几十秒内将会发生许多事情, 了解这个完整的流程将是解决任何开机问题或提高开机速度的前提. 接下来, 我们就详细了解一下Linux的开机流程: 1. 加载 BIOS 的硬件信息并进行自我测试,并依据取得第一个可开机的装置; 2. 读取并执行第一个开机装置内 MBR 的 Boot Loader (如 grub, spfdisk 等程序); 3. 依据 Boot Loader 的设定加载 kernel, kernel 会开始侦测硬件

linux征途之系统开机流程

CentOS 6.x版本开机流程 1. 按下开机按钮,主板加电读取BIOS信息: 2. BISO载入CMOS的信息寻找启动项,并读取第一启动项的MBR 3. 根据MBR的设置,加载bootloader,6.x版本使用grub 4. grub读取/boot/grub/menu.lst文件获得内核文件vmlinuz和initrd的位置 5. 根据/boot/grub/menu.lst文件内的配置读取vmlinuz和initrd文件 6. 解压initrd文件在内存中,生成根目录,加载核心vmlinu

linux 文件系统笔记

文件格式: windows:PE linux:  ELF 文件系统: rootfs FHS:规定linux应该创建哪些目录 /下的目录结构: /boot: 系统启动相关的文件,如内核,initrd,以及 grub(bootloader) /dev :设备文件(例如:光盘,cdrom) 类型: 块设备:随机访问, 数据块 字符设备:线性访问, 以字节为单位 设备号:主设备号(major),次设备号(minor) /etc:  配置文件(绝大多数为纯文本格式) /home: 用户的家目录,默认为/h