OS

1. 운영체제란? - 패스트캠퍼스 백엔드 부트캠프 3기

gkss2tpt 2025. 2. 5. 15:11

1. 운영체제란?

  • 운영체제(OS) : 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 프로그램
  • 자원 : 시스템 자원의 줄임말로 컴퓨터 부품(하드웨어)을 뜻한다.
  • 운영체제 종류 : 윈도우, 맥OS, 리눅스, 안드로이드, IOS 등
  • 운영체제는 컴퓨터가 부팅될 때 메모리 내 커널 영역이라는 공간에 따로 적재되어 실행되며, 그외 나머지 영역을 사용자가 이용하는 응용 프로그램이 적재되는 영역 즉, 사용자 영역이라고 부른다.
  • 응용 프로그램(application software) : 사용자가 특정 목적을 위해 사용하는 일반적인 프로그램
  • 운영 체제의 역할
    • 자원 관리 : 운영체제는 실행할 프로그램을 메모리에 적재하고, 더 이상 실행되지 않는 프로그램을 메모리에서 삭제하며 지속적으로 메모리 자원을 관리한다.
    • 프로세스 관리 : 응용 프로그램이 실행되려면 반드시 CPU가 필요하며, 우선순위를 지정하는 것 역시 운영체제가 할일이다.
    • 파일관리, 입출력 장치 관리, 사용자 인터페이스 제공, 보안 및 권한 관리를 한다.

2. 운영체제를 알아야 하는 이유

  • 하드웨어와 프로그램을 더 깊이 이해하고 문제를 해결할 수 있는 능력을 갖추기 위함

3. 커널

  • 커널 : 운영체제의 핵심 부분으로 시스템 자원을 관리하고 이를 프로그램에 할당해준다.
  • 사용자 인터페이스(UI) : 사용자가 컴퓨터와 상호작용할 수 있는 통로(커널에 포함되지않음)
    • 그래픽 유저 인터페이스(GUI) : 그래픽을 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스
      마우스, 터치스크린 등을 이용(윈도우, 맥OS 등)
    • 커맨드 라인 인터페이스(CLI) : 명령어를 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스
      주로 키보드를 통해 명령어를 입력하고, 그 결과를 텍스트로 출력받는다.(CMD, PowerShell 등)
    • 이러한 사용자 인터페이스는 운영체제가 제공하는 서비스이지만, 이는 컴퓨터와 상호작용하기 위한 통로일 뿐 커널에 속한 기능이 아니다.

4. 이중 모드와 시스템 호출

  • 운영체제는 사용하자 실행하는 응용 프로그램이 하드웨어 자원에 직접 접근하는 것을 방지하여 자원을 보호하고
    응용 프로그램의 요청을 받은 운영체제는 응용 프로그램 대신 자원에 접근하여 요청한 작업을 수행한다.
  • 이중 모드(dual mode) : CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식으로
    CPU는 명령어를 사용자 모드 또는 커널 모드로 실행할 수 있다.
  • 사용자 모드(user mode) : 운영체제 서비스를 제공받을 수 없는 실행 모드로 커널 영역의 코드를 실행할 수 없는 모드
    • 일반적인 응용 프로그램이 실행되는 모드로 사용자 모드로 실행 중인 CPU는 하드웨어 자원에 접근하는 명령어를 실행할 수 없다.
  • 커널 모드(kernel mode) : 운영체제 서비스를 제공받을 수 있는 실행 모드로 커널 영역의 코드를 실행할 수 있는 모드
    • CPU가 커널 모드로 명령어를 실행하면 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행할 수 있다.
  • 플래그 레지스터 : CPU내부에 있는 특수한 레지스터로, 연산의 결과나 시스템 상태를 나타내는 여러 비트들을 포함하고 있다.
  • 슈퍼바이저 플래그 : CPU가 커널 모드인지 사용자 모드인지를 나타내는 플래그로 플래그 레지스터에 속한다.
  • 시스템 호출(system call) : 운영체제 서비스를 제공받기 위한 요청
  •  소프트웨어 인터럽트 : 소프트웨어가 실행 중에 발생시키는 인터럽트로, 주로 프로그램 내에서 특정 조건에 따라 CPU에 인터럽트를 요청하여 하드웨어나 운영체제의 서비스를 요청
  • 인터럽트 : CPU가 현재 실행 중인 작업을 잠시 중단하고, 다른 중요한 작업을 처리하도록 하는 메커니즘
  • 하드웨어 인터럽트 : 하드웨어 장치가 CPU에 신호를 보내어, CPU가 현재 작업을 중단하고 하드웨어의 요청을 처리하도록 하는 것
  • 시스템 호출 처리 순서와 인터럽트 처리 순서
    • 시스템 호출 : 프로그램 -> 시스템 호출 -> 소프트웨어 인터럽트 -> 커널 모드 -> 시스템 호출 처리 -> 결과 반환 -> 프로그램 계속 실행
    • 인터럽트 : 하드웨어/소프트웨어 인터럽트 발생 -> 현재 작업 중단 -> 인터럽트 서비스 루틴 실행 -> 처리 완료 후 원래 작업으로 복귀

5. 운영체제의 핵심 서비스

  • 프로세스 관리, 자원 접근 및 할당, 파일 시스템 관리
  • 프로세스 관리
    • 프로세스(process) : 실행 중인 프로그램
    • CPU는 한번에 하나의 프로세스만 실행할 수 있어 프로세스들을 번갈아 가며 실행한다.
  • 자원 접근 및 할당
    • 모든 프로세스는 실행을 위해 자원을 필요로 한다.
    • CPU : 한번에 하나의 프로세스에만 할당
      • CPU스케줄링 : 여러 프로세스가 동시에 실행되도록 보장하고, 각 프로세스에 적절한 시간만큼 CPU를 할당
    • 메모리 : 프로그램 실행 중 데이터를 저장하고, 필요한 때마다 접근한다.
    • 메모리에 적재된 프로세스들은 크기, 주소가 제각각인데, 같은 프로세스라도 실행할 때마다 적재되는 주소가 달라지기도 해서 운영체제는 새로운 프로세스가 적재될 때마다 어느 주소에 적재해야 할지 결정 한다.
      즉 운영체제는 물리적 메모리와 가상 메모리 간의 주소 변환을 담당한다.
    • 입출력장치 : 입출력 장치는 컴퓨터 외부와의 데이터를 주고받는 중요한 자원
      인터럽트 서비스 루틴 : 입출력 장치가 발생시키는 이벤트에 대해 빠르고 효율적으로 처리하는 역할
  • 파일 시스템 관리
    • 파일 시스템 : 파일 시스템은 데이터를 저장하고, 사용자나 프로그램이 그 데이터를 손쉽게 읽고 쓸 수 있도록 돕는 시스템
    • 파일 시스템 관리 : 운영체제는 파일 시스템의 추상화 역할을 하며, 사용자와 하드웨어 간의 중개 역할
    • 추상화역할 : 운영체제가 파일 시스템의 복잡한 내부 구현을 사용자나 애플리케이션 프로그램에게 숨기고, 단순하고 일관된 인터페이스를 제공한다.