4 분 소요

본 글은 (KOCW) 운영체제, 이화여자대학교 반효경 교수님의 강의를 듣고 내용을 요약 및 정리했습니다. 개인 공부에 목적이 있으며, 자세한 사항은 여기를 참고하시면 됩니다.

Chapter 1.

  • 강의소개 - 28분
  • Introduction to Operating Systems - 1시간 8분

(+) 인프런의 주니온 박사님의 운영체제 공룡책 강의를 듣고 내용을 보충했습니다. 자세한 사항은 여기를 참고하시면 됩니다.

image image

운영체제는 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층이다. 이 글은 운영체제의 정의와 목적, 분류 기준과 주요 용어, 그리고 운영체제의 구조를 정리한다. 정의에서 출발해 분류와 용어를 거쳐 실제 사례와 내부 구조까지 순서대로 따라가면 운영체제의 큰 그림이 잡힌다.

이 글에서 다루는 것

  • 운영체제의 정의와 그 목적
  • 동시 작업 여부, 사용자 수, 처리 방식에 따른 분류
  • 멀티태스킹·인터럽트 등 자주 쓰이는 용어 정리
  • 유닉스·DOS·Windows 등 운영 체제의 예
  • CPU 스케줄링부터 입출력 관리까지 운영 체제의 구조

운영체제란 무엇인가?

먼저 운영체제가 무엇인지, 그리고 그 정의가 어디까지를 포함하는지부터 정리한다.

  • 운영체제(Operating System, OS): 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층
    • operating system : a software that operates a computer system
    • operating system : a program running at all times on the computer to provide system services to application programs to manage processes, resources, user interfaces, and so on
    • computer : a machine that processes the information
    • information : a quantitative representation that measures the uncertainty
  • 협의의 운영체제(커널) : 운영체제의 핵심 부분으로 메모리에 상주하는 부분
    • 커널(kernel) : 컴퓨터에서 항상 수행되는 프로그램
  • 광의의 운영체제 : 커널뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념

Windows에서 사용자 모드(응용 프로그램·Windows API)와 커널 모드(커널·드라이버·HAL)로 나뉘는 구성. 응용 프로그램은 Windows API를 통해 커널 서비스를 요청하고, 커널은 하드웨어 추상화 계층(HAL)을 거쳐 하드웨어를 제어한다.

출처: User Mode and Kernel Mode - Microsoft Learn (https://learn.microsoft.com/en-us/windows-hardware/drivers/gettingstarted/user-mode-and-kernel-mode), CC BY 4.0 1

커널은 커널 모드에서 하드웨어 추상화 계층(HAL)을 거쳐 하드웨어를 제어하고, 응용 프로그램은 사용자 모드에서 Windows API를 통해 커널이 제공하는 서비스를 요청한다.

운영체제의 목적

  • 컴퓨터 시스템의 자원을 효율적으로 관리
    • 사용자 간의 형평성 있는 자원 분배
    • 주어진 자원으로 최대한의 성능을 내도록
  • 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공
    • 운영체제는 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공
    • 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행

효율과 편의, 두 목표가 운영체제를 움직이는 축이다.

운영 체제의 분류

정의를 알았으니, 다음은 이를 나누는 기준이다. 무엇을 기준으로 나누느냐에 따라 운영체제는 다르게 불린다.

동시 작업 가능 여부

  • 단일 작업(single tasking) : 한 번에 하나의 작업만 처리
    • ex. MS-DOS 프롬프트 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음
  • 다중 작업(multi tasking) : 동시에 두 개 이상의 작업 처리
    • ex. UNIX, MS Windows 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음

사용자의 수

  • 단일 사용자(single user)
    • ex. MS-DOS, MS Windows
  • 다중 사용자(multi user)
    • ex. UNIX, NT server

처리 방식

  • 일괄 처리(batch processing)
    • 작업 요청의 일정량을 모아서 한꺼번에 처리
    • 작업이 완전 종료될 때까지 기다려야 함
    • ex. 초기 Punch Card 처리 시스템
  • 시분할(time sharing)
    • 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
    • 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐
      • 작업이 끝날 때까지 기다리지 않고 정해진 시간 단위마다 CPU를 번갈아 배정하기 때문이다.
    • interactive한 방식
  • 실시간(Realtime OS)
    • 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS
      • ex. 원자로/공장 제어, 미사일 제어, 반도체 장비, 로봇 제어
    • 실시간 시스템의 개념 확장
      • Hard realtime system (경성 실시간 시스템)
      • Soft realtime system (연성 실시간 시스템)

결국 같은 컴퓨터를 어떤 방식으로 나눠 쓰느냐의 차이다.

세 방식은 우열 관계가 아니라 목적이 다른 선택지다. 일괄 처리는 여러 작업을 모아 한 번에 처리하므로 처리량(throughput)을 높이기 쉽지만, 사용자와의 상호작용이 불가능하고 결과를 받기까지의 대기 시간이 길다. 시분할은 시간 단위를 잘게 나눌수록 응답 시간이 짧아지는 대신, CPU를 자주 번갈아 넘겨주는 만큼 그에 따르는 부가 비용이 커진다. 실시간 시스템은 정해진 시간 안에 작업이 끝나는 것(데드라인)을 우선하므로, 평균 처리량이나 자원 활용률은 일반 시분할 시스템보다 낮아질 수 있다. 어느 방식을 택하든 한쪽을 얻는 대신 다른 쪽을 내주는 맞교환이 일어난다. 2

몇 가지 용어

앞의 분류에서 나온 개념들이 실제로는 서로 다른 이름으로 불린다. 헷갈리기 쉬운 용어들을 한데 모아 정리한다.

주의: Multitasking, Multiprogramming, Time sharing, Multiprocess는 서로 다른 뜻으로 오해하기 쉽지만, 모두 컴퓨터에서 여러 작업을 동시에 수행한다는 같은 지점을 가리킨다.

  • Multitasking, Multiprogramming, Time sharing, Multiprocess 는 모두 컴퓨터에서 여러 작업을 동시에 수행하는 것을 뜻한다.
    • Multiprogramming은 여러 프로그램이 메모리에 올라가 있음을 강조
    • Time Sharing은 CPU의 시간을 분할하여 나누어 쓴다는 의미
  • Multiprocessor : 하나의 컴퓨터에 CPU가 여러 개 붙어 있음을 의미한다.
  • 프로그램(program) : 컴퓨터의 하드웨어에 작업을 수행하도록 지시하는 일련의 명령
  • 부트스트랩(bootstrap) : 컴퓨터 전원을 켜고 운영 체제를 로드하는 첫 번째 프로그램
  • 인터럽트(interrupt) : 하드웨어는 CPU로 신호를 전송하여 언제든지 인터럽트를 트리거할 수 있다. (일반적으로 시스템 버스를 경유함) 3

image

  • CPU : 명령을 실행하는 하드웨어
  • Processor : 하나 이상의 CPU를 포함하는 물리적 칩
  • Core : CPU의 기본 계산 단위
  • Multicore : 동일한 CPU에 여러 컴퓨팅 코어를 포함
  • Multiprocessor : 여러 프로세서를 포함
  • Symmetric multiprocessing (SMP) : 각 피어 CPU 프로세서는 모든 작업을 수행
  • Asymmetric multiprocessing : 각 프로세서에는 특정 태스크가 할당된다.
  • Virtualization : 단일 컴퓨터의 하드웨어를 여러 다른 실행 환경으로 추상화할 수 있는 기술
  • VMM : 가상 시스템 관리자 (Virtual Machine Manager)
    • VMware, XEN, WSL, and so on.

image

  • CLI : 명령줄 인터페이스 또는 명령 인터프리터
  • GUI : 그래픽 사용자 인터페이스 (graphical user interface)
  • System calls : OS가 제공하는 서비스에 접근하기 위한 인터페이스
  • API : Application Programming Interface

용어가 달라도 가리키는 바는 하나다 — 여러 작업을 동시에 돌리는 것.

운영 체제의 예

기준을 알았으니, 이제 실제로 어떤 운영체제들이 그 기준 위에서 어떻게 나뉘는지 대표적인 예를 살펴본다.

유닉스(UNIX)

  • 코드의 대부분을 C언어로 작성
  • 높은 이식성
  • 최소한의 커널 구조
  • 복잡한 시스템에 맞게 확장 용이
  • 소스 코드 공개
  • 프로그램 개발에 용이
  • 다양한 버전 : System V, FreeBSD, SunOS, Solaris, Linux

DOS(Disk Operating System)

  • MS사에서 1981년 IBM-PC를 위해 개발
  • 단일 사용자용 운영체제, 메모리 관리 능력의 한계(주 기억 장치 : 640kb)

MS Windows

  • MS사의 다중 작업용 GUI 기반 운영 체제
  • Plug and Play, 네트워크 환경 강화
  • DOS용 응용 프로그램과 호환성 제공
  • 불안정성
  • 풍부한 지원 소프트웨어

Handheld device를 위한 OS

  • PalmOS, Pocket PC (WinCE), Tiny OS

운영 체제의 구조

운영체제가 사용자에게 서비스를 제공하려면 내부에서 어떤 일을 해야 할까 — 그 구성 요소들을 살펴본다.

  • CPU 스케줄링 : 누구한테 cpu를 줄까?
  • 메모리 관리 : 한정된 메모리를 어떻게 쪼개어 쓰지?
  • 파일 관리 : 디스크에 파일을 어떻게 보관하지?
  • 입출력 관리 : 각기 다른 입출력장치와 컴퓨터 간에 어떻게 정보를 주고 받게 하지? (interrupt에 의해 관리하고 있다.)
  • 프로세스 관리 : 프로세스의 생성과 삭제, 자원 할당 및 반환, 프로세스 간 협력
  • 그 외 : 보호 시스템, 네트워킹, 명령어 해석기(command line interpreter)

정리하면, 운영체제 내부는 누구에게 CPU를 줄지, 메모리와 파일을 어떻게 관리할지 같은 관리 업무로 나뉜다.

image

  • Program execution : 메모리에 프로그램 로드 및 실행하는 것을 의미한다. 4
  • I/O operations : 실행 중인 프로그램은 I/O를 필요할 수 있다.
  • File-system manipulation : 프로그램은 파일과 디렉토리를 생성(create), 삭제(delete), 읽기(read), 쓰기(write)를 한다.
  • Communications : 프로세스는 동일한 컴퓨터 또는 네트워크를 통해 컴퓨터 간에 정보를 교환한다.
    • 공유 메모리 또는 메시지 전달을 통해서
  • Error detection : 끊임없이 에러 가능성을 감지한다.
  • Resource allocation : 여러 사용자 또는 여러 작업을 동시에 실행할 경우 각 사용자에게 리소스를 할당해야 한다.
    • 리소스 유형으로 CPU 사이클, 메인 메모리, 파일 스토리지, I/O 디바이스들이 있다.
    • Accounting : 어떤 사용자가 얼마나 많은 컴퓨터 리소스를 사용하는지 추적한다.

정리하면, 이 서비스들은 결국 프로그램 실행과 자원 관리라는 두 갈래로 모인다.

  • 현대 컴퓨터의 작동 방식

핵심 정리

  • 정의. 운영체제는 하드웨어 바로 위에서 사용자·소프트웨어·하드웨어를 연결하는 소프트웨어 계층이다.
  • 목적. 자원을 효율적으로 관리하고 컴퓨터를 편리하게 쓸 수 있는 환경을 제공하는 것.
  • 분류. 동시 작업 여부·사용자 수·처리 방식이라는 세 기준으로 나뉜다.
  • 용어. 멀티태스킹·멀티프로그래밍·시분할 등은 결국 동시 수행을 가리키는 다른 이름이다.
  • 구조. CPU 스케줄링, 메모리·파일·입출력·프로세스 관리가 운영체제 내부의 핵심 업무다.

References

  1. User Mode and Kernel Mode - Microsoft Learn (CC BY 4.0) ↩

  2. (KOCW) 운영체제 - 이화여자대학교 반효경 교수 ↩

  3. Abraham Silberschatz, Peter B. Galvin, Greg Gagne, Operating System Concepts 10th, Wiley (2018), Chapter 1 (Introduction) - 공식 컴패니언 사이트 ↩

  4. Abraham Silberschatz, Peter B. Galvin, Greg Gagne, Operating System Concepts 10th, Wiley (2018), Chapter 2 (Operating-System Structures) - 공식 컴패니언 사이트 ↩

댓글남기기