컴퓨터 아키텍쳐와 운영체제(1)
컴퓨터는 어떻게 프로그램과 메모리를 조직적으로 관리할까
1. 기본적인 구조 요소들
- 컴퓨터는 프로그램과 데이터를 처리하는 장치이다. 컴퓨터의 기본적인 구조 요소들은 프로세서 코어와 마이크로프로세서, 마이크로컴퓨터로 구분된다.
1-1. 프로세서 코어
- 프로세서 코어는 컴퓨터의 두뇌 역할을 하는 장치이다. 프로세서 코어는 프로그램의 명령어를 해석하고 실행하며, 데이터를 처리한다.
- 프로세서 코어는 중앙 처리 장치 (CPU)와 그래픽 처리 장치 (GPU)로 구성된다. CPU는 일반적인 연산을 수행하고, GPU는 그래픽 관련 연산을 수행한다.
- 프로세서 코어는 코어와 스레드로 구분된다. 코어는 독립적인 연산 장치이고, 스레드는 코어가 동시에 처리할 수 있는 명령어의 수이다. 코어와 스레드의 수가 많을수록 프로세서 코어의 성능이 향상된다.
1-2. 마이크로프로세서와 마이크로컴퓨터
- 마이크로프로세서는 프로세서 코어를 집적 회로로 구현한 장치이다. 마이크로프로세서는 CPU, GPU, 캐시 메모리, 버스, 레지스터 등의 구성 요소를 포함한다.
- 마이크로컴퓨터는 마이크로프로세서를 기반으로 한 컴퓨터이다. 마이크로컴퓨터는 마이크로프로세서 외에도 메모리, 입출력 장치, 저장 장치 등의 구성 요소를 포함한다.
2. 프로시저, 서브루틴, 함수
- 프로시저, 서브루틴, 함수는 프로그램을 작은 단위로 나누고 재사용하기 위한 방법이다. 프로시저, 서브루틴, 함수는 특정한 기능을 수행하는 일련의 명령어들로 구성된다.
- 프로시저, 서브루틴, 함수는 호출과 반환으로 구분된다. 호출은 프로시저, 서브루틴, 함수를 실행하기 위해 다른 프로그램이나 자기 자신에서 점프하는 것이다. 반환은 프로시저, 서브루틴, 함수의 실행이 끝나고 원래의 프로그램으로 돌아가는 것이다.
- 프로시저, 서브루틴, 함수는 매개변수와 반환값으로 구분된다. 매개변수는 프로시저, 서브루틴, 함수에 전달되는 입력 값이다. 반환값은 프로시저, 서브루틴, 함수가 실행한 결과로 출력되는 값이다.
- 프로시저, 서브루틴, 함수는 다음과 같은 차이점을 가진다.
- 프로시저는 매개변수와 반환값이 없는 경우를 말한다. 프로시저는 단순히 명령어들을 실행하고, 호출한 곳으로 돌아간다.
- 서브루틴은 매개변수는 있지만 반환값이 없는 경우를 말한다. 서브루틴은 매개변수를 이용하여 명령어들을 실행하고, 호출한 곳으로 돌아간다.
- 함수는 매개변수와 반환값이 모두 있는 경우를 말한다. 함수는 매개변수를 이용하여 명령어들을 실행하고, 반환값을 출력하고, 호출한 곳으로 돌아간다.
3. 스택
- 스택은 컴퓨터에서 데이터를 저장하고 관리하는 자료 구조이다. 스택은 후입선출 (LIFO, Last In First Out)의 원리로 작동한다. 즉, 가장 나중에 들어온 데이터가 가장 먼저 나가는 방식이다.
- 스택은 스택 포인터와 스택 프레임으로 구분된다. 스택 포인터는 스택의 최상단에 있는 데이터의 주소를 가리키는 레지스터이다. 스택 프레임은 스택에 저장되는 데이터의 단위이다.
- 스택은 푸시와 팝으로 구분된다. 푸시는 스택에 데이터를 삽입하는 것이다. 푸시를 할 때는 스택 포인터를 감소시키고, 스택 프레임을 저장한다. 팝은 스택에서 데이터를 꺼내는 것이다. 팝을 할 때는 스택 프레임을 읽고, 스택 포인터를 증가시킨다.
- 스택은 프로시저, 서브루틴, 함수의 호출과 반환에 사용된다. 호출할 때는 스택에 현재의 프로그램 카운터와 레지스터 값을 저장하고, 반환할 때는 스택에서 복원한다. 이를 콜 스택이라고 한다.
4. 인터럽트
- 인터럽트는 컴퓨터에서 프로그램의 실행을 일시적으로 중단하고, 다른 작업을 수행한 후에 다시 원래의 프로그램으로 돌아가는 기능이다. 인터럽트는 컴퓨터의 성능과 신뢰성을 향상시킨다.
- 인터럽트는 인터럽트 요청과 인터럽트 처리로 구분된다. 인터럽트 요청은 인터럽트가 발생하는 것이다. 인터럽트 요청은 하드웨어 인터럽트와 소프트웨어 인터럽트로 구분된다. 하드웨어 인터럽트는 입출력 장치나 타이머와 같은 외부 장치에서 발생하는 것이다. 소프트웨어 인터럽트는 프로그램의 오류나 예외 상황에서 발생하는 것이다. 인터럽트 처리는 인터럽트에 대응하는 것이다. 인터럽트 처리는 인터럽트 서비스 루틴이라는 특별한 프로그램을 실행한다. 인터럽트 서비스 루틴은 인터럽트의 원인을 파악하고, 필요한 작업을 수행하고, 원래의 프로그램으로 복귀한다.
- 인터럽트는 인터럽트 벡터와 인터럽트 우선순위로 구분된다. 인터럽트 벡터는 인터럽트의 종류에 따라 인터럽트 서비스 루틴의 주소를 저장하는 테이블이다. 인터럽트 벡터는 메모리의 고정된 위치에 있으며, 인터럽트가 발생하면 CPU가 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴을 호출한다.
- 인터럽트 우선순위는 인터럽트의 중요도에 따라 정해지는 순서이다. 인터럽트 우선순위는 하드웨어 인터럽트와 소프트웨어 인터럽트를 구분하고, 같은 종류의 인터럽트끼리도 구분한다. 인터럽트 우선순위는 인터럽트가 동시에 발생하거나, 이미 처리중인 인터럽트가 있을 때, 어떤 인터럽트를 먼저 처리할지를 결정한다.
5. 상대 주소 지정
- 상대 주소 지정은 프로그램의 흐름을 변경하는 명령어에서 사용되는 주소 지정 방식이다. 상대 주소 지정은 피연산자가 프로그램 카운터에 저장된 주소와 명령어에 포함된 오프셋의 합으로 계산되는 방식이다.
- 상대 주소 지정의 장점은 프로그램의 위치에 상관없이 정확하게 분기할 수 있다는 것이다. 상대 주소 지정은 프로그램의 재배치가 쉽고, 메모리 공간을 절약할 수 있다.
- 상대 주소 지정의 단점은 분기할 수 있는 거리가 제한된다는 것이다. 상대 주소 지정은 오프셋의 크기에 따라 분기할 수 있는 범위가 결정된다.
6. 메모리 관리 장치
- 메모리 관리 장치 (Memory Management Unit, MMU)는 컴퓨터에서 메모리의 할당과 접근을 제어하는 장치이다. 메모리 관리 장치는 CPU와 메모리 사이에 위치하며, 주소 변환, 메모리 보호, 캐시 관리, 가상 메모리 등의 기능을 수행한다.
- 주소 변환은 CPU가 사용하는 논리 주소를 메모리가 사용하는 물리 주소로 변환하는 기능이다. 주소 변환은 세그먼테이션과 페이징으로 구분된다. 세그먼테이션은 메모리를 가변 크기의 논리적 단위인 세그먼트로 나누는 방식이다. 페이징은 메모리를 고정 크기의 물리적 단위인 페이지로 나누는 방식이다.
- 메모리 보호는 메모리에 저장된 데이터의 무결성과 보안을 유지하는 기능이다. 메모리 보호는 메모리에 접근할 수 있는 권한과 범위를 제한하고, 잘못된 접근이 발생하면 예외를 발생시킨다.
- 캐시 관리는 메모리의 접근 속도를 향상시키는 기능이다. 캐시 관리는 자주 사용되는 데이터를 빠르게 접근할 수 있는 캐시 메모리에 저장하고, 캐시 메모리와 메인 메모리 사이의 일관성을 유지한다.
- 가상 메모리는 메모리의 용량을 확장하는 기능이다. 가상 메모리는 메모리보다 큰 프로그램이나 데이터를 실행할 수 있도록 하드 디스크의 일부를 메모리처럼 사용한다. 가상 메모리는 요구 페이징과 스와핑으로 구분된다. 요구 페이징은 필요한 페이지만 메모리에 적재하는 방식이다. 스와핑은 메모리가 부족할 때 사용하지 않는 페이지를 하드 디스크로 내보내고, 필요한 페이지를 메모리로 가져오는 방식이다.
7. 가상 메모리
- 가상 메모리는 컴퓨터에서 메모리의 용량을 확장하는 기능이다. 가상 메모리는 메모리보다 큰 프로그램이나 데이터를 실행할 수 있도록 하드 디스크의 일부를 메모리처럼 사용한다.
- 가상 메모리는 가상 주소와 물리 주소로 구분된다. 가상 주소는 CPU가 사용하는 주소이다. 물리 주소는 메모리가 사용하는 주소이다. 가상 주소와 물리 주소는 메모리 관리 장치에서 주소 변환을 통해 매핑된다.
- 가상 메모리는 페이지와 프레임으로 구분된다. 페이지는 가상 메모리의 기본 단위이다. 프레임은 메모리의 기본 단위이다. 페이지와 프레임은 같은 크기이다. 페이지와 프레임은 페이지 테이블을 통해 매핑된다. 페이지 테이블은 페이지의 가상 주소와 프레임의 물리 주소를 저장하는 테이블이다.
- 가상 메모리는 요구 페이징과 스와핑으로 구분된다. 요구 페이징은 필요한 페이지만 메모리에 적재하는 방식이다. 스와핑은 메모리가 부족할 때 사용하지 않는 페이지를 하드 디스크로 내보내고, 필요한 페이지를 메모리로 가져오는 방식이다.
- 가상 메모리의 장점은 메모리의 용량을 확장하고, 메모리의 효율성을 향상하고, 프로그램의 재배치와 공유를 용이하게 한다는 것이다. 가상 메모리의 단점은 주소 변환과 페이지 교체에 따른 오버헤드가 발생하고, 메모리의 접근 속도가 느려진다는 것이다.
출처
(1) 컴퓨터 메모리 정리와 최적화: 성능 향상을 위한 5가지 방법 …. (2) 컴퓨터 메모리 정리 방법, 전혀 어렵지 않음 : 네이버 블로그. (3) 컴퓨터 구조 12 : 캐시 메모리, 가상 메모리, 메모리 관리 ….