운영 체제 의 가상 주소 와 물리 주 소 를 분석 하 다.
가상 주소(vitural address)와 논리 주소(logical address)의 차이 점 을 먼저 설명 합 니 다.
대부분의 운영 체제 의 책 들 은 가상 주 소 를 쓰 거나 논리 적 주 소 를 쓰 거나 나 를 어리둥절 하 게 보 았 다.
라 는 책 에서 정확 한 답 을 찾 았 습 니 다.여기 서 저 는 쓰 지 않 겠 습 니 다.개념 을 잠 그 면 이 두 가 지 는 확실히 차이 가 있 습 니 다.그러나 우리 가 일상생활 에서 사용 하고 운영 체 제 를 이해 하면 가상 주소 와 논리 주 소 를 같은 뜻 으로 이해 할 수 있 습 니 다.
2.당신 이 본 모든 주 소 는 사실 이 아 닙 니 다.
아래 의 C 코드 는 에서 발췌 한 것 으로 main 함수 의 주 소 를 순서대로 출력 하고 malloc(자바 의 new 작업 과 유사)가 되 돌아 오 는 쌓 인 공간 에서 분 배 된 값 과 스 택 의 정수 주소 입 니 다.
다음 출력 가 져 오기:
우리 가 알 아야 할 것 은 이 인쇄 된 주 소 는 모두 가상 입 니 다.물리 적 메모리 에 이 주소 들 은 실제 존재 하지 않 습 니 다.그들 은 최종 적 으로 운영 체제 와 CPU 하드웨어 에서 실제 물리 적 주소 로 번역 한 후에 야 실제 물리 적 위치 에서 이 주소 의 값 을 얻 을 수 있 습 니 다.
OK.위 는 하나의 도입부 로 삼 아 여러분 들 이 물리 적 주소 와 가상 주소 에 대해 직관 적 으로 이해 하도록 하 겠 습 니 다.다음 본문 부터 시작 하 겠 습 니 다.
3.물리 주소 지정 물리 적 주소 지정
물리 적 주소 의 개념 은 매우 이해 하기 쉬 우 니,너 는 그것 을 진정한 주소 라 고 부 를 수 있다.컴퓨터 시스템-제3 판 에서 제 시 된 물리 적 주소(physical address)의 정 의 는 다음 과 같다.
컴퓨터 시스템 의 메 인 저장 소 는 M 개의 연속 바이트 크기 의 단원 으로 구 성 된 그룹 으로 구성 되 어 있다.바이트 마다 유일한 물리 적 주소 가 있다.
예 를 들 어 첫 번 째 바이트 의 물리 적 주 소 는 0 이 고 그 다음 바이트 주 소 는 1 이 며 다음 주 소 는 2 이다.이런 간단 한 구 조 를 정 하면 CPU 가 메모리 에 접근 하 는 가장 자 연 스 러 운 방식 은 바로 이런 물리 적 주 소 를 사용 하 는 것 이다.우 리 는 이런 방식 을 물리 적 주소 지정(physical addressing)이 라 고 부른다.
예 를 들 어 프로그램 이 로드 명령 을 실 행 했 을 때 명령 내용 은 물리 적 주소 4 에서 4 바이트 글 자 를 읽 어 특정한 레지스터 로 전송 하 는 것 이다.
물리 적 주소 지정 과정 은 다음 과 같 습 니 다.CPU 가 이 명령 을 실행 할 때 물리 적 주소 4 를 생 성 한 다음 메모리 메 인 을 통 해 메모리 에 전달 합 니 다.메모 리 는 물리 적 주소 4 곳 에서 시 작 된 4 바이트 글 자 를 꺼 내 CPU 에 되 돌려 줍 니 다.CPU 는 지정 한 레지스터 에 저장 합 니 다.다음 그림 보기:
물리 적 주소 지정 이라는 방식 은 모든 프로그램 이 물리 적 메모리 에 직접 접근 하 는 것 을 발견 하기 어렵 지 않 습 니 다.사실은 중대 한 결함 이 존재 합 니 다.
1)우선,사용자 프로그램 은 메모리 의 임의의 바 이 트 를 찾 을 수 있 습 니 다.운영 체 제 를 쉽게 파괴 하여 시스템 이 천천히 작 동 하지 않도록 할 수 있 습 니 다.
2)다시 한 번,이러한 주소 지정 방식 으로 인해 운영 체제 에서 두 개 이상 의 프로그램 을 동시에 실행 하 는 것 은 거의 불가능 하 다.
예 를 들 어,우 리 는 세 개의 같은 프로그램(계산기)을 열 었 는데,모두 어느 단계 까지 실행 되 었 다.예 를 들 어 사용 자 는 이 세 프로그램의 인터페이스 에 각각 10,100,1000 을 입력 했 는데 그 에 대응 하 는 명령 은 바로 사용자 가 입력 한 숫자 를 메모리 의 특정한 주소 에 저장 하 는 것 이다.이 위치 에 하나의 숫자 만 저장 할 수 있다 면 어느 것 을 저장 해 야 합 니까?이거 충돌 아니 야?
다시 예 를 들 어 에서 발췌 한 것 이다.
한 프로그램 이 물리 적 메모리 주소 1000 대 입 값,즉 데 이 터 를 저장 한 후에 다른 프로그램 도 이 주소 에 대 입 값 을 부여 하면 두 번 째 프로그램의 대 입 값 은 첫 번 째 프로그램 이 부여 한 값 을 덮어 쓰 고 두 프로그램 이 동시에 무 너 질 수 있 습 니 다.
물론 우 리 는 거의 불가능 하 다 고 말 했다.완전히 불가능 한 것 이 아니 라 물리 적 주소 지정 이라는 방식 으로 여러 프로그램 이 동시에 실 행 될 수 있 는 방법 도 있다.
가장 쉬 운 방법 은 우선 남 은 프로 세 스 를 디스크 에 저장 하 는 것 입 니 다.실행 하지 않 을 때 메모 리 를 사용 하지 않 습 니 다.그리고 프로그램(또는 프로 세 스)이 모든 메모 리 를 단독으로 사용 하여 잠시 실행 하도록 합 니 다.컨 텍스트 전환 이 발생 하면 이 프로 세 스 를 중단 하고 모든 상태 정 보 를 디스크 에 저장 합 니 다.다른 프로 세 스 의 상태 정 보 를 불 러 오고 한동안 실행 합 니 다.........................................................................이것 은 비교적 거 친 병발 을 실현 하 였 다.
왜 그 가 거칠다 고 말 합 니까?왜냐하면 이런 방법 은 모든 메모리 정 보 를 디스크 에 저장 하 는 것 이 너무 느 리 기 때 문 입 니 다!특히 메모리 가 늘 어 날 때
따라서 프로 세 스 에 대응 하 는 메모 리 를 물리 적 메모리 에 계속 두 고 컨 텍스트 전환 이 발생 할 때 특정한 영역 으로 전환 하 는 것 을 고려 합 니 다.
다음 그림 에서 보 듯 이 3 개의 프로 세 스(A,B,C)가 있 습 니 다.각 프로 세 스 는 512 KB 물리 적 메모리 에서 자 른 작은 메모 리 를 가지 고 있 습 니 다.이 3 개의 프로 세 스 가 물리 적 메모 리 를 공유 하 는 것 으로 이해 할 수 있 습 니 다.
분명히 이런 방식 에는 일정한 안전 위험 이 존재 한다.각 프로 세 스 간 에 내용 을 마음대로 읽 고 쓸 수 있다 면 혼 란 스 러 울 것 이다.
그러면 어떻게 모든 프로 세 스 가 사용 하 는 주 소 를 보호 합 니까?물리 적 메모리 모델 을 계속 사용 하면 안 될 것 입 니 다.그래서 운영 체 제 는 새로운 메모리 추상 을 만 들 었 고 새로운 메모리 모델 을 도 입 했 습 니 다.그것 이 바로 가상 주소 공간 입 니 다.많은 책 에서'주소 공간(Address Space)'이 라 고 부 릅 니 다.
4.가상 주소 지정 가상 주소 지정
저 는 먼저 가상 주소 공간 과 가상 주소 의 개념 을 통속 적 으로 설명 하고 책 에 올 린 정 의 를 읽 기 가 좀 어색 합 니 다.
즉,모든 프로 세 스 의 스 택,쌓 기,코드 세그먼트 등 실제 물리 적 메모리 주 소 는 이 프로 세 스 에 있어 서 보이 지 않 고 누구 도 이 물리 적 주 소 를 직접 방문 할 수 없다 는 것 이다.
그럼 우 리 는 어떻게 이 프로 세 스 를 방문 합 니까?
운영 체 제 는 모든 프로 세 스에 가상 주소 공간(vitural address)을 할당 합 니 다.모든 프로 세 스 에 포 함 된 스 택,쌓 기,코드 세그먼트 등 은 이 주소 공간 에서 주 소 를 할당 합 니 다.이 주 소 는 가상 주소 라 고 합 니 다.바 텀 명령 에 기 록 된 주소 도 가상 주소 입 니 다.
모든 프로 세 스 는 자신의 주소 공간 을 가지 고 있 으 며 다른 프로 세 스 의 주소 공간 에 독립 되 어 있 습 니 다.즉,한 프로 세 스 의 가상 주소 28 에 대응 하 는 물리 적 주 소 는 다른 프로 세 스 의 가상 주소 28 에 대응 하 는 물리 적 주소 와 다 르 기 때문에 충돌 이 발생 하지 않 습 니 다.
이렇게 이해 할 수 있 습 니 다.물리 주 소 는 창고 입 니 다.가상 주 소 는 하나의 문패 입 니 다.예 를 들 어 모두 30 개의 문패 가 있 으 면 모든 과정 에서 이 30 개의 문패 를 볼 수 있 습 니 다.그러나 그들 이 본 똑 같은 문패 는 같은 창 고 를 가리 키 는 것 이 아 닙 니 다.
OK.다음은'현대 운영 체제-제3 판'책 에서 주소 공간 에 대한 설명 을 보면 쉽게 이해 할 수 있 을 것 같 습 니 다.
주소 공간 은 주소 지정 메모리 에 사용 할 수 있 는 프로 세 스 의 주소 집합 입 니 다.모든 프로 세 스 는 자신의 주소 공간 을 가지 고 있 으 며,이 주소 공간 은 다른 프로 세 스 의 주소 공간 과 독립 되 어 있 습 니 다.(일부 특수 한 상황 에서 프로 세 스 가 그들의 주소 공간 을 공유 해 야 하 는 것 을 제외 하고)
주소 공간의 개념 은 매우 통용 되 고 많은 장소 에서 나타난다.예 를 들 어 전화번호,미국 과 많은 다른 나라 에서 현지 전화 번 호 는 보통 7 자리 숫자 이다.이에 따라 전화번호 의 주소 공간 은 000 에서 99999 까지 이다.
주소 공간 도 비 숫자 일 수 있 고'.com'으로 끝 나 는 네트워크 도 메 인 이름 의 집합 도 주소 공간 이다.이 주소 공간 은 2~63 자 를 포함 하고 뒤에'.com'을 따 르 는 모든 문자열 로 구성 되 어 있 으 며,이 문자열 을 구성 하 는 문 자 는 알파벳,숫자,연결 문자 일 수 있 습 니 다.
지금까지 너 는 주소 공간의 개념 을 이미 알 고 있 을 것 이다.그것 은 매우 간단 하 다.
가상 주소 공간 이 생기 면 CPU 는 가상 주 소 를 생 성하 여 메 인 저장 소 에 접근 할 수 있 습 니 다.이 가상 주 소 는 메모리 로 보 내기 전에 적당 한 물리 적 주소 로 변 환 됩 니 다.이 가상 주 소 를 물리 적 주소 로 변환 하 는 과정 을 주소 번역/주소 변환(address translation)이 라 고 합 니 다.
주소 번역 은 CPU 하드웨어 와 운영 체제 의 밀접 한 협력 이 필요 합 니 다.CPU 의 메모리 관리 장치(Memory Management Unit,MMU)는 가상 주소 에서 물리 적 주소 로 전환 하 는 데 사 용 됩 니 다.그러나 MMU 는 메모리 에 저 장 된 조회 표를 빌려 야 합 니 다.이 표 의 내용 은 바로 운영 체제 에서 관리 합 니 다.
그렇다면 상기 CPU 가 가상 주 소 를 생 성하 고 주소 번역 을 하 는 절 차 는 가상 주소 지정(virtual addressing)이다.예 를 들 어 다음 그림 을 보 세 요.
이상 은 가상 주소 와 물리 주소 의 상세 한 내용 을 분석 하 는 것 입 니 다.가상 주소 의 물리 적 주소 에 관 한 자 료 는 저희 의 다른 관련 글 에 관심 을 가 져 주 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
실례를 통해 Nodejs 모듈 시스템 및 require 메커니즘 이해Nodejs에는 간단한 모듈 로딩 시스템이 있습니다.Nodejs에서 파일과 모듈은 하나의 독립된 모듈로 간주됩니다. 이 파일은 JavaScript 코드, JSON 또는 컴파일된 C/C++ 확장자일 수 있습니다. 2....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.