운영체제

운영체제(Operating System, OS)는 컴퓨터 하드웨어와 응용 프로그램 사이에서 자원을 관리하고 실행 환경을 제공하는 핵심 시스템 소프트웨어입니다.

주요 역할

자원 할당 및 관리

운영체제는 CPU, 메모리, 보조기억장치, 입출력 장치와 등의 자원을 효율적으로 관리합니다.
일부 장치의 경우 운영체제가 장치 드라이버와 하드웨어 인터럽트 서비스 루틴을 제공하여 제어하며, 파일 시스템 관련 캐시(페이지 캐시, 버퍼 캐시) 같은 소프트웨어 캐시도 관리합니다.

CPU 스케줄링

운영체제는 실행 중인 모든 프로그램들이 공정하고 합리적으로 CPU를 할당받도록 CPU의 할당 순서와 사용 시간을 결정합니다.

메모리 관리

운영체제는 새롭게 실행하는 프로그램을 메모리에 적재하고, 종료된 프로그램을 메모리에서 제거합니다.
동시에 낭비되는 메모리 용량이 없도록 효율적으로 관리합니다.

파일/디렉터리 관리

운영체제는 보조기억장치를 효율적으로 활용하기 위해 파일 시스템을 제공합니다.

파일 시스템은 데이터를 파일 및 디렉터리 단위로 관리하며, 접근 권한, 계층적 구조, 메타데이터(생성일, 크기, 권한 등)도 함께 관리합니다.

프로세스 및 스레드 관리

운영체제는 동시다발적으로 실행되는 프로세스와 스레드를 제어하고, 필요한 자원을 적절하게 배분합니다.

여기에서 프로세스(Process)는 실행 중인 프로그램을 의미하며, 스레드는(Thread)는 프로세스를 이루는 실행의 단위입니다.

운영체제의 구조

메모리 영역 구조

운영체제는 메모리를 크게 커널 영역(Kernel Space)과 사용자 영역(User Space)으로 구분합니다.

  • 커널 영역
    • 운영체제의 핵심 기능(프로세스 관리, 메모리 관리, 파일 시스템, 드라이버 등)이 위치
    • 보안 및 안정성 확보를 위해 사용자 프로그램이 직접 접근할 수 없음
    • 하드웨어와 직접 상호작용
  • 사용자 영역
    • 응용 프로그램이 실행되는 공간
    • 각 프로세스는 독립된 사용자 영역을 가지고 있어, 다른 프로세스의 메모리를 침범할 수 없음
    • 하드웨어 자원에 직접 접근이 불가능하므로, 시스템 콜(System Call)을 통해 커널의 도움을 받아야 함

시스템 콜

시스템 콜(System Call)은 운영체제의 서비스를 제공받기 위한 수단(인터페이스)으로, 응용 프로그램이 커널 기능을 요청할 때 사용합니다.
이는 소프트웨어 인터럽트의 일종입니다.

운영체제에 따라 제공하는 시스템 콜의 종류와 개수는 다양합니다.

컴퓨터 내부에서 시스템 콜이 호출되면 다음과 같은 순서로 작업이 수행됩니다.

  1. 사용자 영역에서 시스템 콜(소프트웨어 인터럽트) 발생
  2. CPU가 현재 수행 중인 작업을 백업하고 커널 모드 전환
  3. 커널 영역 내에서 요청된 서비스 수행
  4. 사용자 모드로 전환 후 백업된 코드 실행 재개

운영체제는 CPU 명령어 실행 시 사용자 모드와 커널 모드를 구분하여 실행하며, 이것을 이중 모드(Dual Mode)라고 합니다.

  • 사용자 모드(User Mode)
    • 사용자 영역에 적재된 코드를 실행할 때의 실행 모드
    • 운영체제 서비스 요청 불가, 하드웨어 직접 접근 불가
  • 커널 모드(Kernel Mode)
    • 커널 영역에 적재된 코드를 실행할 때의 실행 모드
    • 운영체제 서비스 제공 가능, 모든 자원 접근 가능

시스템 콜을 통해 프로세스가 또 다른 프로세스를 생성하고, 이렇게 생성된 프로세스는 또 다른 프로세스를 생성할 수 있습니다.
많은 운영체제에서 프로세스들을 이렇게 계층적으로 관리합니다.
대표적으로 유닉스 계열의 운영체제에서 fork()가 있습니다.

새 프로세스를 생성한 프로세스를 부모 프로세스(Parent Process)라고 부릅니다.
부모 프로세스에 의해 생성된 프로세스를 자식 프로세스(Child Process)라고 부릅니다.

쉘(Shell)은 사용자와 운영체제 커널 사이의 인터페이스 역할을 합니다.
사용자의 명령어를 해석하고 실행하며, 스크립트를 통해 반복 작업을 자동화할 수도 있습니다.

  • CLI 기반 쉘: bash, zsh 등 (명령어 해석기 역할)
  • GUI 기반 쉘: Windows Explorer, macOS Finder 등

종류

  • Windows: GUI 중심, 일반 사용자 친화적
  • Linux/Unix: 서버 및 개발 환경에서 널리 사용
  • macOS: 애플 하드웨어와 통합된 Unix 계열 OS
  • 모바일 OS: Android, iOS

ComputerScience 카테고리 내 다른 글 보러가기

댓글남기기