[OS] 컴퓨터의 구조와 성능향상 기술

Park H·2020년 12월 28일
0

OS

목록 보기
2/9
post-thumbnail

컴퓨터의 기본구성

1.하드웨어의 구성

  • 필수장치 : 중앙처리장치(CPU), 메인메모리(RAM)
  • 주변장치 : 입력장치, 출력장치, 저장장치

1) CPU와 메모리

  • CPU : 명령어를 해석하여 실행하는 장치(두뇌)
  • 메모리 : 작업에 필요한 프로그램과 데이터를 저장하는 장소

2) 입출력 장치

  • 외부의 데이터를 컴퓨터에 입력하는 장치

3) 저장장치

  • 속도가 느리지만 가격이 저렴

4) 메인보드

  • cpu와 메모리등 다양한 부품을 연결하는 커다란 판
  • 각 부품은 버스로 데이터를 이동

2. 폰노이만 구조

  • (중요) 모든 프로그램은 메모리에 올라와야만 실행 할 수 있다.

3. CPU와 메모리

1) CPU의 기본구성 3가지

  1. 산술논리 연산장치
    :데이터 덧셈, 뺄셈 등 산술연산/ and, or 같은 논리연산을 수행

  2. 제어장치
    : cpu에서 작업을 지시하는 부분 ( "이거 가져가", "여기로 가져와")

  3. 레지스터
    : CPU내에 데이터를 임시로 보관하는 곳

2) 레지스터의 종류 (크게)

  1. 데이터 레지스터 (DR)
    : 메모리에서 가져온 데이터를 임시로 보관할 때 사용
    ⇒cpu에 있는 대부분의 레지스터가 DR, 따라서 일반레지스터라고도 함

  2. 주소 레지스터 (AR)
    :메모리의 주소가 저장된 레지스터

3) 특수 레지스터

⇒ 특별한 용도로 사용되는 레지스터
: 사용자가 임의로 변경할 수 없다. (사용자 불가시 레지스터)

  1. 프로그램 카운터(PC)
    :다음에 실행할 명령어의 주소를 기억하는 역할
  1. 명령어 레지스터(IR - instruction register)
    :현재 실행중인 명령어 저장

  2. 메모리 주소 레지스터(MAR)
    :메모리를 가져오거나 보낼 때 주소를 지정하기 위해 사용
    (다시 제자리로 보내야하기 때문에 필요)

  3. 메모리 버퍼 레지스터 (MBR)
    :데이터를 임시저장, MAR과 항상 함께 동작

4) 버스의 종류

  1. 제어버스 (양방향)
    : 다음에 어떤 작업을 할지 지시하는 제어신호가 오고감
    ⇒ 제어버스는 cpu와 제어장치와 연결

  2. 주소버스 (단방향)
    : 메모리의 데이터를 일거나 쓸 때 어느 위치에서 작업할 것인지 알려주는 위치정보가 오고간다.
    ⇒주소버스는 "메모리 주소 레지스터"와 연결

  3. 데이터 버스 (양방향)
    : 데이터가 데이터 버스에 실려이동 (명령어 + 데이터)
    ⇒메모리 버퍼 레지스터에 연결

  • 버스의 대역폭 : 한번에 전달 할 수 있는 데이터의 최대 크기를 말한다.

5) 메모리의 보호(보안)

OS가 구동되는 메모리와 일반 사용자가 사용하는 메모리가 서로 침범되지 않기 위해, 혹은 각각의 메모리 범위를 지정하여서 보호하기 위해

  • 경계 레지스터와, 한계 레지스터를 사용한다.

  • 인터럽트
    : 두 레지스터의 값을 벗어나면 인터럽트가 발생하고, 인터럽트가 발행하면 모든 작업을 중단한다.(OS에서 해당 프로그램 강제 종료)

  • 부트 스트랩
    : 운영체제 또한 프로그램이기 때문에 메모리위에 올라와야 실행이 된다.

이렇게 운영체제를 메모리위에 올리는 과정을 부팅 이라하며,
이러한 일을 하는 프로그램을 부트 스트랩이라고 한다.

4. 컴퓨터 성능 향상 기술

1) 버퍼

  • 버퍼란, 속도에 차이가 있는 두 장치 사이에서 그 차이를 완화하는 역할을 한다.
  • 일정량의 데이터를 모아서 처리

2) 스풀

  • 입출력 장치와 cpu가 독립적인 것.
    ex) 프린터
    : 프린터는 스플러에 담아서 전송한다.(스풀링)

3) 캐시

  • 메모리와 CPU간의 속도차이를 완하하기 위한 것
  • 메모리의 데이터를 미리 가져와 저장해두는 임시 저장소.

가. cpu는 메모리에 저근해야 할 때 캐시를 먼저 방문한다.
나. 캐시에서 원하는 데이터를 찾았다면, 캐시 히트라 한다.
다. 찾지 못하였다면 메모리로 가서 데이터를 찾는다 (캐시 미스)

4) 저장장치의 계층구조

  • 비싸고 속도가 빠른 저장장치를 cpu 가까운곳에 배치하여 성능을 향상시키는 구조이다.

  • 보통 아래의 순서와 같다.
    "레지스터" > "캐시" > "메모리" > "저장장치"

5) 인터 럽트

  • CPU와 메모리와 달리, 주변장치나 입출력 장치는 "인터럽트"를 통해 관리된다.

가. 인터럽트란

  • CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외상황이 발생하여 처리가 필요할 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것을 말한다.
    인터럽트는 크게 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉜다.

즉, 인터럽트란 입출력 관리자가 CPU에게 보내는 완료신호 이다.


나. 인터럽트 동작과정

  • 1) cpu가 입출력 관리자에게 입출력 명령 보냄

  • 2) 입출력 관리자는, 데이터를 메모리에 가져다놓고나서 저장장치에 옮김

  • 3) 데이터 전송 완료시, 완료신호를 CPU에 보냄(인터럽트)

  • 4) CPU가 신호를 받으면 하던일을 중단하고 데이터를 처리


다. 하드웨어 인터럽트

  • 하드웨어가 발생시키는 인터럽트로, CPU가 아닌 다른 하드웨어 장치가 cpu에 어떤 사실을 알려주거나 cpu 서비스를 요청해야 할 경우 발생시킨다.

라. 소프트웨어 인터럽트

  • 소프트웨어가 발생시키는 인터럽트이다. 소프트웨어(사용자 프로그램)가 스스로 인터럽트 라인을 세팅한다.
    종류: 예외 상황, system call

  • 인터럽트를 발생시키기 위해 하드웨어/소프트웨어는 cpu내에 있는 인터럽트 라인을 세팅하여 인터럽트를 발생시킨다.
    cpu는 매번 명령을 수행하기 전에 인터럽트라인이 세팅되어있는지를 검사한다.


5. 병렬 처리

1) 병렬 처리의 개념

  • 병렬처리란, 동시에 여러개의 명령을 처리하는 것이다. (듀얼 코어, 쿼드 코어)

  • 하나의 코어(cpu)에 여래개의 스레드를 이용하는 방식이을 파이프라인이라 한다.

  • 스레드 : CPU가 처리할 수 있는 작업의 단위

2) 병렬처리 고려사항

  1. 상호 의존성이 없어야 한다.
    :각 명령이 서로 독립적이어야 한다.

  2. 각 단걔의 시간이 거의 일정해야 한다.
    : 그렇지 않다면 뒤에 오는 프로세스들이 기다려야하거나, 시간이 오래걸리는 단계에서 "병목 현상" 이 일어날 수 있다.

  3. 전체 작업시간(명령어)를 몇 단계로 나눌지 고려해야한다.

  • 작업을 N개로 쪼개면, 병렬처리의 깊이는 N이다.
  • N(깊이) 는 동시에 처리할 수 있는 작업의 개수 이다.

3) 병렬처리 기법

  1. 파이프라인
  • 하나의 코어에 여러개의 스레드를 사용하는 것이다.
    (명령을 겹쳐서 실행)
  • 파이프라인의 위험

① 데이터 위험(Data Hazard)

  • 데이터의 의존성 때문에 발생하는 문제

  • 데이터 A를 필요로 하는 두 번째 명령어는 앞의 명령어가 끝날 때까지 동시에 실행되어서는 안 됨

  • 데이터 위험은 파이프라인의 명령어 단계를 지연하여 해결

  • 데이터 위험의 예

    [A = C + D]

      [E = A * 2]

② 제어 위험(Control Hazard)

  • 프로그램 카운터 값을 갑자기 변화시켜 발생하는 위험

  • 첫 명령어를 실행하고 보니 goto 문이어서 다음 문장이 아니라 다른 문장으로 이동하게 되면 현재 동시에 처리되고 있는 명령어들이 쓸모없어짐

  • 제어 위험은 분기 예측이나 분기 지연 방법으로 해결

  • 제어 위험의 예

    [Goto line 10]

      [E = A * 2]

    ③ 구조 위험(Structural Hazard)

  • 서로 다른 명령어가 같은 자원에 접근하려 할 때 발생하는 문제

  • 명령어 A가 레지스터 RX를 사용하고 있는데 병렬 처리되는 명령어 B도 레지스터 RX를 사용해야 한다면 서로 충돌

  • 구조 위험은 해결하기 어렵다고 알려져 있음

  • 구조 위험의 예

    [ADD RX + 3]

     [Move RX]
  1. 슈퍼 스칼라
  • 코어가 여러개( 각 코어당 파이프라인을 실행)인 것
  1. 슈퍼 파이프라인
  • 파이프란인은 한 클럭에 한 명령어를 수행하는데, 슈퍼 파이프라인 기법은 한 클럭내에 여러 명령어를 실행할 수 있다.
  1. 슈퍼 파이프라인 스칼라
  • 코어가 여러개인 슈퍼 파이프라인 기법
  1. VLIW (Very Long Instruction Word)
    : 소프트웨어적으로 병렬 처리를 하는 방법을 VLIW 라 한다.

0개의 댓글