내 잡다한 노트

챕터2 컴퓨터 성능 향상 기술 본문

운영체제

챕터2 컴퓨터 성능 향상 기술

peanutwalnut 2022. 7. 8. 10:59

현대 컴퓨터 구조의 가장 큰 문제는 cpu와 메모리, 주변장치의 작업 속도가 다르다는 것이다.

cpu내에는 cpu 내부 버스가 따로 있고 cpu와 메모리, 주변장치들을 연결시켜주는 시스템 버스는 느려서 cpu 내부 버스와

속도가 다르다. 이걸 해결하기 위한 운영체제와 관련되 기술들이 존재한다.

 

버퍼

데이터를 가져올 때 하나씩 전송하면 느리다. 하지만 일정량의 데이터를 모아 한꺼번에 보낸다면 적은 노력으로도

많은 양의 데이터를 전송할 수 있게 된다. 그렇게 해주는 장치가 버퍼이다.

하드디스크에서 버퍼를 사용한다.

ex) 동영상 버퍼링. 내용을 한꺼번에 보내 사용자가 영상을 보는게 끊기지 않도록 도와준다.

 

스풀cpu와 입출력장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼이다.대표적인 예로 프린터에 사용되는 스풀러이다. 

 

캐시

메모리의 데이터를 미리 가져와 저장해두는 임시 장소이다.

필요한 데이터를 모아 한꺼번에 전달하는 버퍼의 일종으로 cpu가 아프로 사용할 것으로 예상되는 데이터를 미리 가져다놓는다.

캐시는 cpu 안에 있으며, cpu 내부 버스의 속도로 작동한다. cpu와 메모리 사이의 속도 차이를 완화해준다.

캐시는 메모리의 내용 중 일부를 미리 가져오고, cpu는 메모리에 접근할 때 캐시를 먼저 방문하여 원하는 데이터가 있는지 찾아본다. 이때 찾았다면 캐시히트라고 하며 바로 사용한다. 없으면 이걸 캐시 미스라고 한다.

 

캐시의 변경된 데이터를 메모리에 반영하는 방식즉시 쓰기 방식캐시의 데이터가 변경되면 즉시 메모리에 반영하는 방식

 

지연 쓰기 방식

변경되면 즉시 하는 것이 아니라 변경된 내용을 모아서 주기적으로 반영하는 방식 카피백이라고도 한다.

 

L1 캐시와 L2 캐시

L2캐시에서 사용할 것으로 예상되는 데이터를 메모리에서 미리 가져오고 L1캐시에서 데이터를 분류해 레지스터로 간다.

그래서 L1 캐시에는 명령어 캐시와 데이터 캐시가 따로 존재하고 분류를 한다. 

 

인터럽트

입출력을 할 때 CPU가 어떤 장치에게 이 일을 하라고 시키고 CPU는 다른 작업을 하고 있다가 어떤 장치가 일을 다 했으니 CPU에게 마무리하라고 보내는 신호를 인터럽트라고 한다.예상치 못한 상황일 때도 인터럽트를 보내는데 예를 들어 오류가 발생했을 때 신호를 보내 바로 이 일을 해결하도록 CPU에게 신호를 보낸다.

 

CPU의 작업과 저장장치의 데이터 이동을 독립적으로 운영함으로써 효율을 높인다. 

입출력 과정에서 인터럽트 방식의 동작 과정

1. CPU가 입출력 관리자에게 입출력 명령을 보낸다.

2. 입출력 관리자는 명령받은 데이터를 메모리에 가져다놓거나 메모리에 있는 데이터를 저장장치로 옮긴다.

3. 데이터 전송이 완료되면 입출력 관리자는 완료 신호를 CPU에 보낸다.

 

인터럽트에는 많은 주변장치 중 어떤 것의 작업이 끝났는지를 CPU에 알려주기 위해 인터럽트 번호를 사용한다.

 

직접 메모리 접근

입출력 관리자는 CPU가 요청한 데이터를 메모리에 가져다놓아야 하는데 이때 문제가 있다.

바로, 메모리는 CPU만 접근 권한을 가진 곳이라 입출력 관리자는 접근이 불가하다.

그래서 CPU의 허락 없이 접근할 수 있는 권한이 필요한데 이것을 직접 메모리 접근이라고 한다.

그런데, 직접 메모리 접근을 통해 들어온 데이터를 아무렇게나 둔다면 관리하기 어려우므로 메모리를 구역을 나누어 사용한다.

CPU가 사용하는 메모리 공간과 직접 접근을 통해 들어오는 데이터를 위한 공간을 분리한 것이다.

이걸 메모리 매핑 입출력이라고 한다.