[운영체제] 1. 메모리 구조 및 입출력
📌앞 내용에서 CPU에 대해 다뤘다면 이번에는 메모리 종류와 입출력 모듈에 대한 이야기를 다룰 예정입니다. 마찬가지로 본격적으로 운영체제에 대한 개념을 공부하기 전에 기본 개념을 익히는 정도라고 생각해 주세요.😄
1. 메모리 계층 구조
메모리에는 여러 종류가 존재합니다. 우리가 흔히 말하는 하드디스크나 RAM 등등이 모두 메모리 범주에 속합니다.
레지스터같은 경우 위에서 말한 명령어 단위의 메모리이고 캐시메모리와 Main Memory는 프로그램 실행 과정에서 해당 프로그램을 두는 장소입니다. 그 밖의 메모리들은 외부 저장 장치로 보통 하드디스크가 익숙할 것이고 CD-ROM이나 DVD등이 아마 친숙할 것입니다.
이런 메모리에는 3가지 주요 특성이 존재합니다.
바로 비용, 속도, 용량입니다.
용량
이 크면 저렴하지만 속도
가 느리고 속도
가 빠르고 작은 메모리의 경우 가격이 비싸집니다.
메인 메모리가 상대적으로 캐시 메모리 보다 접근 속도가 느린 반면 캐시메모리보다 용량은 많고 가격은 쌉니다.
이런 특징을 바탕으로 컴퓨터의 메모리 구조는 접근 속도가 느린 메인 메모리 접근 횟수를 줄이는 방법으로 캐시 메모리를 사용하는 형태를 사용합니다.
여기서 바로 참조 지역성(Locality of reference)
가 나오게 됩니다.
가장 최근에 자주 사용하는 메모리의 일부분을 캐시메모리에 저장해두고 접근 속도가 느린 메인 메모리에 접근하는 것이 아니 캐시메모리에 접근하여 속도를 챙기는 것이 바로 참조 지역성
입니다.
그럼 캐시 메모리는 어떤 녀석일까?
캐시 메모리
는 간단하게 설명하면 메인 메모리의 복사본입니다. 우리의 CPU의 속도는 메인 메모리보다 월등히 빠릅니다. 따라서 아무리 좋은 CPU를 쓰더라도 메인 메모리에서 정보를 제공해 주지 않으면 속도가 느릴 수 밖에 없습니다. 이런 문제를 해결해 주는게 바로 캐시 메모리
입니다. CPU와의 속도차이를 해결함과 동시에 메인 메모리로 저렴한 대용량 메모리를 제공함으로써 비용, 용량 그리고 속도를 모두 챙기는 것이 바로 캐시 메모리 - 메인 메모리 구조
입니다.
좀더 자세한 캐시 메모리에 대한 정보는 컴퓨터 구조에 나오는 내용입니다. 따라서 어떤 원리로 캐시 메모리가 작동하는지에 대해 궁금하시면 컴퓨터 구조를 참고하세요!!
CPU와 메모리가 소통하는 구조가 존재한다면 CPU와 I/O모듈이 소통하는 구조도 존재합니다. 따라서 다음으로 다룰 내용은 I/O Techniques(입출력)에 관한 내용입니다. 🐤
2. I/O Techniques
프로그램이 수행 중에 I/O연산 명령어를 만나면 CPU는 그 명령어를 수행하기 위해 해당 I/O모듈에 대해 명령합니다. 이런 I/O 연산에는 대표적으로 3가지 기술이 있습니다.
- Programmed I/O :
I/O 모듈이 요청된 연산을 수행하고 나서 I/O 상태 레지스터 내의 관련 비트만 설정할 뿐 , CPU에 대해 인터럽트를 포함한 다른 어떤 처리도 행하지 않는 방법입니다. 따라서 CPU는 I/O연산이 언제 완료되었는지 알기 위해 주체적 역할을 수행 해야 해서 I/O연산이 완료 될 때 까지 주기적으로 I/O모듈의 상태를 확인 해야 하는 방법입니다.
결과적으로, CPU가 입출력 연산동안 다른 일을 못하기에 CPU를 낭비하게 됩니다.
- Interrupt-Driven I/O (인터럽트) :
우리가 흔히 아는 구성. CPU가 I/O모듈에게 I/O명령을 내리고 CPU 자신은 다른 작업을 수행합니다. 이후에 I/O모듈은 연산이 끝난 뒤 CPU에게 인터럽트 요청을 보냅니다.
위에서 나온 인터럽트가 이것에 해당합니다. 이 방식으로 CPU의 낭비를 줄일 수 있습니다.
- DMA (직접 입출력 방식) :
이 방식은 대량의 데이터가 이동할 시 사용합니다. 가장 효율적인 I/O 연산 방식으로 CPU 도움 없이 입출력 모듈이 직접 메인 메모리에 접근하는 방식입니다. 간단한 진행 순서는 아래와 같습니다.
1
2
3
4
5
6
먼저 CPU가 한 block의 데이터를 읽거나 쓰려는 상황에서 아래와 같은 정보를
I/O모듈에게 제공합니다.
- read 나 write 요청
- 관련된 I/O장치 주소
- read 나 write 할 메인 메모리 내의 시작주소
- 읽거나 쓸 word의 개수
이런 정보를 보내 DMA 모듈에 입출력을 명령합니다. 이후 CPU는 다른 작업을 계속하고 이후 DMA가 입출력 연산을 완료하면 인터럽트 신호를 CPU에게 보냅니다.
간단하게 DMA에 대해 요약하면 CPU는 오직 전송의 시작과 끝에만 관여하고 나머지는 DMA 모듈에게 위임하는 방식임을 알 수 있습니다. 그리고 한 블록의 데이터가 CPU를 거치지 않고 메모리와 I/O 장치 사이에서 직접 전달되는 방법입니다.
3. 마치며..
이전에 공부했던 내용을 바탕으로 앞 단원을 정리하며 컴퓨터 구조 부분에 대해서도 자세하게 내용을 정리해야겠다는 부분이 몇가지 떠올랐습니다. 참조 지역성
과 캐시 메모리
에 대한 내용은 앞으로도 매우 중요해 보이는 개념이라고 생각이 되었고 복습을 하며 이 부분에 대한 내용도 자세하게 알고 있지 않다는 사실을 깨닫는 시간이었습니다!
📌다음 글로는 운영체제(OS)의 개요로 작성할 예정입니다!✏️✏️