当前位置: 首页 > Linux

Linux知识点一

时间:2023-04-06 01:24:48 Linux

计算机基础五大单元包括:输入单元、输出单元、控制单元、算术逻辑单元、存储单元。其中,CPU占据控制和算术逻辑单元,存储单元包括存储器和辅助存储器;计量单位是KiloMegaGigaTeraPetaExaZetta二进制10241024K1024M1024G1024T1024P1024E十进制10001000K1000M1000G1000T1000P1000E,所以操作系统规范的核心层(SystemCall)直接指硬件。不能在不同的硬件架构上运行。例如PC版Windows8.1不能直接在ARM架构(手机和平板硬件)电脑上运行。操作系统只是管理整个硬件资源,包括CPU、内存、输入输出设备和文件系统文件。如果没有其他应用程序的协助,操作系统只能让主机就绪(Ready)!无法执行其他功能。那么现在你知道为什么Windows需要安装PhotoImpact或者Photoshop这样的软件来实现对网页图片的操作了吧?应用程序的开发是指操作系统提供的开发接口,因此应用程序只能在操作系统上运行,不能在其他操作系统上运行。现在你知道为什么买网游光盘的时候,光盘上会明确写明该软件适用于哪个操作系统吧?你也应该知道为什么有些游戏不能安装在Linux上吧?核心功能由于核心主要负责与整个计算机系统相关的资源分配和管理,我们知道整个计算机系统中最重要的就是CPU和内存。因此,内核至少要具备这些功能:刚才讲到的系统调用接口(Systemcallinterface),这是为了方便程序开发者与内核进行通信,进一步利用硬件资源,所以需要这个简单的接口来方便程序开发人员。过程控制你听说过所谓的“多任务环境”吗?一台计算机可能有很多工作同时进入CPU等待计算处理。这时候核心就必须能够控制这些任务,这样CPU资源才能得到有效的分配!另外,良好的CPU调度机制(即CPU先运行job的顺序)会有效加快系统整体性能!内存管理控制整个系统的内存管理。这个内存控制非常重要,因为系统中所有的程序代码和数据都必须首先存放在内存中。通常内核会提供虚拟内存的功能,当内存不足时,可以提供内存交换(swap)的功能。文件系统管理(Filesystemmanagement)文件系统管理,如数据输入输出(I/O)等!还有对不同文件格式的支持等等,如果你的核心不认识某个文件系统,那么你就无法使用这种文件格式的文件!例如:Windows98不能识别NTFS文件格式的硬盘;设备驱动程序(Devicedrivers)正如上面所说,硬件管理是内核的主要任务之一,当然,设备驱动程序是内核需要做的事情!幸运的是,目前有所谓的“可加载模块”功能,可以将驱动程序编辑成模块,无需重新编译内核!GNU项目和FSF基金会的建立1984年,RichardStallman倡导了GNU(GNU'sNotUnix)项目。这个项目的目的是创建一个自由和开放的Unix操作系统(FreeUnix)。自由软件基金会(FSF,FreeSoftwareFoundation)成立,邀请了更多的工程师和志愿者来编写软件。为了防止GNU开发的自由软件被他人利用成为专利软件,他和他的律师起草了著名的**通用公共许可证(GPL)**,并称他为copyleft(相对于专利软件的版权!).1991年,Linux操作系统由FinnLinusTorvalds开发。总之,Linux的成功主要在于:Minix(Unix)、GNU、Internet、POSIX和虚拟团队的产生。GNU开发的几个重要软件,如:EmacsGNUC(GCC)GNUCLibrary(glibc)BashshellLinux本身就是最流行的操作系统,其开发网站设立在http://www.kernel.org,我们也Linux操作系统底层的数据称为“内核”。从Linuxkernel3.0开始,奇数和偶数内核版本规划已经被放弃。新规划以主线版本(MainLine)为基础,提供长期支持版本(longterm),加强对某些功能的持续维护。Linux发行版的组成包括:由“Linux内核+自由软件+文档(工具)+完全可安装的程序”组成的完整系统。相同:(1)同样使用http://www.kernel.org发布的内核;(2)支持相同的标准,如FHS(FilesystemHierarchyStandard)、LSB(LinuxStandardBase)等;(3)使用几乎相同的免费软件(如GNU中的gcc/glibc/vi/apache/bind/sendmail...);(4)几乎相同的操作界面(如bash/KDE/GNOME等)。不同:使用的内核版本和各个软件可能不同;每个开发者添加的应用工具不同,使用的包管理方式也不同(dpkg和RPM)。其实鸟哥在买技术书的时候更喜欢买基础的,因为基础的学了之后,其他的部分大概可以找个关键词,然后google一下,很多数据都可以分析判断你!你会说,既然是这样,那基础书上的项目一大堆不是google的吗?不要忘记,“您首先要使用哪些关键字进行谷歌搜索?”!所以,看基础书的目的就是让自己掌握那些“关键词”!快点!鸟哥上课的时候,经常有学生问:老师,你的课要听多少遍才能学会?鸟哥的标准答案是:“你永远学不会!”因为你用的是“听”,如果你不自己动手,你永远不知道“体验”二字怎么写!很多时候,电脑/网络中会出现一些莫名其妙的突发事件。不实际接触怎么能理解呢?所以“永远不可能听!”为什么要实验?因为实验之后你会有什么体会写下来?不然实验结果和教科书都在!光背还不行,干麻实验呢?浪费钱?^_^这里有一些有用的FAQ和How-To网站供大家参考:Linux自带的文件资料:/usr/share/doc(在你的Linux系统中)CLDP中文文件计划http://www.linux.org.tw/CLDP/TheLinuxDocumentationProject:http://www.tldp.org/比较有意思的是TLDP(TheLinuxDocumentationProject),几乎列出了Linux上能看到的所有资料资料,各种How-To做法等等,虽然是英文的,但是很有参考价值!硬件/磁盘基础这个小块是磁盘的最小物理存储单元,称为扇区,同心圆的扇区组成的圆称为磁道。由于磁盘中可能有多个盘片,所有盘片上的同一磁道可以组合成一个所谓的柱面。其中,扇区的物理量设计有两种大小,分别为512Bytes和4KBytes。通常数据都是从外圈向内圈读写的,那么每个扇区是不是都一样重要呢?其实整个磁盘的第一个扇区尤为重要,因为它记录了整个磁盘的重要信息!早期磁盘的第一个扇区所包含的重要信息称为MBR(MasterBootRecord)格式,但由于近年来磁盘容量的不断扩大,造成了读写上的一些麻烦,甚至有的磁盘分区更大超过2TB有些操作系统无法访问。所以后来又增加了一种新的磁盘分区格式,叫做GPT(GUID分区表)!这两种分区格式和限制是不一样的!MSDOS(MBR)和GPT磁盘分区表(partitiontable)在上一节的插图中,我们已经看到“起止磁道”了吧?通常,一个磁盘可能有多个磁盘,所有磁盘的同一磁道称为柱面,柱面通常是文件系统的最小单位,即分区的最小单位!为什么说“通常”?因为最近的GPT分区表可以实现64bit的记录功能,现在我们甚至可以用sector(扇区)号作为分区单位!极好的!所以,我们是参照柱面号或扇区号来处理的!MSDOS(MBR)分区表格式及限制为了兼容Windows磁盘,早期的Linux系统采用了支持Windows的MBR(MasterBootRecord,主引导记录区)来处理引导管理程序和分区表!引导管理程序记录区和分区表都放在磁盘的第一个扇区。这个扇区通常大小为512Bytes(旧磁盘扇区都是512Bytes!),所以第一个扇区512Bytes会有这两个数据:主引导记录区(MasterBootRecord,MBR):可以安装引导管理程序的地方,thereare446Bytespartitiontable(分区表):记录整个硬盘分区的状态,有64Bytes分区表所在的block容量只有64Bytes,所以只能有四组记录区最多,每组记录区记录段的起始和结束柱面号。如果把硬盘看成一个长条,再把柱面看成一个直方图,那么64Bytes的记录部分有点像下图:P1:/dev/sda1P2:/dev/sda2P3:/dev/sda3P4:/dev/sda4由于分区表只有64Bytes,最多只能容纳4条分区记录。这四个分区记录称为主分区或扩展分区。根据上面的图示和描述,我们可以得到几个重要的信息:主分区和扩展分区最多可以有四个(硬盘限制)扩展分区只能有一个(操作系统限制)连续切割的分区出去;格式化后用作数据访问的分区是主分区和逻辑分区。扩展分区无法格式化;逻辑分区的数量因操作系统而异。在Linux系统中,SATA硬盘已经可以超过63个以上分区的限制;P1:/dev/sda1P2:/dev/sda2L1:/dev/sda5L2:/dev/sda6L3:/dev/sda7L4:/dev/sda8L5:/dev/sda9前四个数字保留给Primary或??Extended!所以逻辑分区的设备名编号是从5号开始的。其实扩展分区并不是只占用一个块,而是分布在每个分区的前几个扇区来记录分区信息!GUID分区表、GPT磁盘分区表因为以前一个扇区的大小只有512Bytes,现在却出现了4K的扇区设计!为了与所有磁盘兼容,所谓的逻辑块地址(LBA)主要用于扇区定义。GPT用这个LBA(默认是512Bytes!)来规划磁盘的所有块,第一个LBA叫做LBA0(从0开始编号)。不同于MBR只使用前512Bytes的块来记录,GPT使用34个LBA块来记录分区信息!同时也不同于以往MBR中只有一个block,被kill掉就死掉的情况。除了GPT的前34个LBA外,整个磁盘的后33个LBA也作为另一个备份!这样可能更安全!详细结构有点像下面这样:LBA0(MBR兼容块)类似于MBR模式。这个兼容块也分为两部分。一个是类似于前面446字节的块,里面存放的是第一个One-stagebootmanager!在原来分区表的记录区,这种兼容模式只放了一个分区,上面有一个特殊的标记,用来表示这个磁盘是GPT格式的。如果不了解GPT分区表的磁盘管理程序,就不会认识这个磁盘。除非用户对这个磁盘有特殊要求,否则管理软件不能修改这个分区信息,进一步保护了这个磁盘。!LBA1(GPTheaderrecord)这部分记录了分区表本身的位置和大小,同时也记录了备份的GPT分区的位置(也就是上面提到的最后34个LBA块),同时也对分区进行了检查表的机制码(CRC32),操作系统可以根据这个校验码判断GPT是否正确。如果出现错误,也可以通过这个记录区得到备份的GPT(磁盘上最后一个备份块)来恢复GPT的正常运行!LBA2-33(实际记录分割信息段)从LBA2块开始,每个LBA可以记录4条分割记录,所以在默认情况下,总共可以有4*32=128条分割记录!因为每个LBA有512字节,所以每个记录使用128字节的空间。除了每条记录需要的标识码和相关记录外,GPT在每条记录中提供了64位来记录起始/结束扇区号,因此,对于GPT分区表,对于单个分区槽,其最大容量限制为“2^64*512bytes=2^63*1Kbytes=2^33*TB=8ZB”,注意1ZB=2^30TB!你觉得够大吗?现在GPT分区默认最多可以提供128条记录,而在Linux本身的核心设备记录中,对于单个磁盘,虽然过去最多只能提供15条分区槽,但是由于Linux内核使用udev等Processing的方法,现在linux没有这个限制了!另外,GPT分段不再有所谓的主分段、扩展分段、逻辑分段概念。既然每条记录都可以独立存在,那当然可以把每一条看成是主要的切分!每个分区都可以用来格式化!GPT分区不再有扩展分区和逻辑分区的概念,你可以想象所有的分区都是主分区!每个分区都有自己的引导扇区(bootsector)。图中的系统盘是第一分区和第二分区,每个分区里面都放着真正可以开机的核心文件!加载器只会知道自己系统盘中的可引导核心文件,其他加载器;引导过程从:BIOS-->MBR-->-->bootloader-->corefiles;bootloader的功能主要有:提供菜单,加载core,将控制权转移给其他loader。有两个位置可以安装引导加载程序。它们是MBR和引导扇区。Linux操作系统的文件采用目录树系统,与磁盘的对应需要一个“挂载”动作才会起作用;新手简单分区,建议只分区/和swap两个。实际上有三种分区格式“设备类型”。我们的练习机实际上使用的是标准分区和LVM。三种设备类型的含义如下:标准分区区:就是我们一直说的分区!像/dev/vda1这样的分区就可以了。LVM:这是一个可以灵活增加/减少文件系统容量的设备设置。我们会在后面的章节继续介绍LVM这个有趣的事情!LVM供应紧张:这个词的翻译超级奇怪!其实这是LVM的进阶版!不同于传统的直接分配固定容量的LVM,这个“LVMTightSupply”项目允许你分配多少磁盘容量给你,所以如果LVM设备中的数据量很小,那么你的磁盘其实可以也做更多的数据存储!而不是无缘无故的被占用!我们后面讲LVM的时候也会强调这部分!另外,图中的文件系统就是我们实际“格式化”时可以格式化成什么文件系统的意思。下面分别说说各个文件系统项目(详细项目会在后续章节讲解)ext2/ext3/ext4:早期适用于Linux的文件系统类型。由于ext3/ext4文件系统的日志记录较多,所以系统的恢复比较快。不过由于磁盘容量越来越大,ext家族好像有点挡不住了~所以除非你有特殊的配置需求,否则最近很少会用到ext4的项目!swap:表示磁盘模拟变成内存。由于swap不使用目录树的挂载,所以使用swap时不需要指定挂载点。BIOSBoot:是GPT分区表可能用到的一项。如果您使用MBR分区,则不需要此项!xfs:这是CentOS目前默认的文件系统,最早是由大型服务器开发的!他很擅长管理大容量的磁盘,而且格式化的速度也相当快,非常适合现在动辄几TB磁盘的环境!所以我们主要用这个东西!vfat:Linux和Windows都支持的文件系统类型。如果你的主机硬盘中同时有Windows和Linux操作系统,你确实可以创建一个vfat文件系统来进行数据交换!Linux下使用parted划分GPT分区。Linux中每个硬件设备的文件名。选择好自己需要的硬件配置之后,接下来就是了解各个硬件在Linux中的作用。在这里,鸟哥再次强调:“在Linux系统中,每个设备都被当作一个文件。”例如,SATA接口的硬盘的文件名为/dev/sd[a-d],其中,括号中的字母为a-d中的任意一个,表示这四个文件/dev/sda、/dev/sdb、/dev/sdc和/dev/sdd。Tips这种方括号[]中的表达方式在后面的章节中会经常用到,请特别注意,先提一下,以强调在Linux系统中,几乎所有的硬件设备文件都在/dev目录下,所以你会查看/dev/sda、/dev/sr0等文件名。打印机和软盘呢?它们分别是/dev/lp0、/dev/fd0!好的,其他外设呢?下面列出了Linux中几种常见的设备及其文件名:设备在Linux中的文件名为SCSI/SATA/USB硬盘驱动器/dev/sd[a-p]U盘/dev/sd[a-p](同上)SATA)VirtI/O接口/dev/vd[a-p](用于虚拟机)软盘驱动器/dev/fd[0-7]打印机/dev/lp[0-2](25针打印机)/dev/usb/lp[0-15](USB接口)鼠标/dev/input/mouse[0-15](通用)/dev/psaux(PS/2接口)/dev/mouse(当前鼠标)CDROM/DVDROM/dev/scd[0-1](common)/dev/sr[0-1](common,CentOS比较常见)/dev/cdrom(currentCDROM)磁带机/dev/ht0(IDE接口)/dev/st0(SATA/SCSI接口)/dev/tape(当前磁带)IDE硬盘驱动器/dev/hd[a-d](只有老系统才有)如今IDE接口的硬盘几乎已经淘汰,难得一见!所以现在连IDE界面的磁盘文件名都模拟成/dev/sd[a-p]了!另外,如果你的机器使用的是你向互联网服务提供商(ISP)申请的云机,此时你可能会得到一个虚拟机。为了加快速度,虚拟机中的磁盘是由模拟器生成的,模拟器生成的磁盘文件名是/dev/vd[a-p]系列的文件名!注意!注意!