关于major、minor的解释

我们知道,在Unix系系统中,一切皆是文件,所有硬盘,键盘,网卡等设备都有文件来代表,对应着/dev/下面的文件。对于应用程序来说,可以像对待普通文件一样打开,关闭,读写这些设备文件。但是,这种文件名比如:/dev/sda  、/dev/raw/raw1 都是用户空间名称,OS Kernel根本不知道这个名称代指什么。在内核空间是通过major、minor device number来区分设备的。

major device number:可以看做是设备驱动程序,被同一设备驱动程序管理的设备有相同的major device number。这个数字实际是Kernel 中device driver table的索引。这个表保存着不同的设备驱动程序。

minor device number:代表被访问的具体设备。也就是说,Kernel根据major device number找到设备驱动程序,然后再从minor device number获得设备位置等属性。

所有这些major、minor device number是已经预先分配好了的,起详细信息可以从网址:www.lanana.org/docs/device-list/获得。。。比如裸设备的major device number是 162 ,SCSI块设备的major device number是8 。。。。

下面,我们看一下SCSI设备的用户空间文件名是如何和内核空间的major、minor device number对应的。SCSI设备的用户空间文件名是 sd +driver+partition 。  比如:sda1 、 sdb4.。又因为SCSI设备的major number是8 ,minor number=driver*16+partition numebr

第一块SCSI磁盘 /dev/sda的partition number是0 。 partition number= 0 代表整个磁盘,而其他分区从1开始排列。。Linux每个磁盘最多有16个分区,其中分区4代表真个扩展分区,所以可用的分区只有15个。

再回头看一下,裸设备文件名:/dev/raw/raw130  中的130代表一个minor device number为130的裸设备;还可以在/dev/raw下执行ll 命令确认major=162, minor=130。

继续向下看:

说明这个裸设备绑定到了major device number =8 ,minor device number =17--23 的设备上。。进一步我们可以在/dev/目录下执行ll sd* 来确定裸设备和其绑定设备的对应关系:

时间: 2024-11-04 22:27:19

关于major、minor的解释的相关文章

关于Unsupported major.minor version 49.0的错误解决办法_java

在装2个不同版本JDK时遇到了这个问题,在网上钩了一吧!查到一个讲解比较好的资料. 一:要解决的问题 我们在尝鲜 JDK1.5 的时候,相信不少人遇到过 Unsupported major.minor version 49.0 错误,当时定会茫然不知所措.因为刚开始那会儿,网上与此相关的中文资料还不多,现在好了,网上一找就知道是如何解决,大多会告诉你要使用 JDK 1.4 重新编译.那么至于为什么,那个 major.minor 究竟为何物呢?这就是本篇来讲的内容,以使未错而先知. 我觉得我是比较

unsupported major.minor version 解决方法

何谓 major.minor,且又居身于何处呢?先感性认识并找到 major.minor 来.顺便写一段 代码,然后用 JDK 1.5 的编译器编译成class,用UltraEdit或者其他能打开非十进制文件的软件打开此class,见下图: 从上图中我们看出来了什么是 major.minor version 了,它相当于一个软件的主次版本号,只是在这里是标识的一个 Java Class 的主版本号和次版本号,同时我们看到 minor_version 为 0x0000,major_version

Unsupported major.minor version 51.0解决办法

Unsupported major.minor version 51.0解决办法 我使用的是Eclipse-jee-indigo + JDK 1.6.23环境,结果使用时出现Unsupported major.minor version 51.0错误提示,下面我来介绍Unsupported major.minor version 51.0错误的解决办法   今天偶然间同事遇到一个问题,也加深了自己对eclipse中build path和java compiler compliance level

jdk版本冲突Unsupported major.minor version错误定位

jdk版本冲突会提示如Unsupported major.minor version 52.0这种错误,不同的jdk版本会有对应的数字提示,52.0对应jdk1.8,51对应jdk1.7,以此类推. 这个错误主要产生的原因有两类: 1. 一类是使用了高版本的jdk语法写的代码,使用低版本来编译: 2. 使用maven.ant这类编译工具的版本较低,环境中设置的jdk版本过高: 举个之前遇到过的例子 背景说明: 使用ant进行编译,ant脚本配置的jdk版本为1.6,用户环境变量为jdk1.6 代

eclipse-mac Eclipse Unsupported major.minor version 52.0问题

问题描述 mac Eclipse Unsupported major.minor version 52.0问题 mac下使用Eclipse IDE for Java Developers(Mars.1 Release (4.5.1))编译android项目(使用的是ADT23) 报: Errors occurred during the build. Errors running builder 'Android Package Builder' on project 'showDownTip'

session-Unsupported major.minor version 51.0

问题描述 Unsupported major.minor version 51.0 2015-7-14 17:07:42 org.apache.catalina.startup.HostConfig deployDirectory 严重: Error deploying web application directory F:openas omcat-7.0.63 omcat1webappsROOT java.lang.UnsupportedClassVersionError: com/radi

LVM,如何指定或修改逻辑卷的major, minor号

在创建逻辑卷时,可以指定逻辑卷的major和minor设备号. [-M|--persistent {y|n}] [--major major] [--minor minor] -M, --persistent {y|n} Set to y to make the minor number specified persistent. --minor minor Sets the minor number. -M必须和--major一起使用 例子 lvcreate -l 50%VG -n lv01

Unsupported major.minor version 52.0

今天运行项目,切换一下eclipse,运行程序突然发现普通的类main()方法无法运行,报错详细信息如下: Exception in thread "main" java.lang.UnsupportedClassVersionError: com/daling/bpmn/A : Unsupported major.minor version 52.0 Exception in thread "main" java.lang.UnsupportedClassVers

Android studio 出现 Unsupported major.minor version 52.0解决办法

Android studio 出现 Unsupported major.minor version 52.0解决办法 最近更新了Android studio 之后,出现了Error:Java.lang.UnsupportedClassVersionError:com/android/dx/command/Main : Unsupported major.minor version 52.0 异常, 一.这是因为 compileSdKVersion 和 buildToosVersion 版本对不上