CS/OS

[OS]운영체제 기본 개념

frog-in-well 2022. 7. 28. 17:59

0. 운영체제란?

사용자와 여러 소프트웨어를 하드웨어와 연결하는 소프트웨어 계층

  • 좁은 의미 : 커널; 메모리에 상주하는 부분
  • 넓은 의미 : 각종 시스템 유틸리티를 포함한 개념

1. 운영체제의 목적

  • 컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공
    • 편리하게? : 각 사용자/프로그램들이 독자적인 컴퓨터에서 수행되는 것 같은 환경을 제공하기 위해 하드웨어 관련 일을 수행한다.
    • 프로그래머는 하드웨어의 동작에 대하여 몰라도 된다.
  • 자원을 효율적으로 관리
    • 자원? : CPU, 메모리, I/O
    • 효율적? : 형평성 있는 분배, 한정된 자원으로 최대 효율
    • how? : CPU 스케줄링, 메모리 관리, 디스크 스케줄링, 인터럽트&캐싱

2. 운영체제의 분류

  • 동시 작업 가능 여부 - single-tasking/ multi-tasking
    • multi-tasking → 자원 분배 문제 발생함.
  • 사용자의 수 - single user/ multi user
    • multi-user → 보안 문제 발생함.
  • 처리 방식 - 일괄 처리(batch processing) / 시분할(time-sharing) / 실시간(Realtime OS)
    • 일괄 처리 : 작업 요청을 일정량 모아서 처리하는 방식
    • 시분할 : 현대 컴퓨터의 처리 방식
    • 실시간 : deadline을 반드시 지켜야 한다. 원자로, 반도체, 미사일 등에서 사용

3. 운영체제의 기능

시스템 유틸리티(소프트웨어)는 컴퓨터의 하드웨어를 동작하고 접근할 수 있도록 한다. 부트 로더, 운영 체제, 장치 드라이버, 셸, 로더 등이 있다. 이들은 파일 관리, 파일 수정, 상태 정보 제공, 프로그래밍 언어 지원, 프로그램 로드 및 실행, 통신, 부팅과 관련된 백그라운드 서비스 등의 기능을 제공한다.

운영체제는 다음과 같은 기능을 제공한다.

  • 대부분의 운영체제는 UI를 제공한다.
  • 프로그램을 메모리에 로드하고 실행한다.
  • 프로그램이 직접 I/O와 관련된 제어를 할 수 없기 때문에, 운영체제는 입출력을 수행할 수 있는 수단을 제공해야 한다.
  • 파일과 디렉토리를 일고 쓰고 삭제한다.
  • 프로세스 간의 통신을 구현한다.
  • 여러 프로세스들에게 자원을 할당한다.
  • 어떠한 종류의 자원이 사용되는지 추적하고 기록한다.
  • 오류를 감지하고 수정한다.
  • 외부로부터 접근을 제한할 수 있다.

4. 운영체제의 구성

1. Mode bit

CPU에서 작업을 수행할 때 운영체제가 실행하는 것인지 사용자 프로그램이 실행하는 것인지 구분하기 위해서 사용한다.

  • 0 : monitor mode / 운영체제가 특권 명령을 내릴 수 있는 상태
  • 1 : user mode / 사용자 프로그램 실행

Interrupt 혹은 Exception 발생 시 monitor mode가 실행된다.

2. Timer

일정 시간 간격으로 interrupt를 발생시켜 CPU 독점을 방지하고 time sharing을 구현한다. 이를 위해 필요한 하드웨어다.

3. Device Controller

  • I/O 장치를 관리하는 일종의 작은 CPU
  • 작은 메모리 장치인 Local Buffer를 갖고 있다.
  • I/O 작업이 끝난 경우 하드웨어 인터럽트를 발생시킨다.

5. 커널

커널은 메모리에 상주하고 있는 운영체제의 일부이다. 커널은 CPU 스케줄링, 메모리 관리, 프로세스 관리, 파일 시스템 관리, 입출력 장치 관리, 인터럽트 처리, 네트워크 관리 등을 담당한다.

1. 커널의 종류

커널은 구조에 따라 모놀리식 커널, 마이크로 커널, 혼합형 커널 등으로 분류됩니다. 현대의 컴퓨터 시스템에서 하나의 구조를 엄격하게 채택하는 운영체제는 없지만 기본적인 구조는 아래와 같습니다.

  • 모놀리식 커널은 운영체제가 수행하는 기능을 하나의 커널이 모두 처리하는 방식입니다. 속도가 빠르지만 안정성 문제가 발생하게 됩니다. 리눅스의 커널이 모놀리식 커널입니다.
  • 마이크로 커널은 CPU 스케줄링, 메모리 관리와 같은 핵심적인 기능만 커널에 두고 기존의 커널이 갖고 있던 IPC, 장치 드라이버와 같은 기능들은 커널 위의 서버의 형태로 구성한 방식입니다. 서버를 추가하는 방식이기 때문에 기능을 추가하기 쉽고, 시스템이 안정적이지만, 서버 간의 통신에 오버헤드가 발생합니다. 맥의 커널이 마이크로 커널입니다.
  • 윈도우는 두 가지 방식을 혼합한 방식의 커널을 이용하고 있습니다.

출처

http://www.kocw.net/home/cview.do?cid=4b9cd4c7178db077

<Operating System Concepts> 10th ed. by A. Silberschatz