메모리 주소란?
1Byte로 나뉜 메모리의 각 영역은 메모리 주소로 구분하며 CPU는 메모리에 있는 내용을 가져오거나 작업 결과를 메모리에 저장하기 위해서 주소를 사용한다.
컴파일러 - 인터프리터
컴파일러 : 소스코드를 컴퓨터가 실행할 수 있는 기계어로 번역한 후에 한꺼번에 실행 ( C 언어, 자바 등... )
소스코드에서 오류를 발견하여 문제없이 실행을 위해, 소스코드를 간결히 정리해서 실행 속도 향상을 위해 사용
컴파일러 과정 ) 소스코드 -> 컴파일러 -> 목적 코드 -> 링커 -> 실행
인터프리터 : 소스코드를 한 행씩 번역하여 실행 ( 자바스크립트, 파이썬 등 )
ex) 인터프리터 - 달리기 1회후 푸쉬업을 2회하고 물을 마신다.
컴파일러 - 운동 목록 ( 달리기 1회, 푸쉬업 2회) , 달리기 1회후 푸쉬업을 2회하고 물을 마신다.
CPU의 비트란?
CPU의 비트( bit )는 한 번에 다룰 수 있는 데이터의최대크기
ex) 32bit CPU는 한 번에 다룰 수 있는 데이터의 최대 크기 32bit => 32bit CPU 내의 레지스터 크기들은 전부 32bit, 산술논리 연산장치와 대역폭도 32bit이다.
물리 주소 공간 (physical address space) - 논리 주소 공간 (logical address space)
물리 주소 공간 : 하드웨어 입장에서 보는 주소로써 각각의 컴퓨터마다 크기가 다 다르다.
논리 주소 공간 : 사용자의 입자에서 바라본 주소 공간이다. => 항상 0번지부터 시작함
운영체제 영역을 통해서 경계값 위에 물리 주소, 아래는 논리주소로 침
단순 메모리 구조와 일괄 처리 시스템
단순 메모리 구조는 일괄 처리 시스템에서 주로 사용되며 일괄 처리 시스템은 한 번에 하나의 작업만 처리하는 시스템이다.
메모리 분할 - 메모리는 운영체제 영역과 사용자 영역으로 나누어 관리되며 운영체제는 시스템 자원과 기능을 관리하며 사용자 프로세스는 일반 프로그램을 의미함
사용자 프로세스 적재 - 사용자 프로세스는 운영체제 영역을 피해서 메모리에 적재됨
문제는 사용자 프로세스가 매번 다른 메모리 주소에 적재된다는 것인데 이는 운영체제의 크기와 상태에 따라 적재되는 주소가 달라지기 때문이며 이를 매번 관리하고 처리하는 것이 번거로움
해결법 => 메모리 최상위부터 적재하는 방법 : 이 문제를 해결하기 위해 사용자 프로세스를 메모리의 최상위부터 사용하는 방법이 제시됨
But 이렇게 메모리를 거꾸로 사용하기 위해서는 주소 변경 작업이 필요하고 이 작업이 복잡하여 잘 사용되지 않음.

메모리 오버레이 (memory overlay)
프로그램의 크기가 실제 메모리 즉, 물리 메모리보다 클 때 전체 프로그램을 적당한 크기로 잘라서 메모리에 가져오는 기법
Swap 영역
메모리가 모자라서 쫓겨난 프로세스를 저장장치에 특별한 공간에 모아두는 영역을 말함
저장장치는 장소만 빌려주며 메모리 관리자가 관리함
사용자는 실제 메모리 + 스왑 영역 = 전체 메모리로 인식하며 사용함
스왑 인 : 스왑 영역에서 메모리로 데이터를 가져오는 작업
스왑 아웃 : 메모리에서 스왑 영역으로 데이터를 내보내는 작업
메모리 분할 방식
가변 분할 방식 : 프로세스 크기에 따라 메모리를 나눔
- 메모리의 영역이 각각 다름
- 연속 메모리에 할당함
- 장점 : 프로세스를 한 덩어리로 처리 = 연속된 공간 배치 => 프로세스 크기에 맞춰서 메모리를 할당한다 = 세그멘테이션 기법
- 단점 : 하나로 합치기 때문에 다른 프로세스 자리도 옮겨야됨 메모리 관리가 까다로움 => 단편화 발생 가능
- 단편화 : 프로세스들이 메모리에 작업하다가 종료되면 빈공간이 생김 => 가변 분할은 조각이 프로세스 밖에 위치하여 외부 단편화 발생
- 단편화를 방지하기 위해 메모리 배치 방식, 조각 모음 시행
- 메모리 배치 방식 : 작은 조각이 발생하지 않도록 프로세스 배치
- 조각 모음 : 작은 조각을 모아 하나의 큰 덩어리로 만듬
- 가변 분할 방식에서 메모리 배치가 선처리 조각모음은 후처리임
고정 분할 방식 : 프로세스 크기에 상관없이 같은 크기로 메모리를 나눔
- 큰 프로세스가 올 시 여러 조각으로 나눔
- 비연속 메모리에 할당함
- 장점 : 일정 크기로 나누기 때문에 메모리 관리 수월 => 통합같은게 필요가 없다
- 단점 : 쓸모없는 공간이 생겨서 낭비가 발생

왼쪽이 가변, 오른쪽이 고정
메모리 관리 측면에서 보면 제각각이여서 왼쪽이 불편하다
그에 비해 오른쪽은 고정적이기때문에 관리가 수월하다
'운영체제' 카테고리의 다른 글
| 페이지 교체 알고리즘 (0) | 2026.03.16 |
|---|---|
| 운영체제 교착 상태 (데드락) (0) | 2026.03.16 |