[OS] 운영체제 개요

운영체제(OS, Operating System) 정의

운영체제(OS, Operating System)는 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임. 운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공한다.

운영체제의 역할

1. 자원 관리

응용프로그램들은 한정된 컴퓨터의 자원을 필요로 한다. 운영체제는 중간 입장에서 자원을 알맞은 순서로 응용프로그램에게 분배하고 다시 회수하는 작업을 수행한다.

2. 자원 보호

컴퓨터 자원은 조금이라도 손실되거나 변형되면 프로그램에 오류가 발생할 수 있고 아예 실행되지 않기도 한다. 따라서 운영체제는 자원을 보호한다.

3. 하드웨어 인터페이스 제공

마우스, 키보드, 모니터 등을 제조사에 상관없이 사용자가 사용할 수 있게 하드웨어 인터페이스를 제공한다.

4. 사용자 인터페이스 제공

운영체제를 편리하게 사용하기 위한 사용자 인터페이스를 제공한다.

운영체제의 목표

1. 효율성

자원을 효율적으로 관리

2. 안정성

작업을 안정적으로 처리 사용자와 응용 프로그램의 안전 문제와 하드웨어적인 보안 문제 처리

3. 확장성

다양한 시스템 자원의 추가나 제거가 편리

4. 편리성

사용자가 편리하게 작업할 수 있는 환경 제공

운영체제의 역사

1940년대

애니악의 등장

1950년대

천공카드 시스템
천공카드 리더와 라인 프린터를 사용
일괄 작업 시스템 (모든 작업을 한꺼번에 처리, 프로그램 실행 중간에 데이터 입력, 수정이 불가능)

1960년대 초반

키보드와 모니터 등장
대화형 시스템(프로그램 실행 중간에 데이터 입력, 수정이 가능해짐)

1960년대 후반

다중 프로그래밍 : CPU가 사용 시간을 잘게 쪼개어 각각의 작업에 할당
시분할 시스템 : CPU 사용 시간을 잘게 쪼개어 작업들에게 나누어줌으로써 모든 작업이 동시에 처리되는 것처럼 보임

1970년대 후반

분산 시스템 : 값이 싸고 크기가 작은 컴퓨터들을 하나로 묶어서 만든 대형 컴퓨터에 버금가는 시스템
네트워크상에 분산되어 있는 여러 컴퓨터로 작업을 처리, 그 결과를 상호 교환

1990년 ~ 현재

클라이언트/서버 시스템 : 클라이언트가 작업을 요청하면 서버가 응답하여 작업을 처리해줌

2000년대

P2P 시스템 : 서버 과부화 문제 해결, 사용자와 사용자를 직접 연결
그리드 컴퓨팅 : 모든 컴퓨팅 기기를 하나의 초고속 네트워크로 연결하여, 컴퓨터의 계산능력을 극대화시키는 차세대 디지털 신경망 서비스
SaaS(Software as a Service) : 사용자가 소프트웨어를 이용한 만큼의 비용만 지불 클라우드 컴퓨팅 : 그리드 컴퓨팅과 SaaS를 합침
사물 인터넷(IoT) : 사물에 센서와 통신 기능을 내장하여 인터넷에 연결

커널과 인터페이스

커널

항상 메모리에 올라가 있는 운영체제의 핵심 기능(프로세스 관리, 메모리 관리, 저장장치 관리)

인터페이스

커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려줌

시스템 호출과 디바이스 드라이버

시스템 호출

커널이 자신을 보호하기 위해 만든 인터페이스로 사용자나 프로그램이 직접 컴퓨터 자원에 접근하는 것을 막음

드라이버

특정 하드웨어나 장치를 제어하기 위한 커널의 일부분

커널의 구성

커널의 기능

  1. 메모리 관리: 메모리가 어디에서 무엇을 저장하는 데 얼마나 사용되는지를 추적
  2. 프로세스 관리: 어느 프로세스가 중앙 처리 장치(CPU)를 언제 얼마나 오랫동안 사용할지를 결정
  3. 파일 시스템 관리 : 데이터를 저장하고 접근할 수 있는 인터페이스를 제공
  4. 입출력 관리 : 필요한 입력과 출력 서비스 제공
  5. 프로세스 간 통신 관리 : 공동 작업을 위한 각 프로세스 간 통신 환경 지원

단일형 구조 커널

단일형 구조 커널
초창기 운영체제의 구조, 커널의 핵심 기능을 구현하는 모듈들이 구분 없이 하나로 구성됨. ex) 유닉스, 리눅스

  • 장점
    1. 모듈이 분리되지 않아 모듈간의 통신비용이 줄어들고, 효율적인 운영 가능
  • 단점
    1. 모든 모듈이 하나로 묶여있어 한 모듈에 장애가 생기면 전체에 영향이 감
    2. 단일형 구조는 수정이 어렵기 때문에 이식성이 떨어짐
    3. 매우 크고 복잡한 현대의 운영체제를 구현하기 어려움

계층형 구조 커널

계층형 구조 커널
비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고 계층 간의 통신을 통해 운영체제를 구현하는 방식

마이크로 구조 커널

마이크로 구조 커널
프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공
이외의 다른 기능(파일 시스템 관리, 입출력 관리 등)은 커널 영역이 아니라 사용자 영역에 구현함으로써 커널의 크기를 줄임
커널의 각 모듈은 세분화되어 존재하고 모듈 간의 정보 교환은 프로세스 간 통신을 이용하여 이루어짐

  • 장점
    1. 각 모듈은 독립적으로 작동하기 때문에 한 모듈에 장애가 생겨도 전체에 영향을 주지 않는다.
    2. 이식성이 뛰어나다
    3. 커널이 작고 가벼워 사양이 낮은 CPU에도 설치 가능
  • 단점
    1. 모듈 간의 프로세스 통신(IPC)이 발생하여 느림

가상 머신

운영체제와 응용 프로그램 사이에서 작동하는 프로그램
컴퓨터 안에 또 다른 컴퓨터를 동작 시키는 것
JVM : 자바를 실행하기 위한 가상 머신 - OS에 종속받지 않고 CPU가 Java를 인식, 실행할 수 있게 하는 가상 머신

Categories:

Updated:

Leave a comment