운영체제 개요

@Wonyu· December 21, 2024 · 10 min read

운영체제란?

운영체제란 컴퓨터 자원을 효율적으로 관리하는 소프트웨어를 말한다. 사용자나 응용 프로그램들은 운영체제를 통해서만 컴퓨터 자원에 접근할 수 있다.

📌 역할

운영 체제의 주요 역할은 다음과 같다.

✅ 자원 관리
운영체제는 컴퓨터의 여러 자원들을 응용 프로그램에 나눠줌으로써 사용자가 원활하게 작업할 수 있도록 돕는다. 만약 자원을 요청한 프로그램이 여러 개라면 적당한 순서로 자원을 배분하고 적절한 시점에 자원을 회수해 다른 응용 프로그램에 나눠준다.

✅ 자원 보호
운영체제는 악의적인 사용자나 미숙한 사용자로부터 자원을 보호하는 역할도 한다. 특정 응용 프로그램이 다른 응용 프로그램의 영역을 침범할 수 없도록 한다.

✅ 하드웨어 인터페이스 제공
운영체제는 CPU, 메모리, 키보드, 마우스와 같은 다양한 하드웨어를 일관된 방법으로 사용할 수 있는 인터페이스를 제공한다. 덕분에 어떤 회사에서 만든 하드웨어인지 신경 쓸 필요가 없다.

✅ 사용자 인터페이스 제공
운영체제는 사용자가 운영체제를 편리하게 사용할 수 있도록 사용자 인터페이스를 지원한다.
ex) CLI, GUI

운영체제의 구성

📌 커널과 인터페이스

운영체제는 커널과 인터페이스로 구성되어 있다. 커널은 운영체제의 핵심 기능을 구현한 프로그램이고, 인터페이스는 사용자와 응용 프로그램에 인접해 커널에 명령을 전달하고 결과를 반환한다.

운영체제 관점에서 본 컴퓨터 구조는 다음과 같다. computer architecture 인터페이스를 통해 커널에 명령을 내리면 인터페이스가 그 결과를 전달해 주는 것이다.

그림에서 볼 수 있듯 커널은 인터페이스와 분리되어 있다. 따라서 같은 커널이라도 다른 인터페이스가 장착되면 사용자에겐는 다른 운영체제처럼 보인다. 대표적인 예시로 mac OS는 유닉스 계열 커널을 사용하면서도 직관적이고 미려한 GUI(인터페이스)를 사용해 많은 사람들이 이용하고 있다.

📌 시스템 호출(System Call)

System Call은 커널과 응용 프로그램 간의 인터페이스다. 응용 프로그램은 System Call을 통해 하드웨어 자원이나 운영체제의 서비스를 요청할 수 있다.

✅ 역할

  • 운영체제와 응용 프로그램 간의 통신 : 사용자 프로그램은 직접 하드웨어에 접근할 수 없으므로, 커널을 통해 간접적으로 하드웨어 자원을 제어하거나 데이터를 처리한다.
  • 보안과 안정성 보장: 시스템 호출은 커널 모드에서 실행되므로, 자원 접근을 제어하여 보안을 유지하고, 프로그램 간 간섭을 방지한다.
  • 운영체제 기능 제공: 파일 읽기/쓰기, 프로세스 생성/종료, 메모리 할당 등과 같은 기능을 애플리케이션이 사용할 수 있도록 지원한다.

✅ 주로 사용하는 System Call
🔹 프로세스 관리

  • fork(): 새로운 프로세스 생성

    • 현재 실행 중인 프로세스를 복제해 자식 프로세스 생성
  • exec(): 새로운 프로그램 실행

    • 현재 프로세스를 새로운 프로그램으로 변경
  • wait(): 자식 프로세스 종료 대기

    • 부모 프로세스가 자식 프로세스가 종료될 때까지 대기
  • _exit(): 프로세스 종료

    • 프로세스를 강제 종료

🔹 파일 관리

  • open(): 파일 열기
  • read(): 파일 읽기
  • write(): 파일 쓰기
  • close(): 파일 닫기

🔹 네트워크 관리

  • socket(): 소켓 생성
  • connect(): 서버에 연결

✅ 운영체제의 Dual Mode

🔹 사용자 모드

  • 일반 애플리케이션 프로그램이 실행되는 모드
  • 운영체제의 핵심 기능이나 하드웨어에 직접 접근할 수 없음
  • 제한된 명령어만 실행 가능
  • 보호된 영역(메모리, 하드웨어 등)에 접근할 수 없음

🔹 커널 모드

  • 운영체제가 실행되는 모드
  • 모든 하드웨어 자원(CPU, 메모리, 디스크 등)에 접근 가능
  • 모든 명령어 실행 가능
  • 프로세스 및 메모리 관리를 포함한 작업 수행

🔹 필요성

  • 보안 강화
  • 안정성 유지
  • 자원 보호
  • 시스템 제어 및 효율적인 운영

🔹 동작 과정

  1. 사용자가 실행한 일반 프로그램이 사용자 모드에서 실행
  2. 시스템 콜 또는 인터럽트 발생

    • 사용자가 파일을 열거나 새로운 프로세스를 생성하는 등의 작업을 하면 운영체제의 서비스 필요
  3. 커널 모드로 전환
  4. 요청된 작업 수행 후 사용자 모드로 복귀

응용 프로그램의 System Call 요청에 대한 흐름을 도식화하면 다음과 같다. system call

커널

📌 역할

✅ 프로세스 관리: 다양한 종류의 프로세스에 CPU를 배분하고 작업할 수 있는 환경을 만들어준다.

✅ 메모리 관리: 프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공한다.

✅ 파일 시스템 관리: 데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다.

✅ 입출력 관리: 필요한 입력과 출력 서비스를 제공한다.

✅ 프로세스 간 통신 관리: 공동 작업을 위한 각 프로세스 간 통신 환경을 지원한다.
커널의 핵심 기능은 유기적으로 얽혀 있다. 기능들을 어떻게 구현했는가에 따라 종류가 구분된다.

📌 종류

✅ 단일형 구조 커널(Monolithic)
단일형 구조 커널은 초창기 운영체제의 구조로, 커널의 핵심 기능을 구현하는 모듈이 구분 없이 하나로 구성되어 있다.

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

✅ 마이크로 구조 커널(Micro)
커널의 크기가 계속해서 커지고 필요한 하드웨어의 용량이 늘어남에 따라 커널 소스가 방대해졌다. 이러한 문제를 해결하기 위해 마이크로 구조 커널이 나오게 됐다.

마이크로 구조 커널의 운영체제는 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공한다. 그리고 많은 부분들이 사용자 영역에 구현되어 있다. 하지만 각 모듈이 독립적으로 동작하기 때문에 하나의 모듈이 실패하더라도 전체 운영체제에 영향을 주진 않는다. 또한 커널이 이식하기 쉽고 가벼워 CPU 용량이 작은 시스템에도 적용할 수 있다.

@Wonyu
Hello :) I'm Wonyu