※ 전남대학교 박태준 교수님의 운영체제 강의를 듣고, 정리한 내용입니다.
응용 프로그램은 하드웨어에 직접적으로 접근할 수 없고, 반드시 운영체제를 통해 간접적으로 접근해야 합니다.
왜 이렇게 계층적 구조로 만들었는지? 하고 생각해보면.. 바로 추상화 때문이라고 볼 수 있습니다.
컴퓨터 필수장치 : CPU, 메모리 → 폰 노이만 구조
컴퓨터에 연결되는 모든 장치들은 최종적으로 메인보드와 연결됩니다.
그리고 메인보드에 연결된 각 장치들은 메인보드 내 버스 ( BUS ) 를 통해 통신합니다.
버스의 역할은 데이터를 실어나르는 것입니다.
버스가 어떻게 동작하는지에 따라 데이터 버스, 주소 버스, 제어 버스로 나눠서 볼 수 있습니다.
CPU 가 프로그램을 실행시키려면 메인 메모리에 적재되어 있어야 합니다.
이 적재되어 있어야 프로그램을 실행할 수 있다 라는 특징 때문에, 메인 메모리가 유일한 작업 공간이며 메모리 관리가 중요한 이슈라고 생각해볼 수 있습니다.
( 그래서 흔히들, 다다익램이라고도 이야기를 하는데, 램을 많이 끼울수록 속도가 빨라진다! 도 위의 이유때문에 나온 이야기라고 생각해볼 수도 있겠습니다. )
그러면.. 폰 노이만 구조를 이야기해봤는데, 단점은 무엇인지 한번 생각해볼 필요가 있습니다.
먼저 단점을 보기 전, 클럭과 버스의 동작 방식을 알아야 합니다.
컴퓨터의 장치들은 클럭 ( Clock ) 단위로 작업을 진행합니다.
CPU 가 버스를 거쳐 메모리에 데이터를 읽고 / 쓰는 과정을 살펴보면..
제어 버스로 Read / Write 를 결정하고, 주소 버스에 메모리에 읽고 / 쓰고자 하는 위치의 주소를 적어두고, 다음 클럭 사이클에 데이터 버스로 해당 데이터가 입력 / 출력 됩니다.
그러면 만약 데이터의 크기가 크다면 → 데이터 버스로 나르는 길이가 길어진다 라는 뜻이고, 이 말은 즉슨 많은 클럭을 필요로 한다 라고 볼 수 있습니다.
우리 일상에서 읽어야할 데이터의 크기가 버스의 크기보다 큰 경우는 매우 흔한 일입니다.
만약 메모리에 갑자기 많은 입출력이 동시에 발생한다면 → 늦게 요청된 작업의 입출력은 앞의 처리를 기다릴 수 밖에 없습니다.
근데, 메모리는 원래 CPU 보다 속도가 느리니, 병목현상 이 발생합니다.
이 병목현상이 컴퓨터가 느려졌다! 의 원인 중 하나라고 볼 수 있습니다.
버퍼란, 데이터 전달 간 임시로 저장하는 장치 혹은 장소를 뜻합니다.
여기서 메모리와 CPU 간 속도차이를 완화하고자, 일정량의 데이터를 모아 옮김으로써 속도차이를 완화할 수 있습니다.
예시로 5개의 짐을 옮겨야 한다 라고 생각해보면, 1개의 짐을 5번 옮길 때와 5개의 짐을 1번에 옮기는 것을 생각해보면 속도차이가 완화된다 라는 뜻을 이해해볼 수 있습니다.
CPU 와 가까울수록 속도가 빠르고, 저장 용량이 작습니다.
디스크 와 가까울수록 속도가 느리고, 저장 용량이 큽니다.
CPU 에 대한 버퍼, 메모리의 메모리 라고 볼 수 있는 캐시는, 메인 메모리 ( RAM ) 보다 훨씬 빠른 메모리 입니다.
메모리와 CPU 간의 속도 차이를 완화하기 위해 ( 병목현상을 완화하기 위해 ) 메모리에서 앞으로 사용할 것으로 예상되는 데이터를 미리 가져와 임시 저장해두는 장소가 캐시 입니다.
CPU 는 메모리를 접근 해야할 때, 가까운 캐시를 우선 방문하여 데이터에 접근합니다.
만약 캐시에 접근할 때 데이터가 있을 경우를 Cache hit, 없을 경우를 Cache miss 라고 부릅니다. ( 당연히 hit 수가 높을수록 더 좋습니다. )