취미가 좋다

운영체제 1 : Computer System Overview 본문

Computer Science/운영체제

운영체제 1 : Computer System Overview

benlee73 2021. 1. 4. 17:44

우리가 게임을 하기 위해 필요한 것은 무엇일까?

 

 

일단 컴퓨터가 필요할 것이다.

그 안에는 CPU + GPU + MEMORY + SSD/HDD + LAN 등 다양한 하드웨어들이 있다.

 

이들을 효율적으로 활용할 수 있도록 도와주는 것이 운영체제 (Operating System)이다.

 

운영체제란?

컴퓨터 시스템 자원(HW)를 효율적으로 관리하여, 사용자에게 서비스를 제공하는 소프트웨어이다.

 

 

 

운영체제가 관리할 컴퓨터 하드웨어는 크게 3가지가 있다.

 

1. 프로세서

  • 연산하는 장치이다. CPU, GPU 등이 있다.
  • 응용 전용 처리 장치

2. 메모리

  • DRAM, DISK과 같이 저장하는 장치이다.
  • 주기억장치
  • 보조기억장치

3. 주변장치

  • 키보드/마우스와 같은 입력 장치
  • 모티너, 프린터와 같은 출력 장치
  • 네트워크 모뎀 등

 


 

위의 장치들을 좀 더 자세히 하나씩 살펴보자.

 

프로세서 (Processor)

: 컴퓨터의 두뇌로 중앙처리장치라고 한다.

  • 연산 수행
  • 컴퓨터의 모든 장치의 동작 제어

CPU 안에는 제어장치, 연산장치(ALU), 레지스터가 있다.


레지스터 (Register)

: 프로세서 내부에 있는 메모리이다.

  • 프로세서가 사용할 데이터 저장
  • 컴퓨터에서 가장 빠른 메모리

 

레지스터의 종류

  • 용도에 다른 분류
    • 전용 레지스터, 범용 레지스터
  • 사용자가 정보 변경 가능 여부에 따른 분류
    • 사용자 가시 레지스터
      • 데이터 레지스터 DR
      • 주소 레지스터 AR
    • 사용자 불가시 레지스터
      • 프로그램 카운터 PC
        • 다음에 실행할 명령어의 주소를 보관하는 레지스터
      • 명령어 레지스터 IR
        • 현재 실행하는 명령어를 보관하는 레지스터
      • 누산기 ACC
        • 계산하는 과정에서 데이터를 일시적으로 저장하는 레지스터
      • 메모리 주소 레지스터
      • 메모리 버퍼 레지스터
  • 저장하는 정보의 종류에 따른 분류
    • 데이터 레지스터
    • 주소 레지스터
    • 상태 레지스터

 

그래서 프로세서는 연상장치(ALU)와 다양한 레지스터를 통해 연산을 수행한다.

 


 

프로세서와 운영체제

운영체제에게는 프로세서를 관리하는 역할이 있다.

 

  1. 프로세서에게 처리할 작업을 할당
    • 프로세스 생성 및 관리
  2. 프로그램의 프로세서 사용 제어
    • 프로그램의 프로세서 사용 시간 관리
    • 복수 프로그램간 사용 시간 조율 등

 


메모리 (Memory)

: 데이터를 저장하는 장치 (기억장치)

  • 프로그램(OS, 사용자 SW 등), 사용자 데이터 등을 저장한다.

메모리의 종류

  1. 레지스터
  2. 캐시
    • CPU 안에 있고, 레지스터보다는 코어에서 멀리 떨어져 있다.
  3. 주기억장치
    • DRAM
  4. 보조기억장치
    • HDD

 

1->4로 갈수록 속도는 느려지고, 가격은 저렴하고, 용량은 커진다.

 

1~3은 프로레서가 프로그램과 데이터에 직접 접근할 수 있지만. 보조기억장치는 프로그램과 데이터를 메인 메모리에 옮겨야 실행할 수 있다.

 

 

주기억장치 (Main memory)

  • 프로세서가 수행할 프로그램과 데이터를 저장한다.
  • DRAM을 주로 사용하고, 프로세서가 직접 접근할 수 있는 메모리 중 가장 용량이 크고 가격이 저렴하다.
  • 프로세서와 메모리(보조기억장치)간 너무 큰 속도차이를 해소하고자 그 중간다리 역할을 수행한다.
    • 다른 말로, 디스크 입출력 병목현상(I/O bottleneck)을 해소한다고 한다.

캐시 (Cache)

  • 프로세서 내부에 있는 메모리로 L1, L2 캐시 등이 있다.
  • 속도가 빠르고 가격이 비싸다.
  • 레지스터보다 코어에서 조금 더 멀리 있다.
  • 프로세서와 메인 메모리간에도 커진 속도차이를 해소하는 중간 다리 역할을 수행한다.
    • 메인 메모리의 입출력 병목현상 해소


캐시의 동작

캐시는 보통 사용자가 직접 관리하지 않고, 대부분 CPU가 알아서 관리한다.

 

동작 순서는 다음과 같다.

 

1. 먼저 프로세서가 필요한 데이터를 먼저 캐시에 있는지 확인한다.

 

2. 만약 데이터가 없다면 캐시가 메인 메모리에서 데이터를 가지고 온다.

  • Cache는 메인 메모리에서 그 데이터 주변의 데이터를 가져온다.
  • 이 때 가져오는 데이터의 크기를 cache line 혹은 block 이라고 한다.

3. 가져온 데이터를 프로세서에게 전달한다.

 

 

필요한 데이터가 캐시에 있을 때를 캐시 히트 (Cache hit) 라고 한다.

메인 메모리에 접근하여 데이터를 찾아야 하는 시간을 절약할 수 있다.

 

 

필요한 데이터가 없을 때를 캐시 미스 (Cache miss) 라고 한다.

프로세서->캐시->메인 메모리->캐시->프로세서의 과정을 거쳐야 한다.

 

 

 

정말 프로세서에서 메인메모리로 바로 가지 않고 캐시를 거치는 것이 효율적일까?

 

 

지역성 (Locality)

  • 공간적 지역성 (Spatial locality)
    • 우리가 어떤 주소를 한 번 참조하면, 그 이후에 그 주소 근처를 참조할 가능성이 높다는 의미이다.
  • 시간적 지역성 (Temporal locality)
    • 어떤 메모리를 t1에 참조했다면, 얼마 뒤인 t2에 다시 참조할 가능성이 높다는 의미이다.

 

이 지역성 때문에 캐시 적중률(cache hit ratio)이 매우 높다.

 

 

 

캐시는 HW가 관리하는데 우리는 무엇에 신경써야 할까?

 

 

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

 

위의 코드에서 A와 B는 열과 행 중 어떤 것들을 먼저 접근하는 지의 차이가 있다.

 

cache는 block 크기 만큼 데이터를 가져오기 때문에, a[ 0 ][ 0 ] 을 읽는다면 a[ 0 ][ k ] 까지의 데이터를 모두 가져온다.

 

a[ i ][ j ] 를 순차적으로 접근할 때는 cache hit이 자주 일어나기 때문에 메인 메모리까지 접근하는 횟수를 줄일 수 있다.

 

반면, a[ j ][ i ] 는 가져오려는 데이터 마다 캐시에 없으므로 계속 cache miss가 일어나고 매우 비효율적으로 동작한다.

 

따라서 Cache에 대한 이해도가 있으면, 더 빠르고 효율적으로 동작하는 프로그램을 작성할 수 있다.

 


보조기억장치 (Auxiliary memory / secondary memory / storage)

  • 프로그램과 데이터를 저장한다.
  • 프로세서가 직접 접근할 수 없으므로 주변 장치로 분류가 된다.
    • 주기억장치를 거쳐서 접근해야 한다.
    • 프로그램이나 데이터가 주기억장치보다 큰 경우 가상 메모리 (Virtual Memory) 라는 개념을 사용한다.
  • 용량이 크고 가격이 저렴하다.

 

 

 

메모리와 운영체제

운영체제에게는 메모리를 관리하는 역할도 있다.

 

  1. 프로그램 요청에 따라 메모리를 어떻게 할당하고 회수하는 지 관리
  2. 가상 메모리 관리

 


 

시스템 버스 (System Bus)

: 많은 하드웨어 장치(리소스)들이 데이터 및 신호를 주고 받기 위해 통신을 하는 물리적인 통로

 

  • 데이터 버스
  • 주소 버스
  • 제어 버스

 

시스템 동작에 따른 버스의 사용

  1. PC에 저장된 주소를 프로세서 내부의 주소 버스를 이용하여 메모리에 전달한다.
  2. 메모리에 저장된 주소에 해당하는 메모리 위치에서 명령어를 꺼내어 MBR (메모리 버퍼 레지스터)에 저장한다. 이 때 프로세서의 제어장치는 메모리에 저장된 내용을 읽도록 제어 신호를 발생시켜 제어 버스로 보낸다.
  3. MBR에 저장된 내용을 데이터 버스를 이용하여 IR에 전달한다.

 


 

주변 장치

: 프로세서와 메모리를 제외한 하드웨어

 

  • 입력장치 (키보드, 마우스 등)
  • 출력장치 (모니터, 스피커 등)
  • 저장장치 (보조기억장치 등)

주변장치와 운영체제

  1. 장치드라이버 관리
    • 어떤 하드웨어를 쉽게 사용할 수 있도록 제공하는 인터페이스
    • OS는 드라이버라는 인터페이스로 하드웨어를 제어하기 때문에, 이 드라이버들을 관리한다.
  2. 인터럽트 (Interrupt) 처리
  3. 파일 및 디스크 관리

본 글은 HPC Lab. KOREAHECH YOUTUBE 채널의 김덕수 교수님 강의를 보고 작성되었습니다.

 

[Course] Operating System (CPA310) - 운영체제 강의

o Operating System (운영체제), CPA310, KOREATECH o Instructor: Duksu Kim (김덕수) o Course homepage: https://sites.google.com/view/hpclab/courses/operating-system 운...

www.youtube.com

 

Comments