GDT와 세그먼트에 대한 질문이 있습니다.

HellBringer의 이미지

안녕하세요? 요즘 OS와 어셈블리어에 대해서 공부하는데 모호한 부분이 있어서 질문드립니다.
프로세스가 생성되면 4GB공간에 코드, 데이터, 스택, 힙 섹션이 세그먼트로 생성되는 것으로 알고 있습니다.
그러면 프로그램이 실행될때마다 GDT에 이 모든 세그먼트가 추가되는건가요?

swirlpotato의 이미지

그냥 운영체제에서 GDT에 코드, 데이터 등의 커다란 세그먼트를 몇 개 만들어서 그 세그먼트를 운영체제가 분할해 줍니다.

HellBringer의 이미지

이런 식으로 이해하면 될까요?
말씀하신대로 GDT에 코드, 데이터 등의 세그먼트를 커다랗게(예를 들어 100MB) 나누고, 프로세스A가 실행되면 그중의 10MB를 사용하게 하고, 프로세스 B가 실행되면 그다음부터의 10MB를 사용..

제가 가진 어셈블리어 책과 OS책에는 실행파일의 섹션과 GDT가 어떻게 관계되는지 설명이 충분하지 못해서(혹은 제가 이해를 못하거나요..-_-;) 이해가 잘 안되네요.

책이나 웹링크도 괜찮습니다. 알려주세요.

swirlpotato의 이미지

운영체제마다 다른 방식을 쓸 수 있긴 합니다.

(x86 기준으로 작성입니다.)
제가 말한 방식은 모든 태스크가 동일한 GDT의 세그먼트를 이용하며 각각은 다른 페이징 테이블을 이용하여 같은 논리 주소를 가져도 다른 물리 주소를 가질 수 있습니다.
예를 들어 유저모드에 2기가 커널모드에 2기가 선형으로 할당하고 이용 하는 부분에만 페이지를 연결 시키면 됩니다.
공유 메모리를 이용하는 부분은 물리메모리 주소 할당하면 되고요

그리고 운영체제는 페이지를 어떻게 할당하고 해제할지에 대해서만 고민하고 세그먼트에 대해서 신경을 거의 쓰지 않아도 됩니다.

페이징 디렉토리 테이블이나 페이징 테이블, 페이지 엔트리 등 어찌되었든 페이지관련을 교체할 때 TBL을 날려줘야 합니다. 그렇지 않으면 잘못된 위치를 찾아갑니다.

자세한 점은 아랫분께서 ^_^;; 물론 제가 틀린 부분 수정도 아랫분께서..
부탁좀 굽신굽신

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.