Post

[운영체제] 운영체제 개요

운영체제

  • 실행할 프로그램에 자원을 할당하고, 프로그램이 올바르게 시행되도록 돕는 프로그램이다.
    • 시스템 자원: 프로그램 실행에 필요한 요소들로, CPU, 메모리, 보조기억장치, 입출력장치 등 컴퓨터 부품
  • 메모리의 커널 영역과 사용자 영역 중 커널 영역에 (주로) 적재된다.
    • 사용자 영역에는 사용자가 이용하는 응용 프로그램들이 적재된다.
  • 프로그램은 하드웨어가 실행하며, 그 하드웨어를 조작하는 프로그램이 운영체제이다.
    • 운영체제를 공부함으로써 하드웨어와 프로그램을 더 잘 이해하게 된다.

커널

  • 리눅스 운영체제의 소스코드는 2700만줄이 넘을 만큼, 운영체제는 규모가 매우 큰 프로그램이다.
  • 프로세스, 메모리, 장치 관리, 시스템 호출 및 보안과 같이 핵심 서비스를 담당하는 부분을 커널이라고 한다.
  • 사용자 인터페이스는 운영체제의 일부지만 커널에 속하지 않는다. 즉, 운영체제의 핵심 기능이 아니다.
    • 사용자 인터페이스에는 그래픽 유저 인터페이스(GUI)와 커맨드 라인 인터페이스(CLI)가 있다.
  • 커널만이 운영체제인것은 아니지만 보통 동의어로 쓰인다.

이중모드와 시스템 호출

  • 사용자가 실행하는 프로그램은 자원에 직접 접근할 수 없고 운영체제를 통해서만 접근할 수 있다.
    • 직접 자원에 접근하면, 프로그램간 충돌이 발생해서 저장한 내용이 덮어쓰워지는 등의 위험이 있다.
  • 운영체제가 응용 프로그램 대신 자원에 접근하여 요청한 작업을 수행하는데, 이것은 이중 모드로써 구현된다

이중 모드

  • CPU가 명령어를 실행하는 모드를 크게 사용자 모드커널 모드로 구분하는 방식을 말한다.
    • 사용자 모드: 운영체제 서비스를 제공받을 수 없는 실행 모드로 커널 영역의 코드 실행, 자원 접근도 불가능하다.
    • 커널 모드: 운영체제 서비스를 제공받을 수 있어 자원 접근을 비롯한 모든 명령어를 실행 가능하다.
  • 시스템 호출(시스템 콜)을 하면 커널 모드로 전환된다.
    • 시스템 호출은 입출력 장치가 아닌 특정 명령어에 의해 발생하는 소프트웨어 인터럽트이다.
    • 운영체제마다 다르게 정해져 있다.
  • 자원(하드웨어) 접근이 끝나면 다시 사용자 모드로 복귀한다.

운영체제의 핵심 서비스

프로세스 관리

  • 프로세스: 메모리에 적재되어 지금 실행중인 프로그램
  • 작업 관리자에서 볼 수 있듯 동시에(사용자가 눈치채지 못하도록 빠르게 번갈아가며) 실행되는 프로세스는 매우 많다.
  • 다양한 프로세스들을 관리하고 실행한다.
  • 프로세스와 스레드, 프로세스 동기화, 교착상태 해결 등을 수행한다.

자원 접근 및 할당

  • CPU 접근 및 할당 → CPU 스케줄링(어떤 프로세스를 먼저, 얼마나 오래 실행할지)
  • 메모리 접근 및 할당 → 비어있는 메모리 공간을 찾고 효율적으로 적재, 적재 없이도 실행(페이징, 스와핑)
  • 입출력 장치 접근 및 할당 → 인터럽트 서비스 루틴(커널, 코드) 제공

파일 시스템 관리

  • 파일 단위로 저장 장치에 보관
  • 폴더 단위로 저장 장치에 보관
This post is licensed under CC BY 4.0 by the author.