티스토리 뷰

개요

운영체제

  • 컴퓨터의 하드웨어 바로 윗단에 설치되는 소프트웨어이다.
  • 컴퓨터 시스템의 하드웨어 자원을 효율적으로 관리하는 역할을 한다.
    • 주어진 자원으로 최대한의 성능을 내면서 특정 사용자 혹은 프로그램이 지나친 불이익을 받지 않도록 한다.

주요 역할

  • 사용자에게는 편리한 인터페이스와 환경을 제공하는 역할을 한다.
  • 운영체제 자신을 보호하는 역할을 가진다. (보안적인 측면)

 

운영체제의 분류

시분할 시스템

  • 여러 작업을 수행할 때 컴퓨터의 처리 능력을 일정한 시간 단위로 분할해 사용하는 방식이다.
  • 현대의 범용 컴퓨터는 대부분 시분할 방식을 사용한다.
  • 다중 프로그래밍 방식과 결합하여 모든 작업이 동시에 진행되는 것처럼 대화식 처리가 가능하다.

다중 프로그래밍 시스템(multi-programming system)

  • 하나의 CPU와 주기억장치를 이용하여 여러개의 프로그램을 동시에 처리하는 방식이다.
  • 입출력 장치가 일을 하는 동안 cpu가 쉬는 것(일괄 처리 시스템)이 아니라 다른 프로그램에 대해서 일을 계속 하기 때문에 cpu 사용 효율이 증가한다.

대화형 시스템(interactive system)

  • 여러 프로그램들을 같이 수행 중 각 프로그램에 대한 키보드 입력의 결과를 곧바로 화면에 보여 주는 시스템이다.

다중 처리기 시스템(multi-processor system)

  • 하나의 시스템에 여러 개의 프로세서를 두어 하나의 작업을 각 처리기에게 할당하여 수행하도록 하는 시스템이다.
  • 여러 작업을 동시에 처리하여 실행 시간이 감소되고 전체 효율을 향상된다.
  • 하나가 고장 나도 다른 프로세서들에 의해 고장난 프로세서의 작업을 대신 수행하며 장애극복이 가능하다.

 

커널과 시스템 콜

시스템 콜

  • 운영체제는 커널 모드(Kernel Mode)와 사용자 모드(User Mode)로 나뉘어 구동된다.
  • 운영체제에서 프로그램이 구동되는데 있어 파일을 읽어 오거나, 파일을 쓰거나, 혹은 화면에 메시지를 출력하는 등 많으 부분이 커널 모드를 사용한다. 시스템 콜은 이러한 커널 영역의 기능을 사용자 모드가 사용 가능하게, 즉 프로세스가 하드웨어에 직접 접근해서 필요한 기능을 사용할 수 있게 해준다.
  • OS가 제공하는 이러한 인터페이스를 '시스템 콜 (system call)' 이라고 한다.

커널

  • 운영체제처럼 규모가 큰 프로그램이 모두 메모리에 올라가면 한정된 메모리 공간이 낭비가 심할 것이다. 따라서 운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고, 그렇지 않은 부분은 필요할 때 메모리에 올려서 사용하게 된다.
  • 메모리에 상주하는 운영체제의 부분을 kernel(커널)이라고 한다.
  • 커널은 메모리에 상주하는 부분으로써 운영체제의 핵심적인 부분을 뜻한다.

커널모드

  • 운영체제(OS)가 CPU를 사용하는 모드이다.
  • 시스템 콜을 통해 커널모드로 전환이 되면 운영체제는 하드웨어를 제어하는 명령어(Privileged Instructions)를 실행한다.
  • Privileged Instructions는 사용자 모드에서 실행되면 exception이 발생한다.

유저모드

  • 사용자 모드에서 사용자 애플리케이션 코드가 실행된다.
  • 사용자가 접근할 수 있는 영역에 제한이 있기 때문에 해당 모드에서는 하드웨어(디스크, I/O 등)에 접근할 수 없다. 접근을 위해서는 '시스템 콜(System Call)'을 사용해야 한다.

 

폴링과 인터럽트

폴링

  • CPU가 다른 프로세스를 실행하는 동안 디바이스로 부터 발생하는 이벤트들을 처리하는 두 가지 방법중 하나이다.
  • Polling은 CPU가 현재 하던 일을 멈추고 중요한 일에 반응하도록 멈추게 한다.
  • 자원이 폴링 신호를 받으면 자신의 상태를 적어놓을 수 있는 곳에 저장시키고, CPU는 폴링 때 그것을 읽어보는 방식이다.
  • 아무 일이 없어도 CPU는 폴링에 일정 시간을 들여야 한다. 각 자원은 직전 폴링 이후 변화된 자신의 상태를 다음 폴링 때까지는 알릴 수 없다. 이러한 이유로 잘 사용되지 않는다.

인터럽트

  • 각 자원들이 능동적으로 자신의 상태 변화를 CPU에 알리는 방식이다.
  • CPU는 따로 시간을 들이지 않아도 되고, 자원들은 변화가 발생하면 즉시 알려 처리할 수 있다.

인터럽트의 종류

  • 하드웨어 인터럽트
    • 하드웨어 자원 즉, 장치 또는 주변 장치들로부터의 인터럽트이다.
  • 소프트웨어 인터럽트
    • 트랩
      • CPU 스스로 자신에게 인터럽트하는 경우이다.
      • 실행 중인 명령어 때문에 생기는 일이므로 소프트웨어 인터럽트이다. 예를 들어 0으로 나누는 등의 명령어 오류가 있다.
    • 시스템 호출
      • 입출력 명령어를 커널 모드에서 진행하는 경우. 즉, 사용자 모드에서 커널 모드로 전환하는 경우이다.

 

Direct Memory Access

DMA

  • CPU 이외에 메모리 접근이 가능한 장치이다.
  • 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용한다.
  • DMA는 일종의 컨트롤러로서, CPU가 주변 장치들의 메모리 접근 요청에 의해 자주 인터럽트당하는 것을 막아준다. (인터럽트를 통한 오버헤드가 줄어든다.)
  • DMA를 사용하게 되면 로컬 버퍼에서 메모리로 읽어오는 작업을 CPU가 담당하는 것이 아니라, DMA가 대행함으로써 CPU는 원래 하던 작업을 멈추고 인터럽트를 처리할 필요가 없어진다.

 

I/O 방식의 분류

동기식 I/O

  • 입력이나 출력을 요청한 후에 그 작업이 완료될 때까지 기다리는 방식이다.
  • 동기식 I/O를 사용하면 작업이 끝날 때까지 다른 작업을 수행할 수 없다.
  • 구현이 간단하지만, 성능이 저하된다.

비동기식 I/O

  • 입력이나 출력을 요청한 후에 바로 다른 작업을 수행하는 방식이다.
  • I/O 작업을 별도의 스레드나 프로세스에 위임하고, 메인 스레드나 프로세스는 다른 작업을 계속한다. 이때 비동기식 I/O를 사용하면 파일 작업이 완료되면 콜백 함수나 이벤트를 통해 결과를 받아온다.
  • 성능과 응답성을 동기식에 비해 높일 수 있다.

'학습 내용 > 학습 정리' 카테고리의 다른 글

운영체제 - CPU 스케줄링  (0) 2024.01.25
운영체제 - 프로세스 vs 스레드  (0) 2024.01.18
MySQL의 Join 기법  (2) 2024.01.11
Database Key  (0) 2024.01.11
스프링 - 2022-4-13  (0) 2022.04.13
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함