Shine's dev log

운영체제란? 본문

운영체제

운영체제란?

dong1 2020. 3. 31. 00:48

컴퓨터를 사용할 때, 가장 많이 쓰는 말 중 하나가 윈도우이다.

 

"윈도우에서 자꾸 업데이트 하래..", "윈도우 10이 나왔더라" 위와 같이 거의 윈도우 = 컴퓨터 의 개념으로 쓰이기도 한다.

 

이처럼 잘 알고 있는 윈도우는 운영체제의 일종이다. 윈도우 외에도 리눅스, 맥 등 여러가지 운영체제가 존재한다. 그렇다면 이렇게 알듯 말듯한 운영체제란 무엇인지 자세히 알아보자.

 

 

 

1. 운영체제란?

 

"컴퓨터와 사용자 사이에서 사용을 더 원활하게 해주는 소프트웨어" 라고 정의할 수 있다. 

 

컴퓨터는 크게 4가지로 구분할 수 있다.

 

컴퓨터를 사용하는 사용자, 사용자가 실행하는 어플리케이션, 실제 컴퓨터를 물리적으로 구성하는 하드웨어, 그리고 운영체제 이렇게 4가지로 구분이 가능한데, 그 구조는 아래 그림과 같다.

 

 

사용자가 어플리케이션 프로그램을 사용하고, 그 어플리케이션 프로그램은 하드웨어에서 명령처리를 하며 실행된다.

 

그리고 어플리케이션과 하드웨어 사이에 자리잡은 녀석이 바로 운영체제란 녀석이다. 이 구조를 보면, 아까 말한 "컴퓨터와 사용자 사이에서 사용을 더 원활하게 해주는 소프트웨어" 라는 말이 어느 정도 이해가 갈 것이다.

 

 

 

2. 운영체제가 하는 일

 

그렇다면, 과연 운영체제(OS)가 하는 일은 무엇일까? 이는 크게 두가지 관점으로 볼 수 있는데, 하나는 사용자의 관점이고, 다른 하나는 시스템의 관점이다.

 

우선, 사용자의 관점에서 운영체제는 컴퓨터 하드웨어가 제공하는 여러 리소스를 쓰기 쉽게 도와주는 역할을 한다. 이를 컴퓨터 추상화 (Computer Abstraction)이라고 표현하기도 한다.

 

즉, 사용자들은 컴퓨터의 원리나 구조를 몰라도 마음대로 웹서핑을 하고, 게임을 할 수 있는데 이것이 바로 운영체제가 abstraction view를 제공하기 때문에 가능한 일이다.

 

다음으로 시스템의 관점에서 운영체제는 하드웨어의 자원을 효율적으로 할당해주는 역할을 한다.

 

예를들어 두개의 어플리케이션 (크롬, 포토샵)을 실행중이라고 해보자. 각각의 어플리케이션은 실행되는 동안 메모리나 CPU와 같은 자원을 사용해야 한다. 이 때, 크롬과 포토샵이 서로 자원을 쓰겠다고 싸우면 문제가 생길 것이다.

 

이 때, 전지전능한 입장에서 각각의 어플리케이션에게 자원을 할당해주는것이 바로 시스템의 관점에서 운영체제가 하는 일이다.

 

 

 

3. 컴퓨터 시스템 구조

 

운영체제를 잘 이해하기 위해서는 컴퓨터 시스템구조에 대하여 어느정도 알고 있어야 하는데, 잠깐 살펴보도록 하자.

 

computer-system architecture

 

위의 그림은 컴퓨터 시스템 구조를 간략하게 나타낸 것이다.

 

크게 CPU, 메모리, I/O device로 나눌 수 있는데, 보통 어떤 기능을 수행할 때, CPU가 메모리로부터 명령어를 읽어와서 명령을 수행한다.

 

또한 여러 devices 들이 메모리의 값을 저장하거나 불러오고 싶을 때, 먼저 CPU에게 요청을 하면, CPU가 요청을 받아들여 메모리로부터 데이터를 받아온다.

 

이 때, device들이 CPU에게 요청하는 것. 그것을 바로 Interrupt 라고 부른다. Interrupt에 대한 자세한 설명은 조금 있다가 해보자.

 

 

 

4. CPU (A.k.a Processor)

 

운영체제를 알기 위해서 또 알아야 하는것이 바로 CPU이다.

 

컴퓨터에서 명령어를 처리하는 곳이 바로 CPU인데, 요즘에는 더 좋은 성능을 위해 하나의 컴퓨터에 여러개의 CPU를 장착한다. (parallel systems 또는 multicore systems 라고 불린다.)

 

여담이지만, 더 좋은 성능을 내기 위해 CPU의 1초당 처리량를 많게 하는 방법도 있었고, 실제 여러 회사에서 개발을 했지만,  발열 문제때문에 여러개의 CPU를 담는 방법을 선택하게 되었다고 한다.

 

아무튼, 요즘 컴퓨터는 CPU를 여러개 사용하는데,

 

서로 다른 CPU를 사용하면, Asymmetric Multiprocessor

 

모두 같은 CPU를 사용하면, Symmetric Multiprocessor (SMP) 라고 부른다.

 

또한 하나의 칩에 여러개의 Core(CPU)를 사용하는 방법을 요즘에 많이 쓰는데, 이를 Singlechip multiprocessor (Multicore) 라고 한다.

 

또, 메모리의 관점에서 보면 하나의 메모리를 여러개의 프로세서가 공유해서 쓰는경우를  Uniform Memory Access architecture (UMA) 라고 하고,

 

여러개의 칩에 CPU가 있어서, 메모리도 여러개로 쪼갠 후 특정 메모리는 특정 CPU에 할당하게 만든 경우를 Non-Uniform Memory Access architecture (NUMA) 라고 한다.

 

 

 

5. Computer System Organization

 

컴퓨터의 CPU는 다른 I/O devices들이 무슨일을 하는지 감시하고, devices 들이 요청하면 이에 대한 응답을 해줘야 한다.

 

이때의 요청을 interrupt라고 아까 설명했다. 그렇다면 이 interrupt에 대하여 자세하게 살펴보자.

 

Computer system organization

 

위의 그림은 컴퓨터의 CPU와 devices들을 나타낸 것이다.

 

우선 이 CPU와 마우스, 모니터와 같은 주변 장치들은 Bus라고 하는 하나의 큰 선으로 연결되어 있다.

 

물론 바로 연결되어 있지는 않고, 각각 controller들이 bus에 연결되어 있고, 이 controller들과 주변장치가 연결되어있는 형태이다.

 

만약 키보드로 입력을 했다고 가정해보자. 입력된 값들은 controller에 있는 local buffer에 저장된다. 이 입력된 값들을 메모리로 옮기고 싶을 때, controller가 CPU에게 '나에게 관심을 가져줘' 라는 일종의 신호를 보내는데, 이를 interrupt라고 한다.

 

별도의 라인으로 전달된 interrupt를 받은 CPU는 interrupt를 분석하여 local buffer에 저장된 데이터를 메모리로 옮겨준다.

 

물론 interrupt는 위와같은 상황 외에도 여러 목적으로 사용된다.

 

또 다른 예시로, 만약 CPU가 디스크에게 '너 디스크에 입력된 내용좀 읽어봐' 라고 지시했을 때, 디스크는 자신의 데이터를 읽고, 읽은 데이터를 controller의 local buffer에 저장하고 CPU 에게 interrupt를 보낸다.

 

그럼 CPU는 잠시 자기가 하던 일을 멈추고 데이터를 memory로 옮기는 작업을 한다. 여기서 CPU가 interrupt를 처리할때는 메모리의 낮은곳에 interruptservice routine table이라는 표가 존재하는데, 받은 interrupt에 따라 해야하는 일들이 이 table에 매핑되어있어 빠르게 처리가 가능하다.

 

 

 

쓰다보니 글이 길어졌지만 오늘 내용을 정리해보면,

 

1. 운영체제는 하드웨어와 어플리케이션사이에서 윤활유 역할을 한다.

2. 운영체제는 컴퓨터 구조와 밀접한 연관이 있다.

3. CPU와 다른 device들은 interrupt를 활용해 소통한다.

 

본 내용은 공부하며 정리한 것으로, 오류가 있을 수 있습니다

'운영체제' 카테고리의 다른 글

프로세스 생성, 대체, 종료  (0) 2020.04.09
프로세스의 개념  (0) 2020.04.08
운영체제의 구조 (2)  (0) 2020.04.07
운영체제의 구조 (BIOS, Policy & Mechanism)  (0) 2020.04.05
시스템 콜 (System call)  (0) 2020.04.01