(16,32비트)리얼모드와 가상모드가 각각 뭔지 궁금합니다.

inviolable의 이미지

제가 기존에 알고 있었던 것과 위키백과를 참조해보니

리얼모드(16비트)는 1MB의 메모리와 1개의 프로세스만 동시에 실행될 수 있고(멀티 태스킹 불가), 페이지 방식을 지원하지 않고.. 등등

보호모드는 16비트의 경우 각 프로세스당 1MB의 메모리 사용가능, 멀티 태스킹은 가능하나 자기에게 주어진 메모리 공간 이외의 메모리는 접근 불가능하고

페이징 지원하고 등등

32비트 보호모드는 각 프로세스당 4GB의 주소공간을 열어줌, 이게 프로세스 테이블에 의해 실 메모리와 매핑되고, 디스크 스와핑 기술이 있어서 가상 메모리가 구현되었고 등등

라고 설명했더니 많이 부족한 설명이라 하시더군요... 뭘 더 설명해야되는지 궁금합니다..ㅠㅠ 리얼모드 인터럽트 벡터 테이블에 대한 얘기도 해야되는 것 같던데요..ㅠㅠ

shint의 이미지

보호모드. 가상모드. 프로세스 모드'등으로 구글과 네이버에서 검색해보면. 다양한 정보가 있습니다.

정확한건 전문가나. 책으로 확인해 보세요.

리얼모드 (도스) < 보호모드 (DRAM 메모리) < 페이징 모드 (HDD).가 있는데.
도스 띄운거랑. EMS386 이나 QEMM 같은거로 메모리 할당해서 사용했다 같이. 설명하면 금방 알거 같은데요. ㅡ_ㅡ??
16비트와 32비트는 세그먼테이션의 앞자리? 부호 차이라고 하는거 같습니다.

리얼 모드 (도스)
http://terms.naver.com/entry.nhn?docId=845816&cid=42346&categoryId=42346

보호 모드 (세그먼테이션 : 순차적 분할 처리 방법) (GDT : Global Description Table 로 세그먼트 디스크립터가 모인 테이블 )
http://terms.naver.com/entry.nhn?docId=851245&cid=42346&categoryId=42346

페이징 모드 (HDD)
http://symnoisy.tistory.com/entry/3-%EC%9A%B4%EC%98%81%EB%AA%A8%EB%93%9C%EC%99%80-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B4%80%EB%A6%AC-%EA%B8%B0%EB%B2%951-%EB%A6%AC%EC%96%BC%EB%AA%A8%EB%93%9C%EB%B3%B4%ED%98%B8%EB%AA%A8%EB%93%9C%EC%9D%98-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B4%80%EB%A6%AC

메모리 관리 모델 - 페이징(Paging), 세그멘테이션(Segmentation)
http://blog.naver.com/kkn2988/142770566

보호 모드의 메모리 관리 방식
http://egloos.zum.com/miooim/v/49593

리얼모드에서 보호모드로 전환하는 단계
http://blog.naver.com/rnjstjdwo14/40193281518

운영체제 이론 - 1. 운영 모드 (책 3.1)
http://blog.naver.com/rnjstjdwo14/40192843321

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

inviolable의 이미지

답변 감사합니다

Necromancer의 이미지

real mode -> 8086/88의 동작 모드.
protected mode -> 286부터 지원되는 확장 모드. (real mode는 호환성을 위해서 제공하는 것이고 원래 이 모드로 돌려야 286부터 제공되는 모든 기능을 제대로 써먹을 수 있음)
=> 16/32bit는 세그먼트 디스크립터의 특정 비트 세트 여부에 따라 결정됩니다. 세그먼트 디스크립터가 메모리로 가는거 아시죠.
=> 1M 크기 제한은 "세그먼트 당" 입니다. 프로세스 정의는 개발자 맘입니다. 세그먼트 한둘 정도만으로도 할 수 있고 아님 여러개 뭉뚱그려서 할 수도 있습니다. 코드+데이터 해서 최소 2개 세그먼트는 필요합니다.
=> 세그먼트별로 권한을 부여하는 식으로 메모리에 대해 접근권한 제한 걸 수 있습니다.
=> 32bit, 페이징은 386부터입니다.
v86 mode -> protected mode에서 real mode를 즉석에서 흉내내기 위해 만들어진 모드. 페이징 변환 전 가상주소는 real mode와 똑같아서 여기에 도스 올리면 기존 8086모드에서 돌아가는 도스와 별반 차이 없지만, 실제 사용하는 메모리는 1M 위의 다른 영역일수도 있음. 윈도우나 맥osx에서 볼 수 있는 도스박스같은 것들이 쓰는 모드.

real mode도 프로세스를 구분하는 자료구조 정의하고 타이머로 수행시간 자르는 식으로 처리하면 멀티태스킹 얼마든지 구현 됩니다. 사용 가능한 메모리도 적을 뿐만 아니라 메모리 접근제한이 없기 때문에 한 프로세스가 메모리 망가뜨리면 시스템 전체가 아작나니 할 가치가 없어서 안하는거일뿐입니다.

아 참고로 도스머신도 emm386 올라가면 v86 mode로 돌아갑니다. 이상태에서 protected mode 전환할려면 기존의 방식으로는 전혀 안되고 emm386의 인터럽트 서비스 써야 함.

Written By the Black Knight of Destruction

inviolable의 이미지

답변 감사합니다

익명 사용자의 이미지

아... emm386이 32비트 환경 전환 명령줄 유틸리티였었군요. 도스 시절 때 뭐 하는 프로그램인지 전혀 몰랐던 ㅡ.,ㅡ;

Necromancer의 이미지

emm386은 도스에서 XMS를 EMS처럼 써먹는데 사용하는 유틸인데 올라가면 도스를 v86상태로 만듭니다.

EMS는 real mode에서 메모리 1M 이상 쓰기 위해 나온 편법입니다. 640k 위 영역 중 64k를 EMS의 특정 블록에 mapping하는데, 64k 다쓰면 다른 EMS block으로 매핑시켜서 거기다 또 쓰고... 식으로 1M 이상 메모리를 씁니다. XMS는 protected mode에서만 접근 가능한 1M 위의 메모리 영역이고요.

486 나올즈음부터는 EMS 쓰는 프로그램이 거의 없어졌으니 쓸일이 없어졌죠

Written By the Black Knight of Destruction

댓글 달기

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