[운영체제] 컴퓨터의 구조와 성능향상

aramjs·2023년 4월 22일

운영체제

목록 보기
3/6
  • 컴퓨터 하드웨어의 특성 :
  • cpu와 메모리의 구성 및 동작 방식 :
  • 성능을 향상하는 기술 :
  • 멀티프로세싱의 개념과 관련 기법 :

컴퓨터의 구성

하드웨어의 구성

  • CPU : 컴퓨터의 두뇌. 명령어를 해석하여 실행한다.

  • 메모리(주기억장치) : 바이트 단위로 분할되어 있고, 분할 공간마다 주소로 구분한다.

  • 입출력장치 : 키보드나 모니터이다. 컴퓨터에 입력하는 장치, 컴퓨터의 처리 결과를 출력하는 장치이다.

  • 저장장치(보조기억장치) :

    • 메인메모리보다 느리고 저렴하다.
    • 데이터를 영구 저장한다.
    • 종류
      • 자성 : 카세트 테이프, 플로피 디스크, 하드 디스크 등
      • 레이저 : cd, dvd, blue-ray disc 등
      • 메모리 : usb, sd카드, cf카드, ssd 등
  • 메인보드 : CPU, 메모리 등 여러 부품을 연결하는 보드이다.

폰노이만 구조

  • CPU, 메모리, 입출력장치, 저장장치가 버스로 연결되어있는 구조이다.

  • 저장장치에서 실행 불가능하고, 메모리에 올려야만 실행된다.
    ㄴ메인메모리 관리가 중요하다.

요리사 모형

  • 요리사 : CPU
  • 도마 : 주기억장치
  • 창고 : 보조기억장치

    도마에 올려야만 실행이 가능하다.

기초 용어

  • 크기 단위
    1Byte == 8bit

    단위2진 크기10진 크기Byte
    B111B
    KB2^1010^31000B
    MB2^2010^61000,000B
    GB2^3010^91000,000,000B
    TB2^4010^121000,000,000,000B
    PB2^5010^151000,000,000,000,000B

클록과 헤르츠

  • clock : 컴퓨터에서 단위시간이다. clock에 의해 일정 간격으로 만들어지는 tick을 pulse/clock tick 이라고 한다.
    • 클록이 일정 간격으로 펄스를 맞추면 거기에 맞춰 모든 구성 부품들이 진행된다.
    • CPU는 클록 한 번에 한 번의 덧셈, 클록이 발생할 때마다 데이터를 저장.
  • Hertz (헤르츠) : 1초동안 발생한 펄스의 횟수이다.
    • CPU 성능을 나타내는 단위이다.

버스

  • 시스템 버스 : 주기억장치와 주변장치를 연결하는 버스이다.
    • FSB (Front-Side-Bus)
    • 메인보드의 동작 속도이다.
    • 제일 느린 장치의 속도에 맞춘다.

  • CPU 버스 : CPU 내부의 버스이다.
    • BSB (Back-Side-Bus)
    • CPU 클록과 속도가 같다.
    • FSB 보다 속도가 빠르다.
  • 프로그래밍과 언어

    • 어셈블리어 : 기계어를 문자(사람이 읽을 수 있는) 형태로 바꾼 언어이다.

    • 저급언어 : 어셈블리어, 기계어는 아니지만 사람이 사용하기 어려운 언어이다.

    • 고급언어 : if, for처럼 사람이 이해하기 쉬운 언어이다.

    • 컴파일 : 고급언어를 기계어로 변환하는 과정이다.
      실행파일을 생성한다.

    • 인터프리터 : 한 줄씩 변환하는 방법이다.
      실행파일을 만들지 않는다. 코드상 오류 파악이 어렵다.

자료구조

  • que : Fist In, First Out
  • stack : First In, Last Out
  • 배열 : 메모리를 나열 형식으로 연속저장한다.
    삽입/삭제가 어렵다 -> 공간 낭비
    크기가 정해진 메모리에서 사용하는 것이 좋다.
  • 연결 리스트 : 데이터를 포인터를 이용해 연결한다.
    삽입/삭제가 빈번할 때 사용하는 것이 좋다.
    큐에서도 편리하다.

CPU

  • ALU (산술논리 연산장치 Arithmetic and Logic Unit) : CPU의 핵심이다.
    덧셈, 뺄셈같은 산술 연산과 AND, OR같은 논리 연산을 수행한다.
  • 제어장치 (control unit) : 작업을 지시하는 부분이다.
  • 레지스터 (register) : 작업 데이터를 임시 보관한다. (CPU 내부) 세부내용 참고

덧셈 처리 과정

  • 제어장치가 주기억장치로 데이터를 로드한다.

  • 주기억장치 2,3 -> 레지스터 2,3
    로드한 데이터들을 복사한다.

  • 레지스터 2,3 -> ALU 2+3

  • ALU 5 -> 레지스터 5

  • 레지스터 5 -> 주기억장치 5

  • 제어장치가 CPU내 데이터 흐름을 관리한다.

주요 레지스터의 특징

  • 일반 레지스터 : 사람이 접근할 수 있다.

    레지스터특징
    데이터 레지스터 (DR)CPU가 명령을 처리하는 데 필요한 데이터를 임시로 저장하는 범용 레지스터이다.
    주소 레지스터 (AR)데이터 / 명령어가 저장된 주기억장치의 주소를 저장한다.
  • 특수 레지스터 : 주로 하드웨어에서 관리한다.

    레지스터특징
    프로그램 카운터 (PC)다음에 실행할 명령어의 위치 (코드의 행 번호)를 저장한다.
    명령어 레지스터 (IR)현재 실행중인 명령어를 저장한다.
    메모리 주소 레지스터 (MAR)메모리 관리자가 다음에 접근해야 할 메모리의 주소를 저장한다.
    메모리 버퍼 레지스터 (MBR)메모리에서 가져온 데이터를 임시 저장한다.
    프로그램 상태 레지스터 (PSR)연산 결과를 저장한다.

버스의 종류

버스 : FSB (Front 시스템 버스) / BSB (Back CPU 버스)
장치들을 연결한다.

  • 제어 버스 : 메모리와 주변장치에 제어 신호를 보낸다.

    • 주변 장치에서도 작업이 완료되거나 오류가 발생하면 제어 신호를 보내기 때문에 양방향이다.
    • 제어장치와 연결되어있다.
  • 주소 버스 : 데이터를 읽거나 쓸 때 메모리나 주변장치에 위치정보를 보낸다.

    • 단방향이다.
    • 메모리 주소 레지스터와 연결되어있다.
  • 데이터 버스 : 메모리 버퍼 레지스터와 연결되어있다.

    • 양방향이다.


주기억장치 (메모리)

종류

  • 휘발성 메모리

    • DRAM (Dynamic RAM) : 데이터가 일정 시간이 지나면 사라진다 -> 주기적으로 재실행해야한다.

    • SRAM (Static RAM) : 전원이 공급될 때는 데이터가 사라지지 않는다.

    • SDRAM (Synchronous Dynamic RAM) : 펄스가 발생할 때마다 데이터를 저장한다.

      • 다른 RAM과 다르게 시스템 클록에 의해 만들어지는 tick을 사용하기 때문에 빠르다.
      • CPU 클록 펄스에 동기화 시키므로 Synchronous이다.
      • DRAM을 발전시킨 것이다.
  • 비휘발성 메모리

    • 플래시 메모리 : USB처럼 전력이 없어도 저장한다.

    • SSD : 속도가 빠르고, 저전력이고, 내구성이 높고, 고가이다.

    • ROM (Read Only Memory)

      • Mask ROM : 데이터를 지우거나 쓸 수 없다.
      • PROM (Programmable ROM) : 데이터를 한 번만 저장할 수 있다.
      • EPROM (Erasable Programmable ROM) : 데이터를 여러번 쓰고 지울 수 있다.

메모리 보호

시분할 기법으로 여러 프로그램을 동시에 실행하므로 메모리 보호가 매우 중요하다. 프로세스가 CPU를 차지하여 작업하면 운영체제는 CPU를 사용할 수 없는데, 운영체제가 메모리를 관리하므로 위험하다. 이때 메모리를 보호하려면 하드웨어의 도움이 필요하다.

  • 경계 레지스터 : 메모리의 시작 주소를 저장한다.
  • 한계 레지스터 : 시작 주소와 마지막 주소까지의 차이 (현재 진행중인 메모리의 크기)를 저장한다.

두 레지스터의 범위를 벗어나는지 하드웨어가 점검하면서 메모리를 보호한다.
다른 메모리는 건드리지 못한다.

부팅

운영체제를 RAM에 올린다. 전원을 끄면 날아가기 때문에 켤 때마다 다시 올려야 한다. 메인 메모리가 비휘발성이면 부팅이 필요없다.

부팅 과정

  • ROM이 하드웨어를 점검한다.
  • ROM이 메모리에 부트스트랩 코드를 올린다.
  • 부트스트랩 코드가 운영체제 프로세스를 실행한다.

ROM은 비휘발성이다. 어디서 가져와서 어디에 올리라는 코드가 있다.


컴퓨터의 성능향상 기술

버퍼

속도 차이가 있는 장치 간의 속도 차이를 완화한다.
바구니를 이용하면 도마를 낭비하지 않는 개념이다.

스풀

CPU와 입출력장치가 독립적으로 동작하도록 하는 버퍼이다.
입출력장치가 출력하는 도중에 프로그램이 끼어들 수 없게 독립적으로 동작하게 한다.

캐시

CPU의 메모리이다. 자주 사용하는 것들을 모아놓는다. 안 쓰면 버린다. 버퍼의 일종이다.

  • 메모리와 CPU 간의 속도 차이(BSB-FSB)를 줄이기 위해 메모리의 데이터를 미리 가져온다.

  • 앞으로 자주 사용할 것 같은 데이터를 미리 갖다놓는다.

  • CPU는 RAM접근 전에 캐시를 먼저 확인한다.

캐시의 구조

cache hit : 원하는 데이터가 캐시에 있을 때
cache miss : 원하는 데이터가 캐시에 없을 때 -> 메모리에서 찾는다.
cache hit ratio : cache hit 비율로, 일반적으로 90%이다.

  • 캐시와 메모리에는 중복되는 데이터가 있다.

  • 캐시 히트면 바로 쓰고 미스면 메모리에서 사용한다.

  • 속도에 차이가 있다.

  • 캐시가 꽉차면 사용할 확률이 낮은 것을 버린다.

  • 즉시 쓰기 : 캐시에 있는 데이터가 변경 될 경우, 즉시 메모리에도 반영한다.
    느리다. 정전에도 데이터를 잃지 않는다.

  • 지연 쓰기 : 캐시 데이터가 변경될 경우, 모아서 주기적으로 반영한다.
    카피백이라고도 한다. 빠르다. 하지만 메모리와 캐시 불일치가 발생할 수 있다.

  • L1 캐시와 L2 캐시 :

    • L1 특수 캐시 : 용량이 적고 hit이 빠르다. 미스가 많다.
      명령어 캐시 - CPU의 명령어 레지스터와 연결 / 데이터 캐시- CPU의 데이터 레지스터와 연결
      CPU 레지스터에 직접 연결되므로 L1이다.

    • L2 일반 캐시 : 용량이 많고 hit이 느리다. 미스가 적다.
      메모리와 연결되기 때문에 L2이다.

저장장치의 계층 구조

속도가 빠르고 비싼 장치를 CPU 가까이에 두고, 저렴하고 용량이 큰 장치를 멀리 둔다. -> CPU가 작업을 빨리 진행할 수 있다.

  • 레지스터 - 속도 빠르다.
  • 캐시
  • 메모리
  • 저장장치 - 저렴하다.

인터럽트

  • 폴링 방식 : CPU가 직접 입출력장치에서 데이터를 가져온다.
    계속 입출력 완료되었는지 확인해야 하기 때문에 비효율적이다.
    요리사가 직접 창고에 가는 것과 같다.

  • 인터럽트 방식 : 입출력 관리자가 입출력을 관리한다.
    CPU가 입출력 확인하지 않아도 되므로 작업 효율이 좋다.

  • 인터럽트 : 입출력 관리자가 CPU에게 보내는 신호이다.

    • 인터럽트 번호 : 어떤 장치의 작업이 끝났는지 번호로 알려준다.

    • 인터럽트 벡터 : 인터럽트를 하나의 배열로 만든 것이다.
      재료소진 등을 벡터에 매핑하면 CPU가 일일이 확인하지 않아도 된다.

    • 동작 과정
      인터럽트 발생 -> CPU 실행 중단 -> 확인 -> 해결 -> CPU 실행
      CPU가 인터럽트 관리자에게 입출력을 요청한다.
      입출력 관리자가 메모리에게 데이터를 전달한다.
      메모리는 CPU에게 메모리를 전달한다.

직접 메모리 접근

  • DMA : Direct Memory Access
    • 원래 모든 실행 시 CPU를 거쳐야 하지만 입출력 관리자가 CPU의 허락 없이 메모리에 접근할 수 있다.
    • 직접 메모리 접근 권한이 있으면 입출력 관리자가 메모리에 접근할 수 있다.

메모리 맵 입출력

  • 메모리의 일정 공간을 입출력에 할당하는 방법이다.

메모리의 주소공간에 입출력장치의 주소를 넣어놓는다.
모든 입출력은 메모리를 거친다.

사이클 훔치기

  • CPU와 직접 메모리 접근이 동시에 접근하면 CPU가 양보한다.

입출력장치의 속도가 느리기 때문에 양보한다.


멀티프로세싱

멀티프로세서

  • 주방이 여러 개
    • CPU가 여러 개 있고 시스템 버스를 통해 공유한다.

멀티코어

  • 1주방 여러 주방장
    • 1칩에 여러 개 코어 (CPU의 핵심 기능) 가 있다.
    • 듀얼:2개 쿼드:4개

명령어 병렬 처리

  • 1 코어에서 여러 개의 명령어를 동시에 처리한다.

CPU 멀티스레드

  • 여러 개의 스레드를 동시에 처리한다.

    • 스레드 : CPU가 처리할 수 있는 작업의 단위이다.
    • 현대에는 1칩에 멀티코어와 병렬 처리를 함께 구현한다.
    • 1 코어가 2개의 논리코어이다 -> 코어 4개면 논리코어 8개

통용 법칙

  • 무어의 법칙 : CPU속도가 24개월마다 2배 빨라진다.
    요즘엔 CPU속도를 올리기보다 1칩에 여러 코어(멀티코어)를 넣기 때문에 깨졌다.

  • 암달의 법칙 : 주변장치 향상 없이 CPU속도를 2배 올리면 컴퓨터의 성능이 2배 빨라지지 않는다.
    성능이 빨라도 메모리(도마)가 그대로면 성능 향상을 체감할 수 없다.

profile
안녕하세요.

0개의 댓글