[OS] 컴퓨터 구조/성능

EMMA·2022년 2월 8일
0
post-thumbnail
post-custom-banner

컴퓨터 구조와 성능 향상

[학습 내용]
컴퓨터의 기본 구성(주요 하드웨어, 폰노이만 구조)
CPU & 메모리의 역할과 구조 (레지스터/버스/부팅)
컴퓨터 성능 향상 (버퍼/스풀/캐시/저장장치 계층구조/인터럽트/메모리 매핑/병렬처리)

[주요 내용 확인]

(최대한 이해하기 위해 그렸는데 분명 오류가 있을 것이다...;; 고로 계속 업데이트될 수 있다. TO BE CONTINUED!!)

  • 하드웨어 구성
    • 필수장치와 주변장치로 분류되며, 필수 장치는 CPU와 메모리를 포함한다. 주변장치는 나머지 부품을 포함하고 입력장치/출력장치/저장장치로 분류된다.
    • 폰노이만 구조: 오늘날 대부분 컴퓨터가 따르는 구조, "모든 프로그램은 메모리에 올려야 실행할 수 있음." 응용프로그램뿐 아니라, 운영체제도 마찬가지.
      • 부팅: 운영체제를 메모리에 올려서 실행하는 것
      • 부트스트랩: 운영체제를 실행하기 위한 코드. 윈도우용 부트스트랩이 실행되면 윈도우 운영체제가 메모리에 올라옴
    • 주요 사양 용어:
      • 클록(CPU가 작업하는 박자를 만들고 틱을 생성해 CPU가 작업하도록 함)
      • 헤르츠(클록틱이 발생하는 단위)
  • CPU 구성
    • 산술논리 연산장치
    • 제어장치
    • 레지스터
      • 사용자 가시 레지스터: 데이터 레지스터, 주소 레지스터
      • 사용자 불가시 레지스터: 프로그램 카운터, 명령어 레지스터, 메모리 주소 레지스터, 메모리 버퍼 레지스터
  • 메모리 구성
    • RAM
      • 휘발성(메인메모리는 휘발성 메모리 사용): DRAM, SRAM, SDRAM
      • 비휘발성: 플래시메모리/FRAM/PRAM
    • ROM: 전력이 끊겨도 데이터를 보관할 수 있으나, 한번 저장하면 바꿀 수 없음
    • 메모리 보호를 위해, 경계 레지스터 & 한계 레지스터 사용 (사용자의 작업이 진행되는 동안, 작업의 메모리 주소가 범위를 벗어나는지 점검)
  • 버스: 데이터를 주고 받을 때 사용
    • FSB(front side bus): 메모리와 연결 (제어 버스/주소 버스/데이터 버스)
    • BSB(back side bus): CPU와 연결
    • 버스의 대역폭: 버스가 한번에 전달할 수 있는 데이터의 크기 (32bit, 64bit)
    • FSB와 BSB의 속도가 달라, 이를 줄이기 위한 다양한 기술이 적용됨
  • 컴퓨터 성능 향상을 위한 다양한 기술
    • 버퍼: 데이터를 일정량 이상 모은 후 전달, 속도 차이를 완화하는 것
    • 스풀: 응용 프로그램과 프린터 사이에서 속도 차이를 완화하는 것
    • 캐시: CPU가 사용할 것으로 예상되는 메모리의 데이터를 미리 갖고와 임시 저장하는 것 (cache hit ratio, 캐시 적중률이 높을 수록 성능이 좋음)
      • CPU가 미리 사용할 데이터: 현재 위치에서 가까운 데이터일수록 많이 사용될 확률이 높다 (지역성 이론)
      • 이 기준으로 보면 goto문은 바람직하지 않은 프로그래밍, 미리 갖고온 데이터가 무쓸모해질 수도 있어서.
    • 저장장치 계층 구조
      • 컴퓨터의 성능과 가격 사이의 타협점
      • 속도가 빠르고 값이 비싼 장치는 CPU 가까이 두고, 값이 싸고 용량이 큰 저장장치를 반대에 배치
  • 데이터 일관성 문제를 보완하기 위한 기술
    • 인터럽트: 입출력장치와 CPU를 독립적으로 운영하게 하고, 입출력 관지라는 CPU가 요청한 데이터를 메모리로 전송하면 CPU에 보내는 완료 신호
      • 직접 메모리 접근: direct memory access, 데이터를 메모리로 전송하기 위해 필요한 접근 권한
      • 메모리 매핑 기법: 메모리 공간 내에서 CPU가 직접 사용하는 공간, 입출력장치가 사용하는 공간 등으로 나눈 것
  • 병렬 처리: 여러 개 명령을 동시에 처리하는 방식 (멀티 스레드)
    • 파이프라인 기법: 명령어 처리를 n개 단계(깊이)로 나누어 저마다 독립적으로 쉬지않고 처리할 수 있도록 하는 것. 한 클록마다 하나의 명령어를 처리
    • 슈퍼스칼라 기법: 파이프라인을 처리하는 코어를 복수로 구성하는 것
    • 슈퍼파이프라인 기법: 한 클록마다 복수의 명령어를 처리하도록 한 것
    • 슈퍼파이프라인 슈퍼스칼라 기법: 기존 기법을 모두 합친 것
  • 파이프라인의 위험
    • 데이터 위험: 두 번째 명령어가 첫 번째 명령어의 데이터를 필요로 하는 경우
    • 제어 위험: 대표적으로 goto문으로, 명령어들을 동시에 처리하고 있는 와중에 갑자기 다른 문장으로 가버리면 현재 처리되고 있었던 명령어들이 쓸모 없어짐
    • 구조 위험: 다른 명령어가 같은 레지스터를 사용해야 해서 충돌 발생




출처: <쉽게 배우는 운영체제> , 조성호

profile
예비 개발자의 기술 블로그 | explore, explore and explore
post-custom-banner

0개의 댓글