목록OS (28)
솜은 코튼
이전 내용에서 페이지 테이블을 이용해 메모리 접근하는 방법에 대해 알아봤다. 2023.05.21 - [OS] - [OS] 가상 메모리 (페이징 기법) [OS] 가상 메모리 (페이징 기법) 고정 분할 방식으로 메모리를 분할하여 관리하는 것을 페이징 기법이라고 했다. 페이징 기법의 구현 방법에 대해 알아보자. 페이징 기법의 구현 . . . 가상 주소는 프로세스 입장에서 바라본 메 sommda.tistory.com 페이지 테이블 매핑 방식 . . . 페이지 테이블 전체를 메모리에서 관리하느냐 메모리 영역 부족으로 일부를 스왑 영역에서 관리하느냐에 따라 가상 주소를 물리 주소로 변환하는 방법이 달라진다. 다양한 페이지 테이블 매핑 방식을 알아보자. 페이지 테이블 매핑 방식에는 직접 매핑, 연관 매핑, 집합-연관..
고정 분할 방식으로 메모리를 분할하여 관리하는 것을 페이징 기법이라고 했다. 페이징 기법의 구현 방법에 대해 알아보자. 페이징 기법의 구현 . . . 가상 주소는 프로세스 입장에서 바라본 메모리 공간으로 항상 0부터 시작한다. 가상 주소의 분할된 각 영역은 페이지라고 부르며 번호를 매겨 관리한다. 물리 메모리의 각 영역은 '프레임'이라고 부른다. 즉, 가상 메모리 영역은 '페이지', 물리 메모리 영역은 '프레임'으로 칭한다. 페이지와 프레임은 크기가 같아 어떤 프레임에도 배치될 수 있다. 모든 페이지의 위치 정보는 '페이지 테이블'에 담겨 있다. 모든 페이지의 정보를 순서대로 가지고 있으며, 물리 메모리에 없는 페이지는 페이지 테이블에 'invalid'라고 표시된다. 'invalid'는 해당 페이지가 스..
가상 메모리란? . . 컴퓨터마다 물리 메모리, 즉 실제 메모리의 크기가 다르다. 그렇다고 컴퓨터마다 프로그램을 구현하긴 어렵다. 하여 물리 메모리의 크기와 프로세스가 올라갈 메모리 위치를 신경 쓰지 않고 프로그래밍하도록 지원하고 이러한 메모리 시스템을 '가상 메모리'라고 부른다. 즉, 가상 메모리는 물리 메모리의 크기와 상관없이 프로세스에 커다란 메모리 공간을 제공하는 기술이다. 앞에서 논리 주소는 0번지부터 시작된다고 설명했다. 가상 메모리 또한 0번지부터 시작하는 연속된 메모리 공간을 가진다. 하지만 논리 주소는 물리 메모리의 주소 공간에 비례하지만 가상 주소는 가상의 주소 공간을 가진다. 가상 메모리는 물리 메모리의 크기와 상관없이 커다란 메모리 공간을 제공한다 했는데 이게 말이 되나? 이론적으론..
앞에서는 가변 분할 방식과 고정 분할 방식의 장단점을 설명하였다. 2023.05.21 - [OS] - [OS] 메모리 할당 (다중 프로그래밍 환경) [OS] 메모리 할당 (다중 프로그래밍 환경) 앞에서는 한 번에 한 프로세스만 실행되는 단일 프로그래밍 환경에서 설명하였다. 2023.05.21 - [OS] - [OS] 메모리 할당 (단일 프로그래밍 환경) [OS] 메모리 할당 (단일 프로그래밍 환경) 메모리를 어 sommda.tistory.com 가변 분할 방식의 메모리 관리 . . . 가변 분할 방식은 '세그멘테이션 기법'이라고도 한다. 우리가 앞에서 빈 공간들이 생기는 것을 알게 됐다. 그 공간들을 '단편화'라고 한다. 가변 분할 방식에서는 프로세스 외부에 공간이 생겨 '외부 단편화'라고 한다. 외부 ..
앞에서는 한 번에 한 프로세스만 실행되는 단일 프로그래밍 환경에서 설명하였다. 2023.05.21 - [OS] - [OS] 메모리 할당 (단일 프로그래밍 환경) [OS] 메모리 할당 (단일 프로그래밍 환경) 메모리를 어떻게 할당할 것인가? . . . 프로그램을 사용하기 위해 메모리로 가져온다고 앞에서 설명했다. 만약 프로그램이 메모리보다 크다면? 적당한 크기로 잘라서 가져와야 할 것이다. 이러한 sommda.tistory.com 이번엔 한 번에 여러 프로세스가 실행되는 다중 프로그래밍 환경에서 알아보자. 여러 프로세스들은 크기가 다 다를 것이다. 그럼 메모리를 어떻게 나눌까? 크게 프로세스 크기에 따라 메모리를 나누는 '가변 분할 방식'과 프로세스 크기와 상관없이 메모리를 같은 크기로 나누는 '고정 분할..
메모리를 어떻게 할당할 것인가? . . . 프로그램을 사용하기 위해 메모리로 가져온다고 앞에서 설명했다. 만약 프로그램이 메모리보다 크다면? 적당한 크기로 잘라서 가져와야 할 것이다. 이러한 기법을 '메모리 오버레이'라고 한다. 아래는 메모리 오버레이의 작동 방식이다. 그림판이 필요하면 그림판을 메모리에 올려놓고, 맞춤법 검사가 필요하면 그림판을 내쫓고 맞춤법 검사기를 메모리에 올려놓는다. 이렇게 어떤 모듈을 가져오거나 내보낼지를 '프로그램 카운터(PC)' 레지스터가 결정한다. 메모리 오버레이를 이용하면 메모리보다 큰 프로그램을 실행할 수 있다는 것을 알게 됐다. 그렇다면 다른 프로그램을 가져올 때 기존에 있던 프로그램은??? 별도의 공간에 임시로 저장한다! 이 임시 공간 영역을 '스왑 영역'이라고 부른..
컴퓨터는 메모리에 어떻게 접근할까? . . . 집에도 주소가 있듯 메모리에도 주소가 있다! 메모리 주소는 '절대 주소'와 '상대 주소로 나뉜다. 컴퓨터 설정이나 프로그램을 설치할 때 32bit나 64bit를 선택할 수 있는 것을 많이 보았을 것이다. 이것은 한 번에 다룰 수 있는 데이터의 최대 크기를 의미한다. 32bit CPU의 경우 메모리 주소를 지정하는 레지스터인 메모리 주소 레지스터(MAR)의 크기가 32bit이므로 표현할 수 있는 메모리 주소의 범위가 0~2³²-1, 총 개수가 2³²이다. 64bit CPU는 32bit CPU의 2배이므로 처리 속도가 당연 빠를 것이다! 요즘은 거의 64bit CPU를 사용한다. 컴퓨터에는 각 메모리 주소 공간이 있는데 물리 주소 공간은 하드웨어 입장에서 바라본..
메모리 관리를 왜 할까? . . . 과거엔 일괄 처리 시스템에서는 한 번에 한 가지 작업만을 처리했다. 그렇기 때문에 메모리 관리가 어렵지 않았다 하지만 오늘날의 시분할 시스템에서는 운영체제를 포함한 모든 응용 프로그램이 메모리에 올라와 실행되기 때문에 메모리 관리가 복잡하다는 것! 이 여러 프로그램들이 충돌되지 않도록 메모리 작업 공간을 확보해 주어야 한다. 이 메모리 관리는 메모리 관리 시스템(MMS, Memory Management System)이 담당한다. 메모리에 올리면 끝? 공간이 부족하면 새로운 공간도 확보하고 빈 공간이 여러 개 생기면 합치기도 하고 다양한 작업이 필요하다. MMS는 프로세스와 데이터를 메모리로 가져오기도 하고, 메모리의 어떤 부분에 올려놓을지도 결정하고, 메모리가 꽉 찼다..