본문 바로가기
전공/운영체제

Ch02. 컴퓨터의 구조와 성능 향상 _03) 컴퓨터 성능 향상 기술

by 임 낭 만 2023. 3. 24.

<쉽게 배우는 운영체제> 교재를 참고하였습니다.

버퍼

  • 버퍼
    • 속도에 차이가 있는 두 장치 사이에서 그 차이를 완화하는 역할을 하는 장치
    • 일정량의 데이터를 모아 옮김으로써 속도의 차이를 완화

더보기
  • 버퍼 : 속도차이가 있는 두 장치 사이에서 그 차이를 완충하는 역할.
  • 속도가 느린 입출력장치에서 데이터를 읽을 때마다 하나씩 전송하면 작업량에 비해 실제로 전송되는 데이터의 양이 매우 작지만, 일정량의 데이터를 모아 한 번에 전송하면 적은 노력으로 많은 양의 데이터를 옮길 수 있음
  • 일정량의 데이터를 모아 옮김으로써 속도의 차이를 완화
  • 스풀
    • CPU와 입출력장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼
    • [예] 스풀러
      • 인쇄할 내용을 순차적으로 출력하는 소프트웨어로 출력 명령을 내린 프로그램과 독립적으로 동작
      • 인쇄물이 완료될 때까지 다른 인쇄물이 끼어들 수 없으므로 프로그램 간에 배타적임

더보기
  • 스풀 : 버퍼와 유사한 용어, 스풀은 CPU와 입출력 장치가 독립적으로 동작하도록 개발된 S/W 적인 버퍼임 (ex : 프린터에 사용되는 스풀러)
  • 인쇄할 내용을 순차적으로 출력하는 소프트웨어로 출력 명령을 내린 프로그램과 독립적으로 동작
  • 워드프로세서로 작업하고 프린터로 출력하는 경우: 스풀러가 없으면 모든 출력을 워드프로세서가 알아서 처리해야 하므로, 인쇄가 끝날 때까지 워드프로세서를 사용할 수 없음.
  • 그러나, 스풀러를 사용하면 인쇄내용을 스풀러에 저장하고 워드프로세서는 다른 작업을 할 수 있음. 즉, 문서작업과 프린터 출력작업이 독립적으로 진행됨

캐시

  • 캐시
    • 메모리와 CPU 간의 속도 차이를 완화하기 위해 메모리의 데이터를 미리 가져와 저장해두는 임시 장소
    • 필요한 데이터를 모아 한꺼번에 전달하는 버퍼의 일종으로 CPU가 앞으로 사용할 것으로 예상되는 데이터를 미리 가져다놓음
    • CPU는 메모리에 접근해야 할 때 캐시를 먼저 방문하여 원하는 데이터가 있는지 찾아봄

더보기
  • 캐시 (은닉장소) : 메모리와 CPU 간의 속도 차이를 완화하기 위해 메모리의 데이터를 미리 가져와 저장해두는 임시 장소
  • 미리가져오기: prefetch
  • 캐시의 구조
    • 캐시 히트 (cache hit) : 캐시에서 원하는 데이터를 찾는 것으로, 그 데이터를 바로 사용
    • 캐시 미스 (cache miss) : 원하는 데이터가 캐시에 없으면 메모리로 가서 데이터를 찾음
    • 캐시 적중률 (cache hit ratio) : 캐시 히트가 되는 비율로, 일반적인 컴퓨터의 캐시 적중률은 약 90%
  • 즉시 쓰기 (write through)
    • 캐시에 있는 데이터가 변경되면 이를 즉시 메모리에 반영하는 방식
    • 메모리와의 빈번한 데이터 전송으로 인해 성능이 느려짐
    • 메모리의 최신 값이 항상 유지되기 때문에 급작스러운 정전에도 데이터를 잃어버리지 않음
  • 지연 쓰기 (write back)
    • 캐시에 있는 데이터가 변경되면 이를 즉시 메모리에 반영하는 것이 아니라 변경된 내용을 모아서 주기적으로 반영하는 방식
    • 카피백 (copy back)이라고도 함
    • 메모리와의 데이터 전송 횟수가 줄어들어 시스템의 성능을 향상할 수 있음
    • 메모리와 캐시된 데이터 사이의 불일치가 발생할 수도 있음
더보기
  • 캐시에서 원하는 데이터를 찾았다면 캐시히트라고 하며, 그 데이터를 바로사용함. 그러나 원하는 데이터가 캐시에 없으면 메모리로 가서 데이터를 찾는다. 이것을 캐시미스라고 함. 캐시히트가 되는 비율(적중률) 일반적인 컴퓨터 캐시적중률 90%임
  • 캐시는 메모리에 있는 데이터를 임시로 가져온 것이기 때문에 캐시에 있는 데이터가 변경되면 메모리에 원래 데이터도 변경해야 함
  • 캐시의 변경된 데이터를 메모리에 반영하는 방식 (즉시쓰기와 지연쓰기)
  • 즉시쓰기 : 변화가 생기면 계속 갱신함
  • 지연쓰기 : 한꺼번에 갱신함
  • L1 캐시와 L2 캐시
    • 캐시는 명령어와 데이터의 구분 없이 모든 자료를 가져오는 일반 캐시, 명령어와 데이터를 구분하여 가져오는 특수 캐시로 구분
    • 일반 캐시 : 메모리와 연결되기 때문에 L2(Level  2)캐시라고 부름
    • 특수 캐시 : CPU 레지스터에 직접 연결되기 때문에 L1(Level 1)캐시라고 부름

더보기
  • 프로그램 명령어명령어부분데이터 부분으로 나눔
  • 명령어 캐시명령어 레지스터와 연결되어 있고, 데이터 캐시데이터 레지스터와 연결되어 있음. 명령어 캐시나 데이터 캐시가 CPU 레지스터와 직접 연결되어 있기 때문에 L1 캐시. 일반 캐시는 메모리와 연결되어 있기 때문에 L2 캐시라고 함.

저장장치의 계층 구조

  • 저장장치의 계층 구조
    • 개념
      • 속도가 빠르고 값이 비싼 저장장치CPU 가까운 쪽에 두고, 값이 싸고 용량이 큰 저장장치반대쪽에 배치하여 적당한 가격으로 빠른 속도와 큰 용량을 동시에 얻는 방법
    • 이점
      • CPU와 가까운 쪽에 레지스터나 캐시를 배치하여 CPU가 작업을 빨리 진행할 수 있음
      • 메모리에서 작업한 내용을 하드디스크와 같이 저렴하고 용량이 큰 저장장치에 영구적으로 저장할 수 있음


인터럽트

  • 폴링 방식 (polling)
    • CPU가 직접 입출력장치에서 데이터를 가져오거나 내보내는 방식
    • CPU가 입출력장치의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 데이터를 처리
    • CPU명령어 해석과 실행이라는 본래 역할 외에 모든 입출력까지 관여해야 하므로 작업 효율이 떨어짐

  • 인터럽트 방식 (interrupt)
    • 입출력 관리자가 대신 입출력을 해주는 방식
    • CPU의 작업과 저장장치의 데이터 이동을 독립적으로 운영함으로써 시스템의 효율을 높임
    • 데이터의 입출력이 이루어지는 동안 CPU가 다른 작업을 할 수 있음

더보기
  • 인터럽트 개념 : 초기 컴퓨터시스템은 주변장치가 많지 않음.  당시에는 CPU가 직접 입출력장치에서 데이터를 가져오거나 내보내는 방식(폴링방식)
  • 현대 컴퓨터는 많은 주변기기 존재, CPU 가 모든 입출력에 관여하면 작업 효율이 급격히 저하!! 이러한 문제를 해결하기 위해 등장한 개념이 인터럽트 방식
  • 인터럽트 방식의 동작 과정
    1. CPU가 입출력 관리자에게 입출력 명령을 보낸다.
    2. 입출력 관리자는 명령 받은 데이터를 메모리에 가져다 놓거나 메모리에 있는 데이터를 저장장치로 옮긴다.
    3. 데이터 전송이 완료되면 입출력 관리자는 완료 신호를 CPU에 보낸다.

더보기

[그림 설명]

①인터럽트 입출력 요청   ②데이터 전송   ③인터럽트 발생 순 으로 진행됨. 여기서 인터럽트 0번, 3번의 작업이 완료되어 인터럽트 0번, 3번 동시 발생. CPU가 인터럽트 벡터를 받으면 인터럽트 0번과 3번 작업을 동시에 처리함

 

[DMA개념 알고 다시 설명]

입출력이 필요할 때 CPU는 입출력 관리자에게 입출력 요청을 보내고 자신은 하던 일을 계속함. 명령을 받은 입출력 관리자는 CPU가 요청한 데이터를 메모리에 가져다 놓아야 하는데 이때 문제가 생김. 메모리는 CPU만 접근권한을 가진 작업공간이라 입출력 관리자는 접근 불가함. 따라서 입출력 관리자에게 CPU의 허락없이 메모리에 접근할 수 있는 권한이 필요한데, 이 권한을 직접 메모리 접근 DMA라고 함.

  • 인터럽트
    • CPU는 입출력 관리자에게 작업지시를 내리고 다른 일을 하다가 완료신호를 받으면 하던 일을 중지하고 옮겨진 데이터를 처리함
    • 이처럼 하던 작업을 중단하고 처리해야 하는 신호라는 의미에서 인터럽트라고 함.
  • 인터럽트 번호
    • 많은 주변장치 중 어떤 것의 작업이 끝났는지를 CPU에 알려주기 위해 사용하는 번호
    • 윈도우 운영체제에서는 IRQ라 부름
  • 인터럽트 벡터
    • 여러 개의 입출력 작업을 한꺼번에 처리하기 위해 여러 개의 인터럽트를 하나의 배열로 만든 것
더보기
  • 입출력 관리자가 CPU에 보내는 완료신호를 인터럽트라 함.
  • 인터럽트 방식에서는 많은 주변장치 중 어떤 것의 작업이 끝났는지를 CPU에 알려주기 위해 사용하는 번호인 인터럽트 번호를 사용함
  • 윈도우 운영체제에서는 IRQ라 부름, 키보드 IRQ 1번, 마우스 IRQ 12 번 등등
  • CPU는 입출력 관리자에게 여러 개의 입출력 작업을 동시에 시킬 수 있음
  • 이런 경우 여러 작업이 동시에 완료되고 그때마다 인터럽트를 여러 번 사용해야 하는데 이는 매우 비효율 적임. 그래서 여러 개의 인터럽트를 하나의 배열로 만든 인터럽트 벡터를 사용함
  • 사용자가 컴퓨터 전원버튼을 눌러 강제로 종료하면 CPU는 하던 일을 모두 멈추고 처리 중인 데이터를 안전하게 보관한 뒤 시스템 종료
  • 직접 메모리 접근 (Direct Memory Access, DMA)
    • 입출력 관리자가 CPU의 허락 없이 메모리에 접근할 수 있는 권한
    • 메모리는 CPU의 작업 공간이지만, 데이터 전송을 지시받은 입출력 관리자는 직접 메모리 접근 권한이 있어야만 작업을 처리할 수 있음 

더보기
  • 직접메모리접근 (Direct Memory Access) : 과거의 OS는 폴링 방식을 사용했기 때문에 CPU가 메모리나 주변장치에 대한 모든 권한을 가지고 있음. 그러나 효율성을 높이기 위해 인터럽트 방식을 사용하면서 입출력 관리자가 데이터의 입출력을 담당함.
  • 메모리 매핑 입출력 (Memory Mapped I/O, MMIO)
    • 메모리의 일정 공간을 입출력에 할당하는 기법

더보기
  • 직접 메모리 접근은 인터럽트 방식의 시스템을 구성하는데 필수요소임. 그러나 문제는 직접 메모리 접근을 사용하면 메모리가 복잡해짐.
  • 메모리에는 CPU가 사용하는 데이터와 입출력 장치가 사용하는 데이터가 함께 있다. 따라서 직접 메모리 접근을 통해 들어온 데이터를 메모리에 둔다면 CPU가 사용하는 데이터와 섞여서 관리하기 어려울 것이기 때문에 이를 방지하기 위해 메모리를 분할해서 사용하는 방법을 도입함.
  • CPU가 사용하는 메모리 공간과 직접 메모리 접근을 통해 들어오거나 나가는 데이터를 위한 공간을 분리함
  • 사이클 훔치기
    • CPU와 직접 메모리 접근이 동시에 메모리에 접근하면 보통 CPU가 메모리 사용 권한을 양보
    • CPU의 작업 속도보다 입출력장치의 속도가 느리기 때문에 직접 메모리 접근에 양보하는 것으로, 이러한 상황을 사이클 훔치기라고 함

댓글