💻Computer Science/📗운영체제 (Operating System)

[운영체제] 1. 운영체제란 무엇인가?

Written by Donghak Park

운영체제란 무엇인가 ? 

 

 

-> 운영체제 ( Operating System )는 컴퓨터 하드웨어와 소프트웨어 자원을 관리하는 시스템 소프트웨어이다.

-> 컴퓨터 프로그램을 위해 보편적인 서비스를 제공하는 시스템 소프트웨어이다.

 

위키피디아 정의 : An Operating System (OS) is system software that manages Computer Hardware and Software Resources and provides common services for computer programs

 

운영체제는 하드웨어 바로 위에 설치되어 사용자 및 다른 소프트웨어와 하드웨어를 연결하는 계층이다.

- 좁은 의미의 운영체제 : 커널 (부팅 후 항상 메모리에 상주하는 부분)

- 넓은 의미의 운영체제 : 커널 + 각종 시스템 유틸리티 (ex 계산기, 달력 등 )

 

현재는 다음과 같은 운영체제들이 사용되고 있다.

-> UNIX, Windows, Apple OS X, Linux, Android, iOS .....

 

운영 체제를 올바르게 이해하기 위해서는 다음과 같은 내용을 숙지해야한다.

 

1. CPU 가상화

2. 메모리 가상화

3. 동시성

4. 영속성

 

즉 가상화 (Virtualization), 동시성 (Concurrency), 영속성 (Persistence)가 운영체제가 자원을 관리에 중요한 개념이다.

 

이러한 것은 운영체제의 목적을 이해하면 쉽다.

 

운영체제의 목적

 

1. 컴퓨터 시스템 자원을 효율적으로 관리

-- 시스템 자원은 CPU, Memory, I/O 장치 등의 하드웨어 자원과 프로세스, 파일, 메시지 등의 소프트웨어 자원이 있다.

-- 운영체제는 이러한 자원을 최대한 효율적으로 사용하기 위해 노력한다.

 

2. 컴퓨터 시스템을 사용자로 하여금 편리하게 사용하도록 지원

-- 사용자가 프로그램들을 독립적으로 수행하는 것과 같은 환상을 제공한다.

 

 

 

운영체제의 분류

 

-> 운영체제를 크게 분류하면 아래와 같이 분류할 수 있다. 

 

1. 동시 작업 가능 여부

-- 단일 작업 (Single Tasking) : 한 번에 하나의 작업만 처리

-- 다중 작업 (Multi Tasking) : 동시에 두 개 이상의 작업 처리

 

2. 사용자 수 (동시 접근 사용)

-- 단일 사용자 (Single User) : MS-DOS, MS Windows

-- 다중 사용자 (Multi User) : Unix

 

3. 처리 방식

 

-- 일괄 처리 (Batch Processing)

    작업을 바로 처리하지 않고 모아서 한꺼번에 처리

    작업이 완전히 종료될 때까지 기다려야 한다.

 

-- 시분할 (Time Sharing)

    여러 작업을 일정한 시간 단위로 분할하여 처리

    짧은 응답 시간을 가져 사용자는 실시간으로 처리되는 느낌을 받음

 

-- 실시간 처리 (Realtime)

    Deadline에 맞추어 정해진 시간 안에 특정한 일이 종료되는 것을 보장

 

운영체제 관련 용어 정리

 

--> 운영체제에서 사용되는 용어들은 헷갈릴 수 있기 때문에 개념을 정리한다.

 

1. MultiTasking : 여러 작업을 동시에 수행

2. Multiporgramming : 여러 프로그램이 동시에 메모리에 올라가 있는 것

3. Time Sharing : CPU의 작동시간을 분할하여 나누어 사용하는 것

4. Multiprocess : 여러 프로그램이 동시에 수행되는 것 

 

이러한 운영체제의 대표적인 기능은 아래와 같다.

 

1. 프로세서, 메모리, 입출력장치, 파일 및 정보 등의 자원 관리

2. 자원을 효율적으로 관리, 분배하기 위한 스케쥴링 기능

3. 사용자와 시스템간의 편리한 인터페이스 제공

4. 시스템의 각종 하드웨어와 네트워크 관리, 제어

5. 데이터 관리, 공유

6. 시스템의 오류 검사 및 복구

7. 자원 보호

8. 입출력 장치에 대한 보조 기능 수행

9. 프로그램 동작, 개발을 위한 내부시스템 제공 (ex. 시스템 콜)

10. 다중 사용자 지원, 가상 계산기 기능 수행

 

그렇다면 프로그램이 실행된다는 것은 무엇인가?, 어떻게 실행되는가?

 

프로그램의 실행

프로그램(소프트웨어)가 실행된다는 것은 어떤 과정을 거치는 것인지 알아보자.

 

컴퓨터는 크게 3가지 구성요소로 이루어져 있다. 

 

1. CPU ( 중앙처리장치)

2. Memory ( 여기서 메모리는 우리가 흔히 알고있는 RAM과 같은 Main Memory를 의미한다.)

3. I/O Module ( Input/Ouput 장치로 키보드, 모니터 등등이 포함 된다.)

 

논리적인 관점에서 보자면 이들 요소간의 시스템 버스를 통한 통신과 처리를 통해서 프로그램이 실행된다. 

 

이때 Fetch 와 Execute라는 개념을 이해하여야 이들이 처리되는 과정을 이해 할 수 있다. 프로그램을 실행하는 것을 간단하게 생각하면 명령어를 가져오고 실행하는 과정의 반복이라고 볼 수 있기 때문이다. 이러한 복잡한 과정을 모든 사용자가 알아야만 수행할 수 있다면 굉장히 불편한 과정이기 때문에 가상화를 통해서 우리는 이를 모르는 채로 사용할 수 있는 것이다.

 

이외에도 ALU, BUS, GPGPU, DISK 등등의 여러 요소가 다양하게 사용되어지는 최근에는 그 시스템이 복잡하지만 기본적으로 운영체제가 작동하는 원리는 비슷하다. 

 

운영체제는 사용자로 하여금 프로그램의 사용이 편리, 정확, 효율적이게 관리하는 시스템 소프트웨어인 것이다.

 

 

 

## Reference

: A. Silberschatz, "Operating System Concept"

: W. Stalling, "Operating Systems : Internals and Design Principles"

: "Computer Systems : a Programmer Perspective"

: KOCW 반효경교수님의 운영체제 수업

 

## 본문의 모든 그림과 내용은 직접 작성했습니다. 

## 혹시 문제되는 점이나 문의사항이 있으면 언제든지 문의 바랍니다.

## Author : Donghak Park