본문 바로가기
컴퓨터 구조 + 운영체제

[쉽게 배우는 운영체제] Chapter 02. 컴퓨터의 구조와 성능 향상

by TMrare 2025. 3. 27.

운영체제의 개요

1. 운영체제 소개

운영체제(OS)란?

컴퓨터 하드웨어와 응용 프로그램 사이에서 중재자 역할을 하는 시스템 소프트웨어로, 컴퓨터 자원을 효율적으로 관리하고 사용자에게 편리한 인터페이스를 제공

1.1 생활 속 운영체제

현대 사회에서 다양한 운영체제를 접할 수 있음

  • 데스크톱/노트북: Windows macOS Linux
  • 모바일 기기: Android iOS
  • 서버: Linux Windows Server Unix
  • 임베디드 시스템: RTOS Embedded Linux

컴퓨터는 단순한 계산기가 아닌 프로그래밍이 가능한 기계로, 초기에는 미사일 탄도 계산을 위해 개발됨

1.2 운영체제의 정의

컴퓨터 시스템은 크게 하드웨어(hardware) 소프트웨어(software)로 구성

소프트웨어 구분

  • 응용 프로그램(Application Program): 특정 작업을 위해 사용하는 프로그램
  • 시스템 소프트웨어(System Software): 하드웨어와 응용 프로그램을 관리하는 소프트웨어

운영체제의 특징

  • 컴퓨터 시스템의 핵심 소프트웨어
  • 하드웨어와 응용 프로그램 사이의 중재자
  • 펌웨어(firmware) 성격 보유: 소프트웨어와 하드웨어 특성 모두 갖춤

1.3 컴퓨터 구조와 운영체제

컴퓨터 전원을 켜면 가장 먼저 실행되는 것이 운영체제. 사용자나 응용 프로그램은 운영체제를 통해서만 컴퓨터 자원에 접근 가능함

운영체제는 크게 두 부분으로 구성

  • 커널(Kernel): 운영체제의 핵심 기능을 모아놓은 부분
  • 인터페이스(Interface): 사용자와 커널 사이의 소통 창구

1.4 운영체제의 역할과 목표

운영체제의 역할운영체제의 목표
자원 관리: CPU, 메모리, 입출력 장치 등의 효율적 관리 효율성: 운영체제의 크기를 최소화하고 코드를 최적화하여 시스템 자원을 효율적으로 사용
자원 보호: 하드웨어 및 소프트웨어 자원의 안전한 사용 보장 안정성: 사용자와 응용 프로그램의 안전 문제 및 하드웨어 보안 문제를 처리하고, 결함 포용 기능 제공
하드웨어 인터페이스 제공: 하드웨어와의 통신 방법 제공 확장성: 플러그 앤 플레이(Plug and Play) 기능을 제공하여 새로운 하드웨어 쉽게 추가 가능
사용자 인터페이스 제공: 사용자가 컴퓨터와 상호작용할 수 있는 방법 제공 편리성: 사용자에게 다양한 편의 기능을 제공하면서도 자원의 낭비를 방지

2. 운영체제의 발전

📌 기술면접 핵심 포인트

운영체제는 하드웨어 발전과 사용자 요구에 따라 일괄 처리 → 대화형 → 시분할 → 분산 → 클라이언트/서버 → P2P → 클라우드 → IoT 순으로 발전해왔으며, 각 단계가 이전 단계의 한계를 극복하는 과정이었음!!

운영체제의 발전 과정

초기 컴퓨터에는 운영체제가 없었으나, 컴퓨터가 복잡해지고 사용자의 요구가 증가함에 따라 운영체제는 지속적으로 발전

시기주요 기술특징
1940년대 없음 진공관 사용, 하드와이어링 방식으로 프로그래밍
1950년대 입력: 카드 리더
출력: 라인 프린터
일괄 작업 시스템의 등장, 운영체제의 첫 등장
1960년대 초반 키보드, 모니터 대화형 시스템 개발
1960년대 후반 C언어 개발 멀티프로그래밍 기술 개발, 시분할 시스템 도입
1970년대 개인용 컴퓨터(PC) 개인용 컴퓨터의 등장, 분산 시스템 발전
1990년대 웹(World Wide Web) 클라이언트/서버 시스템 보급
2000년대 이후 스마트폰, 클라우드 P2P 시스템, 클라우드 컴퓨팅, 사물 인터넷(IoT) 발전

2.1 초창기 컴퓨터

초창기 컴퓨터인 에니악(ENIAC)은 진공관을 사용하여 켜지면 1, 꺼지면 0을 표현하는 2진법을 사용함. 이 시기에는 운영체제가 없었으며, 하드와이어링(Hard Wiring) 방식으로 전선을 직접 연결하여 프로그래밍

2.2 일괄 작업 시스템

IC(Integrated Circuit) 칩의 발명으로 현대적인 컴퓨터가 등장. 초기에는 천공카드 리더(Punch Card Reader)를 입력장치로, 라인 프린터(Line Printer)를 출력장치로 사용

일괄 작업 시스템(Batch Job System)은 여러 작업을 한꺼번에 모아 처리하는 시스템으로, 사용자 상호작용이 불가능

2.3 대화형 시스템

1960년대 초반에 키보드와 모니터가 등장하며 사용자와 컴퓨터가 실시간으로 상호작용할 수 있는 대화형 시스템(Interactive System)이 개발

이전의 일괄 작업 시스템에서는 작업 중간에 데이터를 변경할 수 없었지만, 대화형 시스템에서는 실시간 입출력이 가능하게 됨

2.4 시분할 시스템

1960년대 후반, 컴퓨터의 계산 능력이 향상되며 CPU 사용 시간을 여러 작업에 나누어 주는 시분할 시스템(Time Sharing System)이 개발됨

  • 멀티프로그래밍(Multiprogramming): CPU로 여러 작업을 동시에 실행하는 기술
  • 타임 슬라이스(Time Slice)/타임 퀀텀(Time Quantum): 작업에 할당되는 시간 조각
  • 멀티프로그래밍 수준: 시분할 시스템에서 동시에 실행되는 작업의 수

실시간 시스템

시분할 시스템의 단점을 보완하기 위해 일정 시간 안에 작업 처리를 보장하는 실시간 시스템(Real-Time System)이 개발됨

다중 사용자 시스템

시분할 시스템을 통해 여러 사용자가 동시에 컴퓨터를 사용할 수 있는 다중 사용자 시스템(Multi-User System)이 등장

2.5 분산 시스템

분산 시스템(Distributed System)은 네트워크상에 분산된 여러 컴퓨터로 작업을 처리하고 결과를 상호 교환하는 시스템

작은 컴퓨터들을 하나로 묶어 대형 컴퓨터에 버금가는 성능을 제공했지만, 시스템에 참가하는 컴퓨터의 관리와 작업 분배에 어려움이 있었음

2.6 클라이언트/서버 시스템

작업을 요청하는 클라이언트와 요청받은 작업을 처리하는 서버로 구성된 이중 구조의 시스템

  • 클라이언트(Client): 서버에 요청하는 컴퓨터
  • 서버(Server): 데몬이 설치된 컴퓨터
  • 데몬(Daemon): 멈추지 않고 계속 작동하는 프로그램

웹 시스템의 보급으로 널리 알려졌지만, 모든 요청이 서버로 집중되면서 서버 과부하 문제가 발생함

2.7 P2P 시스템

Peer-to-Peer 시스템은 서버의 부담을 줄이기 위해 개발된 시스템으로, 서버는 중재만 하고 사용자들이 직접 데이터를 주고받는 구조

서버가 존재하는 P2P

예: 메신저 서비스 - 초기 인증은 서버가 처리하고, 이후 사용자 간 직접 통신

완전한 P2P

예: 블록체인 - 서버 없이 분산된 노드들이 합의 알고리즘으로 데이터 유효성 검증

2.8 클라우드 컴퓨팅

클라우드 컴퓨팅(Cloud Computing)은 하드웨어와 소프트웨어를 중앙 시스템에 숨기고 사용자는 필요한 서비스만 이용하는 컴퓨팅 환경

그리드 컴퓨팅(Grid Computing)에서 발전한 개념으로, 필요한 만큼만 자원을 사용하고 비용을 지불하는 유연한 컴퓨팅 모델

**IaaS (Infrastructure as a Service)**

인프라를 서비스로 제공 (예: AWS EC2, Microsoft Azure)

**PaaS (Platform as a Service)**

개발 플랫폼을 서비스로 제공 (예: Google App Engine, Heroku)

**SaaS (Software as a Service)**

소프트웨어를 서비스로 제공 (예: Google Docs, Microsoft Office 365)

2.9 사물 인터넷

사물 인터넷(Internet of Things, IoT)은 다양한 사물이 센서와 통신 기능을 내장하여 스스로 통신하며 지능적인 서비스를 제공하는 기술

IoT 환경에서는 경량화된 운영체제가 필요하며, 실시간 처리와 저전력 운영이 중요

3. 운영체제의 구성

운영체제의 구성 요소

운영체제는 커널(Kernel) 인터페이스(Interface)로 구성되며, 커널은 운영체제의 핵심 기능을 담당하고 인터페이스는 사용자와의 상호작용을 담당

3.1 커널과 인터페이스

커널 (Kernel)

프로세스 관리, 메모리 관리, 저장장치 관리 등 운영체제의 핵심 기능을 구현한 프로그램. 운영체제의 성능을 좌우하는 엔진과 유사

인터페이스 (Interface)

사용자와 응용 프로그램에 인접하여 커널에 명령을 전달하고 실행 결과를 돌려주는 역할. CLI(Command Line Interface)와 GUI(Graphical User Interface)가 대표적임.

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

시스템 호출(System Call)은 커널이 자신을 보호하기 위해 만든 인터페이스로, 응용 프로그램이 커널이 제공하는 서비스를 이용하기 위한 함수.

API (Application Programming Interface)

응용 프로그램이 자신과 연관된 프로그램을 개발할 수 있도록 제공하는 인터페이스

SDK (System Developer's Kit)

API, 매뉴얼, 코드 편집기, 에뮬레이터 등 프로그램 개발에 필요한 도구를 하나로 묶어 배포하는 개발 패키지

디바이스 드라이버 (Device Driver)

커널과 하드웨어 사이의 인터페이스 역할을 하는 소프트웨어로, 커널이 다양한 하드웨어를 일관된 방식으로 제어할 수 있게 해줌

3.3 커널의 역할과 종류

커널의 가장 중요한 역할은 여러 응용 프로그램을 실행하고 관리하는 것임. 이를 위해 프로세스 관리, 메모리 관리, 파일 시스템 관리 등의 기능을 수행

단일형 구조 (Monolithic Architecture) 커널

초창기 운영체제에서 사용된 구조로, 커널의 핵심 기능을 구현하는 모듈이 구분 없이 하나로 구성

장점

  • 모듈 간 통신 비용이 적어 효율적 운영 가능
  • 성능이 우수함

단점

  • 버그나 오류 처리가 어려움
  • 상호 의존성이 높아 시스템 전체로 오류 확산 가능

예시: MS-DOS, 초기 유닉스 운영체제

계층형 구조 (Layered Architecture) 커널

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

장점

  • 모듈화로 디버깅과 유지보수가 용이
  • 각 계층을 독립적으로 개발 가능

단점

  • 계층 간 통신 오버헤드 발생
  • 성능이 단일형 구조보다 떨어질 수 있음

예시: Windows, 현대적인 대부분의 운영체제

마이크로 구조 (Micro Architecture) 커널

프로세스 관리, 메모리 관리, 프로세스 간 통신 등 가장 기본적인 기능만 커널에 포함하고, 나머지는 사용자 영역에 구현하는 방식

장점

  • 모듈이 독립적으로 작동하여 안정성 높음
  • 커널이 가벼워 이식성이 좋음
  • 확장성과 유연성이 뛰어남

단점

  • 빈번한 모드 전환으로 성능 저하 발생
  • 시스템 호출 처리 시간이 길어짐

예시: Mach, QNX, MINIX 등

핵심 기능설명
프로세스 관리 프로세스에 CPU를 배분하고 작업에 필요한 환경 제공
메모리 관리 프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상 메모리 제공
파일 시스템 관리 데이터를 저장하고 접근할 수 있는 인터페이스 제공
입출력 관리 필요한 입력과 출력 서비스 제공
프로세스 간 통신 관리 공동 작업을 위한 프로세스 간 통신 환경 지원

3.4 가상 머신

가상 머신(Virtual Machine)은 운영체제와 응용 프로그램 사이에서 작동하는 프로그램으로, 응용 프로그램이 동일한 환경에서 작동할 수 있게 해줌

장점

  • 플랫폼 독립성 제공 (Write Once, Run Anywhere)
  • 자원 격리로 보안성 향상
  • 다양한 운영체제를 동시에 실행 가능

단점

  • 성능 오버헤드 발생
  • 자원 사용량 증가
  • 가상 머신을 통한 간접 실행으로 속도 저하

예시: Java Virtual Machine(JVM), VMware, VirtualBox 등

4. 기술 면접 핵심 포인트

운영체제 면접 대비

운영체제는 컴퓨터공학의 기초 과목으로, 기술 면접에서 자주 등장하는 주제!! 개념 + 실무내용 적용해서 대답하기

Q. 운영체제의 역할과 주요 기능은 무엇인가요?

운영체제는 컴퓨터 하드웨어와 응용 프로그램 사이에서 중재자 역할을 하는 시스템 소프트웨어이다.

  1. 자원 관리: CPU, 메모리, 입출력 장치 등의 컴퓨터 자원을 효율적으로 관리
  2. 프로세스 관리: 프로세스 생성, 실행, 종료 및 CPU 스케줄링
  3. 메모리 관리: 주기억장치와 보조기억장치의 효율적 사용 관리
  4. 파일 시스템 관리: 데이터의 저장, 검색, 공유를 위한 파일 구조 제공
  5. 보안 및 보호: 시스템 자원 보호 및 사용자 인증
  6. 사용자 인터페이스 제공: 사용자가 컴퓨터와 상호작용할 수 있는 환경 제공

이러한 기능들을 통해 하드웨어의 복잡성을 추상화하고, 사용자와 응용 프로그램이 컴퓨터 자원을 효율적으로 사용할 수 있게 한다.

Q. 커널과 셸의 차이점은 무엇인가요?

커널(Kernel)은 운영체제의 핵심 부분으로, 하드웨어와 직접 상호작용하며 자원 관리, 메모리 관리, 프로세스 관리 등의 핵심 기능을 수행한다. 운영체제의 가장 낮은 계층에 위치하며, 항상 메모리에 상주한다.

셸(Shell)은 사용자와 커널 사이의 인터페이스 역할을 하는 프로그램이다. 사용자로부터 명령을 받아 해석하고 커널에 전달하는 역할을 한다. 명령 줄 인터페이스(CLI) 형태나 그래픽 사용자 인터페이스(GUI) 형태로 제공된다.

주요 차이점은:

  • 커널은 운영체제의 핵심 기능 구현, 셸은 사용자 인터페이스 제공
  • 커널은 시스템 자원에 직접 접근, 셸은 커널을 통해 간접적으로 접근
  • 커널은 하드웨어와 직접 통신, 셸은 사용자와 직접 통신
  • 커널은 항상 메모리에 상주, 셸은 필요에 따라 로드/언로드 가능
Q. 운영체제의 발전 과정에서 멀티프로그래밍과 시분할 시스템의 중요성은 무엇인가요?

멀티프로그래밍(Multiprogramming)은 CPU가 여러 작업을 동시에 실행할 수 있게 해주는 기술로, CPU 활용도를 최대화하기 위해 도입되었다. 한 프로그램이 I/O 작업을 기다리는 동안 다른 프로그램이 CPU를 사용할 수 있게 함으로써 CPU 유휴 시간을 최소화한다.

시분할 시스템(Time Sharing System)은 CPU 사용 시간을 여러 작업에 조금씩 할당하여 모든 작업이 동시에 실행되는 것처럼 보이게 하는 기술이다. 이를 통해 여러 사용자가 동시에 컴퓨터를 사용할 수 있게 되었다.

이러한 기술들의 중요성:

  • 컴퓨터 자원의 효율적 사용 가능
  • 사용자 응답 시간 개선으로 대화형 시스템 발전
  • 다중 사용자 환경의 기반 마련
  • 현대 운영체제의 기본 개념(프로세스, 스케줄링, 메모리 관리) 확립
  • 컴퓨터의 활용 범위를 대폭 확장

이러한 발전이 없었다면 오늘날과 같은 개인용 컴퓨터나 서버 시스템은 존재할 수 없었을 것이다.

Q. 마이크로 커널과 모놀리식 커널의 차이점과 각각의 장단점은 무엇인가요?

모놀리식(Monolithic) 커널은 운영체제의 모든 핵심 기능이 단일 주소 공간에서 실행되는 구조이다. 모든 서비스가 커널 공간에서 실행되므로 서비스 간 통신이 효율적이지만, 하나의 서비스 오류가 전체 시스템에 영향을 줄 수 있다.

마이크로 커널은 최소한의 핵심 기능(프로세스 관리, 메모리 관리, IPC)만 커널 공간에 구현하고, 나머지 서비스는 사용자 공간에서 실행되는 구조이다. 각 서비스가 독립적으로 실행되어 안정성은 높지만, 서비스 간 통신 오버헤드가 발생한다.

비교 항목모놀리식 커널마이크로 커널
성능 높음 (직접 호출) 상대적으로 낮음 (IPC 사용)
안정성 낮음 (전체 커널 영향) 높음 (모듈 분리)
확장성 낮음 (전체 재컴파일 필요) 높음 (모듈 추가 용이)
크기 작음
복잡성 구현이 간단함 IPC 메커니즘으로 복잡함
예시 Linux, Unix MINIX, QNX

최근에는 두 방식의 장점을 결합한 하이브리드 커널(Windows, macOS)이 널리 사용되고 있다.

Q. 클라우드 컴퓨팅의 특징과 운영체제와의 관계는 무엇인가요?

클라우드 컴퓨팅은 네트워크를 통해 컴퓨팅 자원(서버, 스토리지, 데이터베이스, 네트워킹, 소프트웨어 등)을 주문형으로 제공하는 서비스 모델이다.

클라우드 컴퓨팅의 특징:

  • 온디맨드 서비스: 필요할 때 필요한 만큼 자원 사용
  • 광범위한 네트워크 접근: 다양한 기기로 접근 가능
  • 자원 풀링: 다수 사용자에게 동적으로 자원 할당
  • 빠른 탄력성: 수요에 따라 자원 확장/축소 가능
  • 측정 가능한 서비스: 사용량 기반 과금 체계

운영체제와의 관계:

  • 클라우드 인프라는 가상화 기술을 기반으로 하며, 이는 운영체제 수준의 추상화 제공
  • 하이퍼바이저(Hypervisor)는 물리적 하드웨어 위에서 여러 가상 머신을 관리하는 특수한 형태의 운영체제
  • 컨테이너 기술(Docker 등)은 운영체제 수준의 가상화 제공
  • 클라우드 운영체제(Cloud OS)는 클라우드 자원을 관리하기 위한 특화된 운영체제
  • 사용자는 운영체제 관리 부담 없이 서비스 사용 가능 (IaaS, PaaS, SaaS 모델에 따라 차이)

클라우드 컴퓨팅은 운영체제의 개념을 확장하여, 물리적 단일 컴퓨터에서 네트워크로 연결된 분산 시스템으로 컴퓨팅 환경을 변화시켰다.

면접 대답 방식

  • 개념적 이해뿐만 아니라 실무에서의 적용 사례를 함께 설명할 것.
  • 현대 운영체제의 발전 방향(클라우드, 컨테이너, 가상화)에 대한 이해
  • 모르는 내용은 솔직하게 인정하고, 알게 된다면 어떻게 접근할지 설명하기

5. 요약 및 결론

📝 운영체제의 개요 정리

운영체제는 컴퓨터 하드웨어와 응용 프로그램 사이의 중재자 역할을 하는 시스템 소프트웨어로, 컴퓨터 자원을 효율적으로 관리하고 사용자에게 편리한 인터페이스를 제공

  • 운영체제의 주요 역할: 자원 관리, 자원 보호, 하드웨어 인터페이스 제공, 사용자 인터페이스 제공
  • 운영체제의 발전 과정: 일괄 작업 시스템 → 대화형 시스템 → 시분할 시스템 → 분산 시스템 → 클라이언트/서버 시스템 → P2P 시스템 → 클라우드 컴퓨팅 → 사물 인터넷
  • 운영체제의 구성: 커널(핵심 기능)과 인터페이스(사용자와의 상호작용)
  • 커널의 종류: 단일형 구조, 계층형 구조, 마이크로 구조
  • 커널의 주요 기능: 프로세스 관리, 메모리 관리, 파일 시스템 관리, 입출력 관리, 프로세스 간 통신 관리

운영체제는 컴퓨터공학의 핵심 분야로, 모든 소프트웨어의 기반이 되는 중요한 시스템 소프트웨어다. 운영체제의 개념과 발전 과정을 이해하는 것은 현대 컴퓨팅 환경을 이해하는 데 필수적이다.