본문 바로가기
CS 지식/Operating System

운영체제 - 1 컴퓨터 시스템 개요

by 눈오는1월 2024. 7. 8.
728x90

해당 정리는 youtube HPC Lab. KOREATECH의 OS 강의를 듣고 정리한 내용이다.

강의 자료는 https://hpclab.tistory.com/1?category=887083 해당 링크에 있다.

운영체제를 공부하기 전 운영체제가 관리하는 컴퓨터 하드웨어의 종류에 대해서 먼저 알아보자

컴퓨터 하드웨어는 프로세서, 메모리, 주변장치 이렇게 3가지로 분류할 수 있다.

프로세서

컴퓨터 두뇌라고 생각하면 된다.(중앙처리 장치)

컴퓨터의 모든 장치와 동작을 제어하고 연산을 수행한다.

프로세서(CPU)에는 제어 장치, 레지스터, 연산장치가 있고 레지스터에 대해서 알아보자

레지스터

프로세서가 사용할 때 데이터를 저장하는 데이터 저장공간이다. 프로세서 내에 있기 때문에 컴퓨터에서 가장 빠른 메모리이다.

이러한 레지스터를 분류하는 방식은 3가지가 존재한다.

  • 용도에 따른 분류|
    전용 레지스터, 범용 레지스터
  • 사용자가 정보 변경 가능 여부에 따른 분류
    사용자 가시 레지스터, 사용자 불 가시 레지스터
  • 저장하는 정보에 따른 분류
    데이터 레지스터, 주소 레지스터, 상태 레지스터

사용자가 정보 변경 가능 여부에 따른 분류만 알아보자면

사용자 가시 레지스터에서는 데이터 레지스터, 주소 레지스터가 있다.

  • 데이터 레지스터 : 함수 연산에 필요한 데이터를 저장하는 공간
  • 주소 레지스터 : 주소나 유효 주소를 계산하는데 필요한 주소의 일부분을 저장

사용자 불 가시 레지스터에는 프로그램 카운터, 명령어 레지스터, 누산기, 메모리 주소 레지스터, 메모리 버퍼 레지스터 가 존재한다.

  • 프로그램 카운터(pc) : 다음에 실행할 명령어의 주소를 보관하는 레지스터
  • 명령어 레지스터 : 현재 실행하는 명령어 보관 레지스터
  • 누산기 : 데이터를 일시적으로 저장하는 레지스터
  • 메모리 주소 레지스터 : 프로세서가 참조하려는 데이터의 주소를 명시하여 메모리에 접근하는 버퍼 레지스터
  • 메모리 버퍼 레지스터 : 프로세서가 메모리에서 읽거나 메모리에 저장할 데이터 자체를 보관하는 버퍼 레지스터

운영체제는 이러한 프로세서를 관리하는 역할을 가진다. (작업 할당, 관리, 제어)

메모리

컴퓨터에서 기억장치의 역할을 가진다 즉, 데이터를 저장하는 장치이다.

메모리의 종류로는 레지스터, 캐시, 메인 메모리, 보조기억장치가 있다.

위 그림에서와 같이 레지스터 > 캐시 > 메인 메모리 > 보조 기억장치 순서로 속도가 빠른 대신 가격이 높다.

대신 보조 기억장치 > 메인 메모리 > 캐시 > 레지스터 순으로 용량이 크다.

메인 메모리의 대표적인 예로는 DRAM이 있고 보조 기억 장치의 대표적인 예로는 HDD(하드 디스크)가 있다.

캐시는 CPU 내 저장공간을 의미, 레지스터는 위에서 알아봤기 때문에 생략한다.

메인 메모리(Main memory)

프로세서가 수행할 프로그램과 데이터를 저장하는 공간이다 (보통 DRAM을 많이쓴다.)

메인 메모리의 특징으로는 용량이 크고, 가격이 저렴한 특징이 존재한다.

메인 메모리를 사용하면 디스크 입출력 병목형상(I/O bottleneck) 해소한다.

디스크 입출력 병목현상이란, CPU 속도보다 Disk 속도가 느려서 발생하는 현상이다. 이를 중간에 메인메모리가 존재하면, CPU가 일을 하는 동안 메모리에 다음에 필요한 데이터를 메인메로리에 둬서 CPU가 다음에 일할 때 메인메모리에 가져가게끔 한다. 이를 통해 CPU 속도와 Disk 속도의 갭을 개선할 수 있다.

캐시

프로세서 내부에 있는 메모리를 의미한다( ex> L1, L2 캐시 등)

캐시는 코어를 기준으로 레지스터보다 조금 더 멀리 떨어져 있다.

캐시는 메인메모리 보다 속도가 빠른 대신 가격이 비싸다.

메인 메모리의 입출력 병목현상을 해소한다.

(앞서 언급드린 것처럼 디스크입출력 병목현상을 해결하기 위해 CPU와 DISK 사이에 메인 메모리를 뒀지만 그마저도 CPU 성능과 차이가 나기 때문에 캐시를 이용한다)

 

캐시는 일반적으로 HW으로 관리가 된다.

캐시의 동작 과정에 대해서 알아보자

프로세스에서 필요한 데이터를 캐시에서 확인한다. 이때 만약 캐시에 존재를 하게 되면 바로 캐시에 있는 값을 가져간다. 이렇게 필요한 데이터가 캐시에 존재하는 것을 캐시 히트 라고 한다.

만약 캐시에 찾아봤는데 필요한 데이터가 캐시에 없다면 메인메모리에서 필요한 데이터를 가져와서 캐시에 저장한 후 해당 데이터를 가져온다. 이렇게 필요한 데이터가 캐시에 없는 경우를 캐시 미스 라고 한다.

즉, 만약에 캐시에 필요한 데이터가 없을 경우 캐시를 사용하지 않는 것보다 성능적으로 손해가 발생한다.( 굳이 캐시에서 데이터를 찾는 과정이 생기기 때문이다)

캐시의 크기가 128KB인데 해당 크기를 가지고 캐시를 효과 낼 수 있을까 라는 생각을 가질 수 있는데, 캐시의 효과가 있는 이유를 지역성(Locality)으로 설명할 수 있다.

지역성(Locality)

지역성은 캐시가 Hit 할 가능성이 높을 수 있는 이유이다.

지역성은 공간적 지역성, 시간적 지역성이 존재한다.

  • 공간적 지역성 : 참조한 주소와 인접한 주소를 참조하는 특성(순차적 프로그래밍)
  • 시간적 지역성  : 한번 참조한 주소를 곧 다시 참조하는 특성(반복문)

** 공간적 지역성이 가능한 이유

캐시는 데이터를 읽어올 때 해당 부분만 읽어오는 것이 아니라, 근처 다른 부분을 들고 와서 캐시에 저장하게 된다. 이러한 다른 부분들까지 포함하여 캐시 라인이라고 한다. (캐시 라인을 통해 공간적 지역성이 가능하다)

지역성 예시 코드

for(int i = 0; i = n; i++) {
	for(int j = 0; j < m; j++) {
		x = x + (a[i][j]); // A
		x = x + (a[j][i]); // B
	}
}

위 코드에서 캐시 관점에서 바라봤을 때 A, B 중에 뭐가 더 빠를까??

정답은 A가 B보다 더 빠른 코드이다.

그러한 이유는 캐시 라인을 통해 근처의 값을 가져오게 된다.

B 같은 경우는 a [0][0] 이후에 a [1][0]을 가져오기 때문에 캐시 라인에 값이 없으므로 캐시 미스가 계속해서 반복을 하게 된다.

A 같은 경우는 a [0][0]을 가져올 때는 캐시미스가 발생하지만 그 후 a[0][1]을 가져올때는 캐시 히트가 발생을 하게 된다. 이후 a [0][2]도 캐시 히트가 발생하고 이러한 과정이 반복을 하게 된다.

보조 기억장치

보조기억장치의 특징으로는 프로세서가 직접적으로 접근하지 못한다.

이러한 보조장치의 예시로는 DISK, USB, CD/DVD SD 카드 등이 있다.

프로세서가 직접적으로 접근할 수 없는데, 프로그램 용량이 주 기억장치 용량보다 크더라도 컴퓨터는 문제없이 작동할 수 있는데, 가능한 이유는 하드디스크에서 일부 메모리처럼 사용이 가능하다(이러한 메모리를 가상 메모리 라고 한다)

운영체제는 위와 같은 메모리를 할당 및 관리를 한다.

주변 장치

주변장치는 프로세서와 메모리를 제외한 하드웨어들을 말한다.

키보드, 마우스 등 을 입력장치 라고 하고

모니터, 스피커, 프린터를 출력장치라고 한다.

앞서 봤던 보조기억장치를 저장장치 라고 한다.

운영체제는 주변장치를 장치드라이버 관리(주변 장치 사용을 위한 인터페이스 제공), 인터럽트 처리, 파일 및 디스크 관리를 한다.

System Bus(시스템 버스)

시스템 버스란 하드웨어들이 데이터 및 신호를 주고받는 물리적인 통로를 의미한다.

시스템 버스는 데이터 버스, 주소 버스, 제어 버스 3가지로 나뉜다

  • 데이터 버스 : 프로세서와 메인 메모리, 주변장치 사이에서 데이터를 전송
  • 주소 버스 : 프로세서가 시스템의 구성 요소를 식별하는 주소 정보를 전송
  • 제어 버스 : 프로세서가 시스템의 구성 요서를 제어하는 데 사용
728x90