Posts 운영체제 정리 1 - 개요
Post
Cancel

운영체제 정리 1 - 개요


Contents



컴퓨터 시스템


기본 구성요소

  • 처리기(processor) : 컴퓨터의 동작을 제어하고 데이터를 처리
  • 주기억장치(Main memory) : 데이터와 프로그램을 저장하는 공간, 휘발성
  • 입출력 모듈(I/O module) : 컴퓨터와 다양한 외부 장치 사이의 데이터 이동 담당
  • 시스템 버스(System bus) : 처리기, 주기억장치, 입출력 모듈간의 통신 제공

제어 및 상태 레지스터(Control and Status Registers)

  • 프로그램 카운터(Program Counter:PC) : 다음에 실행할 명령의 주소를 저장
  • 명령어 레지스터(Instruction Register:IR) : 가장 최근에 실행한 명령어를 저장
  • 메모리 주소 레지스터(Memory Address Register:MAR) : 메모리에서 가져올 데이터의 주소를 저장
  • 메모리 버퍼 레지스터(Memory Buffer Register:MBR) : 메모리에 기록되거나, 가장 최근 읽은 데이터를 저장
  • 입출력 주소 레지스터(I/O Address Register:I/O AR) : 입출력 장치의 주소를 저장
  • 입출력 버퍼 레지스터(I/O Buffer Register:I/O BR) : 입출력 모듈과 CPU 간에 주고 받는 데이터를 일시적으로 저장
  • 프로그램 상태 단어(Program Status Word:PSW) : 프로그램들이 실행되면서 발생하는 상황 정보를 저장
  • 누산기(Accumulator:AC) : 산술 및 논리연산을 수행한 중간 값을 임시적으로 저장

명령어 수행 사이클

명령어의 수행은 Fetch, Execute 두 단계로 나뉘어서 수행된다.
Fetch 단계에서는 다음에 수행될 명령어, 즉 PC++을 반입한다.
Execute 단계에서는 반입된 명령어를 IR에 적재하여, 처리기가 수행할 작업들을 명시한다.
처리기에서는 IR에 적재된 명령어를 수행한다.

Interrupts

인터럽트란 CPU가 프로그램을 실행하고 있을 때, 예외 상황이 발생하여 처리가 필요한 경우에 CPU에게 전달하여 처리할 수 있도록 하는 것을 의미한다.

\(\rhd\) 인터럽트 종류

  1. 프로그램에서 오류가 발생한 경우(ex. Overflow, 0으로 나눗셈 등)
  2. 처리기 내의 타이머에 의해 생성
  3. 입출력 장치의 정상 종료 및 에러에 의해 생성
  4. 시스템에 문제가 발생한 경우

\(\rhd\) 인터럽트를 포함한 명령어 사이클

인터럽트가 포함되었을 때 위의 명령어 수행 사이클에서 Interrupt 단계가 추가 된다.
전체 사이클은 아래 그림과 같다.

Terms

\(\rhd\) 인터럽트 처리 과정

인터럽트를 처리하는 과정을 따라가보면 다음과 같은 순서로 이루어진다.

  1. 다른 하드웨어나 소프트웨어에서 인터럽트를 발생시킨다.
  2. 프로세서가 현재 진행 중인 명령어의 실행을 완료한다.
  3. 프로세서가 인터럽트 확인 신호를 보낸다.
  4. 프로세서가 PSW와 PC의 정보를 제어 스택에 저장해둔다.
  5. 프로세스는 인터럽트에 해당하는 새로운 PC 값을 적재한다.
  6. 프로세스의 나머지 상태정보들을 저장해둔다.
  7. 발생한 인터럽트를 처리한다.
  8. 인터럽트 처리가 완료되면, 이전 상태정보들을 다시 복구한다.
  9. 스택으로부터 PSW와 PC값을 복구한다.

메모리 계층 구조(Memory hierarchy)

메모리를 레지스터, 캐시, 메인메모리, 하드디스크 등으로 나눠놓은 계층 구조이다.
뒤로 갈수록 속도가 느리고 가격이 저렴한 대신, 용량이 크다.

  • 참조 지역성(Locality of reference)

프로그램이 수행되는 동안 명령어와 데이터에 대한 프로세서의 메모리 참조는 인근 지역으로 몰리는 경향이 있다.

캐시 메모리(Cache Memory)

모든 명령어 사이클 과정에서 프로세스는 명령어를 가져오기 위해 메모리에 최소 한번 이상 접근을 해야한다.
이 때 프로세스의 레지스터들의 속도에 비해 메모리의 속도가 현저하게 느리기 때문에 전반적인 성능 저하를 야기한다.
이러한 문제를 어느정도 개선하기 위해 등장한 것이 캐시 메모리이다.

캐시 메모리는 프로세서와 메인 메모리 사이의 중간 다리 역할을 수행한다.
메인 메모리의 일부 내용의 복사본을 가지고 있다가, 프로세서에서 메인 메모리의 워드를 읽으려 할 때, 해당 워드가 캐시에 있는지 확인하고 있다면, 메인 메모리에 접근하는 시간보다 빠르게 해당 워드를 가져올 수 있게 된다.

이 때 적용되는 것이 참조 지역성의 원리이다.
캐시 메모리는 특정 메모리 참조를 위해 해당 블록의 데이터를 통채로 가져오면, 이 후 참조는 해당 블록 내에서 이루어질 확률이 높다.
캐시 메모리가 가득 차있을 경우 이를 교체하는 방법에 관한 알고리즘들은 후에 다루도록 하겠다.

운영체제 개요

운영체제가 제공하는 서비스

  1. 프로그램 개발(운영체제 상에서 접근할 수 있는 유틸리티 프로그램의 형태로, 응용 프로그램 개발 도구라는 명목으로 제공된다)
  2. 프로그램 실행(운영체제는 사용자를 대신하여 프로그램을 실행하는데 필요한 자원들을 스케쥴링한다)
  3. 입출력 장치 접근(사용자가 단순히 읽기 쓰기 관점에서 입출력장치를 사용할 수 있도록 해준다)
  4. 파일 접근 제어
  5. 시스템 접근(자원과 데이터를 안전하게 지키며, 동시 접근을 관리 한다)
  6. 에러 탐지 및 응답(운영체제는 발생하는 에러로 인한 영향을 최소화하면서 에러 조건을 제거할 수 있도록 응답해야한다)
  7. Accounting(여러 자원의 사용 통계를 수집하고 응답 시간과 같은 성능 척도들을 모니터링 한다)

커널(Kernel)

커널은 메인 메모리 상에 있는 운영 체제의 일부를 의미하며, 가장 빈번하게 사용되는 기능들을 포함하고 있다.

This post is licensed under CC BY 4.0 by the author.