computer science

[OS] 운영체제 Computer System Overview

yjs3819 2021. 7. 14. 01:18
728x90

들어가기에 앞서

우리는 컴퓨터를 통해서 웹 서핑도하고, 게임도 하고, 카톡도 할수있다.
컴퓨터로 이러한 서비스들을 이용할수 있는 이유는 뭘까?
키보드로 채팅을하고, 마우스로 클릭을 하며 내가 명령한 명령들이 컴퓨터 내부에있는 하드웨어들에 의해 저장이되고, 실행이된다.
바로 이러한 컴퓨터 하드웨어 장치들이 존재하기 때문에 우리는 컴퓨터로 여러 서비스를 이용할수 있다.

그렇다고 이러한 하드웨어 장치들만 있다해서 컴퓨터에서 여러 서비스를 이용할수 있는건 아니다.
우리는 하드웨어 장치를 효율적으로 사용하게 도와주는 OS(Operating System)가 있기에 다양한 서비스를 이용할수 있다.

OS(Operating System)

  • 컴퓨터 하드웨어를 효율적으로 관리하는 것
  • 왜? 컴퓨터 하드웨어 자원을 효율적으로 관리해서 사용자나, 응용프로그램에게 서비스를 제공하기 위해서
  • 정리하면 컴퓨터 시스템 자원(하드웨어 및 소프트웨어)들을 효율적으로 관리해서 사용자에게 서비스를 제공하는 소프트웨어를 운영체제(OS)라고 한다.

컴퓨터 하드웨어

운영체제가 컴퓨터 하드웨어 자원들을 효율적으로 관리한다는데 컴퓨터에는 어떠한 하드웨어 장치들이 존재할까?
크게 세가지로 나눌수있다.

  • 프로세서(Processor)
    • 계산하는데 사용되는 장치
    • CPU, GPU, ..
  • 메모리(Memory)
    • 저장할때 사용되는 장치
    • 주 기억장치, 보조 기억장치
  • 주변장치
    • 키보드, 마우스, 모니터, 프린터기, 스피커, ...

프로세서

컴퓨터의 두뇌로써 계산하는데 사용되는 하드웨어 장치이다.
컴퓨터의 모든 장치의 동작을 제어한다.이러한 프로세서 내부에는 레지스터(Register)라는 메모리가 존재한다.
즉, 여러가지 계산을 하거나, 컴퓨터 하드웨어들의 동작을 제어한다.

레지스터

  • 프로세서 내부에 존재하는 메모리
    • 프로세서가 사용할 데이터를 저장하는 역할을 한다.
    • 컴퓨터에서 가장 빠른 메모리이다.
  • 레지스터의 종류
    • 용도에 따른 분류
      • 전용 레지스터(무언가의 전용인 프로세서 내부의 메모리)
      • 범용 레지스터(범용으로 사용되는 프로세서 내부의 메모리)
    • 사용자가 정보를 변경 가능한지 여부에 따른 분류
      • 사용자 가시 레지스터(변경 가능)
      • 사용자 불가시 레지스터(변경 불가능)
    • 저장하는 정보의 종류에 따른 분류
      • 데이터 레지스터(데이터 저장)
      • 주소 레지스터(주소 저장)
      • 상태 레지스터(상태 저장)

운영체제와 프로세서

운영체제는 컴퓨터 하드웨어(자원, Resource)를 효율적으로 관리하여 사용자에게 서비스를 제공하는 소프트웨어라는데, 프로세서 하드웨어와는 어떠한관계가 있을까?

  • 프로세서에게 처리할 작업 할당 및 관리하는 역할을 한다.
  • 프로그램들이 프로세서를 사용하는데 제어를 하는 역할을한다.

메모리

프로그램이나 사용자데이터를 저장하는 역할을 하는 컴퓨터 하드웨어(시스템 자원)이다.
메모리는 크게 네가지로 분류할수있다.

  1. 레지스터
  2. 캐시
  3. 메인 메모리(주 기억장치)
  4. 보조기억장치(주변장치)

1번일수록 속도가 빠르며 가격이 비싸다. 그러므로 그만큼 용량은 적고, 4번일수록 반대로 속도가 느리며 가격이 싸다. 그러므로 용량을 크게할수 있다.

그렇다면 레지스터만 이용하면 되지 왜 여러개의 메모리를 사용하는걸까?

한정된 자원과 비싼 가격등의 제한으로 인해서 최소의 비용으로 최대의 효율을 내는 다양한 메모리를 사용하는 것이다.

주기억장치(main memory)

  • 프로세서(CPU)가 수행할 프로그램과 데이터를 저장하는 역할을 한다.
  • 프로세서가 사용하는 메모리중에는 가장 속도가 느리고 용량이 크다. 즉 가격이 (레지스터, 캐시, 메인메모리) 중에서 가장 저렴하다.
  • 디스크의 입출력 병목현상을 해소해준다.데이터를 저장할 주변장치인 디스크와 cpu는 컴퓨터 사용초기에는 성능 차이가 나지 않았으나 시간이 지남에따라서 cpu의 성능이 훨씬 좋아지고 디스크의 성능은 그에 미치지 못해서 둘간의 간극이 생겼다. 이러한 간극을 줄이기 위해서 중간에 메인메모리(주기억장치)를 사용한다. 즉, 디스크만 사용했을 시에 cpu는 속도가 빠른 반면 디스크는 속도가 느리기 때문에 디스크의 입출력 병목현상이 생길수있는데 이러한 현상을 중간의 메인메모리가 메꿔주기에 속도를 더 높일수 있는 것이다.

캐시(Cache)

  • 프로세서 내부에 있는 메모리로 속도가 메인메모리보단 빠르다. 그러므로 메인메모리보단 가격이 비싸다.
  • 메인메모리는 디스크의 입출력 병목현상을 해소하는 역할을 하지만 캐시는 메인메모리의 입출력 병목현상을 해소하는 역할을 한다.
  • 메인메모리가 존재해도 cpu와의 속도의 차이는 여전히 크다. 그렇기에 메인메모리가 디스크와 cpu의 간극을 줄이기 위한 것과 같이 캐시도 메인메모리와 cpu의 간극을 줄이는 역할을 한다. 그로인해서 둘간의 속도차이를 줄여 메인메모리에서 입출력이 병목되는 현상을 해소할수 있는 것이다.
  • 캐시는 128KB정도로 저장할수있는 데이터의 크기가 매우적다. 그럼에도 캐시는 도움이 될까?

캐시의 동작

cpu(프로세서)는 어떠한 데이터가 필요한 상황이다.
이때의 동작을 알아보자.

<캐시에 데이터가 존재하지 않을 때>

  1. 프로세서는 캐시에 해당 데이터가 존재하는지 확인한다.
  2. 존재하지 않는걸 확인하고 메인메모리에 데이터가 있는지 확인한다.(필요한 데이터가 캐시에 없는경우 : 캐시 미스(Cache miss))
  3. 메인메모리에서 데이터를 가져와 캐시에 저장한다.
  4. 프로세서가 데이터를 사용한다.

<캐시에 데이터가 존재할 때>

  1. 프로세서는 캐시에 해당 데이터가 존재하는지 확인한다.
  2. 캐시에 존재하므로 프로세서는 캐시에 저장된 데이터를 사용한다.(필요한 데이터가 캐시에 존재하는 경우 : 캐시 히트(Cache hit))

캐시 히트일 경우 프로세서가 데이터에 접근하는데 시간이 매우 짧게 소요되므로 이러한 상황에서 도움이된다.
그리고 이러한 캐시의 효율성을 뒷받침할수 있는 특징이 존재하는데 그것은 지역성이다.

지역성

  • 공간적 지역성

참조한 주소와 인접한 주소를 참조하는 특성이다.
한번 참조한 주소와 인접한 주소를 참조할 가능성이 큰 특징을 의미한다.
for 문으로 1차원 배열의 모든 원소에 접근할 때의 상황을 생각하면 0번째 index의 원소를 접근한뒤 바로 옆에있는 인접한 주소의 원소에 접근하는것을 알수있다.

  • 시간적 지역성

참조한 주소를 또 다시 참조하는 특성이다.
반복문으로 같은 주소를 참조하는 상황을 생각하면 알수있다.

즉 이 지역성이라는 특징은 캐시에 프로세서가 원하는 데이터가 존재하는 캐시 적중률(Cache hit ratio)과 밀접한 관계가 있다.

지역성과 캐시의 동작을 생각하여 코드를 짜면 훨씬더 높은 효율을 낼 수 있다.

for(int i = 0; i < n; i++){
    for(int j = 0; j < m; j++){
        System.out.println(arr[i][j]); // --- 1
        System.out.println(arr[j][i]); // --- 2
    }
}

1번의 코드와 2번의 코드중 지역성과 캐시의 동작을 생각하면 1번 코드가 더 높은 효율을 뽑아낼수 있다.
캐시에 저장할 데이터는 블록으로 저장되는데 (라인이라고도 한다.) 인접한 주소의 블록이 캐시에 저장이된다.
그렇기에 1번의 코드는 계속 인접한 참조 주소의 데이터에 접근하는 코드이므로 캐시 히트 상황이 나기 때문에 성능이 좋다.
반면 2번의 코드는 캐시에 없는 데이터에 접근하기에 계속해서 캐시 미스가 나고 계속해서 캐시로 메인메모리의 데이터를 저장하는 동작만 하기에 바로 프로세서가 메인메모리의 데이터에 접근하는것만 못하다.

캐시와 지역성만으로 프로그램의 효율을 높일수 있다.

보조기억 장치

마지막 메모리로 보조기억장치가 존재한다.
보조기억장치는 프로그램과 데이터를 저장하는 역할을 하는 하드웨어이다.
레지스터, 캐시, 메인메모리와 다르게 프로세서가 직접 접근할수 없는 주변장치이다.
속도가 느리기 때문에 가격이 저렴하고 그렇기에 용량이 큰 특징을 가졌다.
프로세서는 주기억장치(메인메모리)를 거쳐서 보조기억장치에 접근한다. 즉, 보조기억장치의 데이터를 메인메모리로 옮겨서 사용한다.
그렇다면 메인메모리보다 보조기억장치의 데이터의 크기가 클때는?

가상 메모리를 이용한다.(Virtual Memory)

운영체제와 메모리

운영체제는 어떤식으로 메모리를 관리할까?

  • OS는 메모리를 할당및 관리하는역할을 한다.
  • 가상메모리를 관리한다.

시스템 버스(System Bus)

  • 하드웨어들이 서로 통신을 할수있는 물리적인 통로이다.
  • 역할에 따라 데이터버스, 주소버스, 제어버스로 나눌수있다.

주변 장치

  • 입력장치
    • 키보드, 마우스, ..
  • 출력장치
    • 모니터, 프린터기, ..
  • 저장장치
    • 보조기억장치(하드디스크, USB, CD, ..)

운영체제와 주변장치

운영체제는 주변장치에 대한 어떠한 관리를 할까?

  • 장치 드라이버 관리(드라이버란 새로운 주변장치를 사용할수 있도록 OS에게 Interface를 제공하는 것을 말한다. 그래서 로지텍 마우스를 새롭게 연결하면 드라이버설치부터 하는 이유다.)
  • 주변장치의 요청인 인터럽트를 처리한다.
  • 파일이나 디스크를 관리한다.

정리

  • 운영체제란 컴퓨터 하드웨어 자원들을 효율적으로 관리하여 사용자에게 서비스를 제공하는 소프트웨어이다.
  • 컴퓨터 하드웨어에는 크게 계산을 하는 프로세서(CPU), 저장을 하는 메모리(레지스터, 캐시, 메인메모리, 보조기억장치), 주변장치가 존재하고 각 하드웨어(자원)들은 운영체제라는 소프트웨어에 의해서 효율적으로 관리될수 있는 사실을 알게되었다.

김덕수교수님의 운영체제 유튜브 강의 - Lecture1 Computer System Overview

728x90