HD.4
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:6k
源码类别:

操作系统开发

开发平台:

C/C++

  1. .TH HD 4
  2. .SH NAME
  3. hd - winchester hard disk
  4. .SH DESCRIPTION
  5. The
  6. .B hd*
  7. family of devices refer to the Winchester hard disk drivers for
  8. the IBM XT, AT and PS/2 machines, but may also refer to the generic (and
  9. slower) BIOS based hard disk driver.  These disks are arrays of 512 byte
  10. sectors, although Minix always works with two sectors at a time due to its
  11. 1024 byte block size.  You can read or write any number of bytes however,
  12. Minix takes care of cutting and pasting incomplete blocks together.
  13. .PP
  14. The devices may be divided into three classes:
  15. .sp
  16. .RS
  17. The devices with a minor device number that is a multiple of 5, i.e.
  18. .B hd0
  19. or
  20. .BR hd5 ,
  21. refer to the whole hard disk 0 and 1.  Through these devices one has access
  22. to any block on the hard disk.  Most notably the partition table, that can
  23. be found in the first sector of the disk.
  24. .sp
  25. The devices with a minor device number that is not a multiple of 5, i.e.
  26. .BR hd1 ,
  27. .BR hd2 ,
  28. &...,
  29. .BR hd6 ,
  30. &..., refer to primary partitions of the lower numbered whole hard disk
  31. device.  These devices normally contain MS-DOS or Minix file systems.
  32. /dev/hd1 is often the MS-DOS C: drive.
  33. .sp
  34. Minor devices from 128 up may refer to Minix subpartitions within primary
  35. partitions if a subpartition table has been placed in a Minix primary
  36. partition.  The subpartitions of
  37. .B hd3
  38. for instance, are named
  39. .B hd3a
  40. through
  41. .BR hd3d .
  42. Their minor device numbers may be calculated as
  43. 128 + 16*drive + 4*partition + subpartition, counting the partitions
  44. from zero.
  45. .PP
  46. If a primary partition is an extended partition then up to four logical
  47. partitions can be accessed as subpartitions of that extended partition.
  48. This allows one to access foreign file systems of other operating systems,
  49. Minix file systems are not normally placed in logical partitions.
  50. .SH PARTITIONING
  51. The first sector of a drive (or partition for subpartitioning) contains the
  52. partition table at byte offset 446.  This is what each of the four entries
  53. looks like as defined in <ibm/partition.h>:
  54. .sp
  55. .nf
  56. .ta +2n +29n +37n
  57. /* Description of entry in the partition table.  */
  58. struct part_entry {
  59. unsigned char bootind; /* boot indicator 0/ACTIVE_FLAG */
  60. unsigned char start_head; /* head value for first sector */
  61. unsigned char start_sec; /* sector value + high 2 cyl bits */
  62. unsigned char start_cyl; /* low 8 cylinder bits */
  63. unsigned char sysind; /* system indicator */
  64. unsigned char last_head; /* h/s/c for the last sector */
  65. unsigned char last_sec;
  66. unsigned char last_cyl;
  67. unsigned long lowsec; /* logical first sector */
  68. unsigned long size; /* size of partition in sectors */
  69. };
  70. .ta +24n +7n +37n
  71. #define ACTIVE_FLAG 0x80 /* value for active in bootind field */
  72. #define NR_PARTITIONS 4 /* number of entries in table */
  73. #define PART_TABLE_OFF 0x1BE /* offset of table in boot sector */
  74. /* Partition types (sysind). */
  75. #define MINIX_PART 0x81 /* Minix partition type */
  76. #define NO_PART 0x00 /* unused entry */
  77. #define OLD_MINIX_PART 0x80 /* created before 1.4b, obsolete */
  78. #define EXT_PART 0x05 /* extended partition */
  79. .fi
  80. .PP
  81. The cylinder numbers are encoded in a very strange way, bits 8 and 9 are
  82. in the high two bits of the sector number.  The sector numbers count from 1,
  83. not 0!  More useful are the lowsec and size fields however, they simply give
  84. the location of the partition as an absolute sector offset and length within
  85. the drive.
  86. .PP
  87. The partition table entry defined above is specific to IBM type disks.  The
  88. device drivers use another partition entry structure to pass information on
  89. a partition.  This is what <minix/partition.h> looks like:
  90. .sp
  91. .nf
  92. .ta +2n +25n
  93. struct partition {
  94. u64_t base; /* byte offset to the partition start */
  95. u64_t size; /* number of bytes in the partition */
  96. unsigned cylinders; /* disk geometry for partitioning */
  97. unsigned heads;
  98. unsigned sectors;
  99. };
  100. .fi
  101. .PP
  102. The base and size fields are the byte offset and length of a partition.
  103. (These are 64 bit numbers under Minix-vmd, but only 32 bit numbers under
  104. standard Minix.)  The geometry of the disk is also given for the benefit of
  105. partition table editors.  This information can be obtained from an open disk
  106. device with the call:
  107. .sp
  108. .RS
  109. .ft B
  110. ioctl(fIfdfP, DIOCGETP, &fIentryfP);
  111. .ft R
  112. .RE
  113. .sp
  114. One can change the placement of the device to the lowsec and size fields of
  115. .I entry
  116. by using the
  117. .B DIOCSETP
  118. call instead.  Only the base and size fields are used for
  119. .BR DIOCSETP .
  120. .PP
  121. The partition tables when read from disk by the driver are checked and
  122. truncated to fit within the primary partition or drive.  The first sector
  123. should be left free for the partition table.
  124. .PP
  125. The partition tables are read when the in-use count (opens and mounts)
  126. changes from 0 to 1.  So an idle disk is automatically repartitioned on the
  127. next access.  This means that repartitioning programs only have effect if a
  128. disk stays in use, unless they reload a changed partition table.
  129. .SH FILES
  130. /dev/hd[0-9], /dev/hd[1-46-9][a-d]
  131. .SH "SEE ALSO"
  132. .BR ioctl (2),
  133. .BR int64 (3),
  134. .BR part (8),
  135. .BR repartition (8).
  136. .SH BUGS
  137. The subpartitioning is incompatible with the MS-DOS method of extended
  138. partitions.  The latter does not map well to the sparse minor device number
  139. space.
  140. .PP
  141. The primary partition table is sorted by lowsec like MS-DOS does, subpartition
  142. tables are not.  Just think about what happens when you delete a partition in
  143. the MS-DOS scheme.
  144. .PP
  145. Don't move a partition that is mounted or kept open by some process.  The
  146. file system may write cached blocks to the new location.
  147. .PP
  148. The BIOS driver is not slow at all on a buffered disk.
  149. .PP
  150. Some IDE disks send an interrupt when they spin down under hardware power
  151. management.  The driver acknowledges the interrupt as it is supposed to do by
  152. reading the status register.  The disk then spins up again...  You have to
  153. disable the spin down in the computer setup to fix the problem.
  154. .SH AUTHOR
  155. Kees J. Bot (kjb@cs.vu.nl)