physical disk상에의 sylinder, head, sector 와 logical address(논리주소)와의 변환관계

post_on의 이미지

physical disk상에의 sylinder, head, sector 와 logical address(논리주소)와의
변환관계

Copyright (C) 2012 경열
이 문서는 GNU 자유 문서 사용 허가서를 따릅니다.

컴퓨터가 플로피 드스크나 하드디스크에 접근하기 위해서는 cylinder, head,
sector값이 있어야 합니다. 하지만 메모리상에서는 위의 값이 아닌 논리 주소를
사용합니다. 논리주소는 0 부터 마지막값까지 구분없이 사용하는 값입니다. FAT32를
사용한다고 가정할 경우 논리 주소값 64를 CHS값(cyliner,head,sector 이하 CHS)으로
바꾸면 cyliner = 0, head = 1, sector = 2 가 됩니다. 이런 변경은 어떤 이유때문에
헷갈립니다.

이것을 공식으로 만들어 보았습니다.

cylinder, head, sector값의 범위는 다음과 같습니다.
(FAT32를 사용한다고 가정하겠습니다.)

cylinder : 0 ~1023

head : 0 ~ 255

sector : 1 ~ 63

최대값과 최소값을 다음과 같이 나타냅니다.

Cmax = 1023, Cmin = 0 (C : cylinder 이하 C)

Hmax = 255, Hmin = 0 (H : head 이하 H)

Smax = 63, Smin = 1 (S : sector 이하 S)

실제 hard disk에서는 다를 수 있지만 컴퓨터의 프로그램 상에서는 위와 같습니다.
cylinder는 2byte로 표현되고 head는 1byte로 표현되며 sector값의 범위는
정해져있습니다.

여기서 문제가 되는 것은 sector값입니다. cylinder와 head는 0값을 가질 수 있지만
sector는 0값을 가질 수 없습니다. sector값의 범위를 0 ~ 62로 가정합니다.

sector : 1 ~ 63 -> 0 ~ 62

또 원래의 값과 구분하기 위해 변경된 sector값을 S` 이라 하겠습니다.

각 값의 최대값과 최소값을 나타내면 다음과 값습니다.

Cmax = 1023, Cmin = 0

Hmax = 255, Hmin = 0

S`max = 62, S`min = 0

serctor 값을 나타내는 기호를 1 ~ 63 까지 사용하지 않고 0 ~ 62 까지 사용한 것
뿐입니다.

이 값을 이용해서 LBA값을 나타내보겠습니다.
(LBA : logical block address 이하 LBA)

C(Hmax + 1)(S`max + 1) +H(S`max + 1) + S` = LBA

LBA는 최소값으로 0값을 갖습니다. 달리 CHS는 최소값으로 1값을 갖습니다.

결국 LBA는 0 ~ end 까지 값을 갖고 CHS는 1 ~ end 까지 값을 갖습니다.

두 경우가 서도 다른 시스템을 갖고있기 때문에 헷갈리는 것입니다.

위의 식에서 실제 S값을 구하기 위해서는 S`에 1을 더하기만 하면 됩니다.

반대로 LBA값을 구하기 위해서는 S값에서 1을 빼고 계산하면됩니다.

여기서 두 가지 시스템을 정의해봅시다. S의 최소값이 1인 경우를 CHS system이라
하고 S의 최소값이 0인 경우 즉 S`이 사용되는 경우를 LBA system이라 합겠습니다.
두 관계의 변환은 항상 LBA system상에서 이루어져야 합니다. 이유는 수학적인 연산을
하기 위해서입니다. CHS system과 LBA system의 상호 변환은 LBA system상에서
이루어져야 하는 것입니다.

위의 예제를 적용해 보겠습니다.

우선 CHS값을 가지고 LBA값을 구해보겠습니다.

먼저 S값을 S`값으로 바꿔 LBA system으로 바꿉니다.

C = 0, H = 1, S` = 1

식에 대입해서 LBA값을 구합니다.

1*63 + 1 = 64

올바른 LBA값을 구했습니다.

반대로 LBA값을 가지고 CHS값을 구해보겠습니다.

LBA system상 이므로 system변환은 연산후에합니다.

LBA / (Hmax +1 )(S`max +1) => 몫 = C -(식1) => 64 / 256*63 = 0

(식1)의 나머지 / (S`max + 1) => 몫 = H -(식2) => 64 / 63 = 1

(식2)의 나머지 = S` => 1

CHS system으로 변환해보겠습니다.

S = S` + 1 => 1 + 1 = 2

C = 0, H = 1, S = 2

올바른 CHS값이 나왔습니다.

Forums: 

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.