운영체제

정의

하드웨어 자원을 제어하고 프로그램에 대한 일반적인 서비스를 지원하는 시스템 소프트웨어를 말합니다.

구조

드라이버 > 커널 > 시스템 콜 > 사용자 인터페이스

목적

  • 사용자에게 컴퓨터 프로그램을 쉽고 효율적으로 실행할 수 있는 환경을 제공합니다.
  • 컴퓨터 시스템 하드웨어 및 소프트웨어 자원을 여러 사용자 간에 효율적으로 할당, 관리, 보호합니다.
  • 제어 프로그램으로서 사용자 프로그램의 오류나 잘못된 자원 사용을 감시하고, 입출력 장치 등의 자원에 대한 연산과 제어를 관리합니다.

역할

  1. CPU 스케줄링과 프로세스 관리
    • CPU 자원의 할당, 프로세스의 생성/삭제/자원 할당/반환을 관리합니다.
  2. 저장장치 관리
    • 메모리: 메모리의 할당, 사용 방법 등을 관리합니다.
    • 디스크: 파일을 어떻게 저장할 것인지 관리합니다.
  3. I/O 디바이스 관리
    • 외부 입/출력 장치와 어떻게 소통할지 관리합니다.
  4. 사용자 관리
    • 사용자간 접근 권한, 자원의 활용등을 관리합니다.

시스템 콜

정의

  • 시스템 콜

    유저 프로그램이 커널의 서비스를 받기 위해 사용하는 인터페이스

  • 커널 모드

    모든 자원에 접근, 명령이 가능한 모드

  • 유저 모드 유저가 접근 가능한 영역, 제한적인 자원 접근을 허용

필요성

유저 프로그램은 다양한 목적에서 만들어 질 수 있습니다. 저장된 데이터를 마음대로 삭제하기도 하고, 웹캠을 마음대로 키고 끌 수도 있습니다. 이런 상황을 최대한 막기위해서 커널 모드와 유저 모드를 구분합니다.

구현

  • modebit 유저 모드와 커널모드를 구분하는 플래그 값

질문들

운영체제는 저장장치를 어떻게 관리하나요?

  • 시스템 콜을 이용해 저장장치에 대한 처리를 진행합니다. 이를 통해 컴퓨팅 자원에 대한 접근을 제어할 수 있습니다.
  • 가상 메모리를 사용하여 사용자 프로그램이 실재 자원을 고려하지 않고, 일관된 환경에서 동작할 수 있다는 가정을 제공합니다.

우리는 어떻게 입출력 장치를 사용하나요? (인터럽트 구조)

  • 입력
    1. 입력이 일어나면 입력 장치 앞에 있는 디바이스 컨트롤러가 인터럽트를 발생시킵니다.
    2. CPU는 현재 작업 상태를 저장하고, 인터럽트 처리를 위한 루틴을 찾아 실행합니다.
  • 출력
    1. 출력이 일어나야 하는 출력 장치 앞에 있는 디바이스 컨트롤러가 현재 데이터에 출력이 가능하다고 인터럽트를 겁니다.
    2. CPU는 지정된 I/O 레지스터에 출력할 데이터를 출력합니다.

참조

  1. 위키피디아, 운영체제
  2. 주홍철, 면접을 위한 CS 전공지식 노트
  3. 용감한 형제들, 운영체제
  4. 피그브라더, [Chapter 8] IO - 입력 및 출력 장치
  5. BlockDMast, [운영체제] 유저모드와 커널모드에 대해서