메모리 메니지먼트...추가 질문...?

kkojiband의 이미지

먼저, 저기 밑에 답변해주신 분께 감사드립니다^^

메모리 메니지먼트에 대해서는 이론적으로는 공부한적이 있습니다. 그래서 gdt, ldt이런거에 대해 대충 개념은 알고 있는데, 실질적으로 프로그램 디버깅해보면 이게 어떻게 되는거지 하고 알쏭달쏭한 경우가 많습니다...--;

만약에 프로그램이 실행되면, 각 프로그램들은 자신들의 ldt 를 만들잖아요

그 때 .text, .rodata, .data 같은 각각의 섹션들을 하나의 entry 로 해서 만드는건가요?

실행 파일을 디버깅이나 덤프해서 보면 나오는 주소들은 어떻게 나온 것들인가요?

예를 들어, call 0x080482bc 이렇게 되있다면,

옆에 머신코드를 보니까 e8 49 ff ff ff 이런식으로만 나오던데요...

너무 어렵네요...T.T

아시는 분들 좀 도와주세요~ 부탁드립니다~

charsyam의 이미지

리눅스에서는 ldt를 안 쓰는 걸로 알고 있습니다.

음... 혹시나, 자세히 아시는 분 설명좀...

그럼 고운 하루되시길...

=========================
CharSyam ^^ --- 고운 하루
=========================

익명 사용자의 이미지

리눅스에서는 GDT만 쓰고요. (몇개 안써요.)

특권레벨 0 과 3만 사용합니다.

커널은 0을 쓰고 App들은 3을 사용합니다.

전부 선형 메모리를 사용하고요.

Task를 관리하는 방법은

INTR시 iret에 의하여

리턴하기전에 Schedule 구조체 (레지스터들을 담고 있고)
를 현재 레지스터에 세팅하고 리턴하게 되어 Task가 전환됩니다.
당연히 이전의 레지스터는 저장하고 current = current->next가 수행되겠죠.

즉, LDT를 사용할 이유가 거의 없게 되죠.

만약 LDT를 사용한다면 Process수가 8192를 넘지 못하죠.

항상 DS와 ES는 같다고 보시면 되고요.

SS는 기본적으로 DS,ES와 같지만 경우에 따라서 스택을 바꿔치기 하는

경우를 사용할수 있으므로 반드시 같다고 볼수 없습니다.

8의 배수로 CS,DS,ES,SS 가 지정되고 커널에서는 하위 2비트가 0이고

User들은 3을 갖습니다.

FS, GS는 기본적으로 특별히 사용하지 않으므로 0으로 되어 있습니다.

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.