운영체제1-(2)-컴퓨터 시스템의 구성 및 구조

mingmin·2021년 7월 14일
0

운영체제

목록 보기
2/4

1. 컴퓨터 시스템의 구조

컴퓨터 시스템 구조


컴퓨터 시스템은 하나 이상의 CPU와 공유 메모리에 대한 액세스를 제공하는 공통 버스에 연결된 여러 디바이스 컨트롤러로 구성된다.

  • CPU와 디바이스 컨트롤러는 메모리 사이클을 두고 경쟁하면서 병렬로 실행할 수 있다.
  • 공유 메모리에 대한 순차적 액세스를 보장하기 위해 메모리 컨트롤러는 메모리에 대한 액세스를 동기화한다.

2. 컴퓨터가 실행되는 과정

  1. 전원을 키면 초기 프로그램인 부트스트랩 프로그램이 실행된다.

    • 부트스트랩: 컴퓨터 하드웨어 내의 ROM 또는 EEPROM에 저장됨

      → CPU 레지스터부터 디바이스 컨트롤러까지, 시스템의 모든 것을 초기화하고 부트로더를 실행함

      → 부트로더는 운영체제 커널을 찾아 메모리에 로드한다.

  2. 커널이 로드/실행되면 시스템과 커널 사용자에게 서비스를 제공할 수 있다.

    • 일부 서비스는 커널 외부에서 제공되는데, 이들은 부팅 시 메모리에 로드되는 시스템 프로세스나 시스템 데몬이다.
    • UNIX의 경우 첫 번째 시스템 프로세스는 'init'이고, 이것은 또 다른 데몬들을 실행시킨다.
  3. 위의 과정이 끝나면 시스템이 부팅되고, 시스템은 이벤트가 발생하기를 기다리게 된다.

3. 이벤트 발생

  • 이벤트는 일반적으로 하드웨어 또는 소프트웨어의 '인터럽트'에 의해 발생
  • 당장 처리해야 하는 일이 생겨서 기존 작업을 잠시 중단해야 하는 경우 인터럽트 신호를 보냄
  • 커널은 작업을 멈추고 인터럽트를 처리한 뒤 다시 기존 작업으로 돌아감
  • 소프트웨어 인터럽트: 트랩(Trap)이라고 함
    • Exception: 프로그램이 허용되지 않은 연산을 수행하려고 할 때 자동으로 발생하는 인터럽트(ex. 0으로 나누기, 권한 없는 메모리 참조 등)
    • System Call: 프로세스가 운영체제의 서비스를 요청하기 위해 커널의 함수를 호출하는 경우 발생하는 인터럽트
  • 하드웨어 인터럽트: 시스템 버스(System Bus)를 통해 CPU에 신호를 보냄으로써 발생시킴

4. 인터럽트의 구조

  • CPU가 인터럽트 신호를 받으면 어떤 루틴을 실행해야 하는지 담겨있는 메모리의 주소를 찾는데, 이 위치는 '인터럽트 벡터(Interrupt Vector)'에 저장되어 있음

  • 인터럽트 벡터: 인터럽트를 처리할 수 있는 '서비스 루틴(Service Routine)'들의 주소를 가지고 있는 공간

  • 서비스 루틴: 인터럽트 핸들러라고도 함

    → 인터럽트를 처리하는 방식이 저장되어 있다.

인터럽트 처리 과정

  1. 인터럽트가 발생하면 CPU는 하던 작업을 멈춘다.
  2. 그 뒤 인터럽트 벡터를 통해 어떤 루틴을 실행해야 하는지 담겨 있는 메모리의 주소를 알아낸다.
  3. 해당 주소로 가 루틴을 실행한다.
  4. 일을 다 처리한 후 진행중이었던 작업으로 돌아온다.

5. Storage Structure

  • 프로그램의 실행

    → 실행기가 기억장치에서 실행파일을 가져오고, 커널이 이것을 메모리에 할당해 실행시킴

  • 모든 프로그램은 메인 메모리에 로드되어 실행되며, 메인 메모리는 보통 RAM(Random-Access Memory)라고 부름

  • 하지만 RAM은 너무 작고, 휘발성 메모리이다. → 따라서 보조기억장치가 필요

  • 비휘발성 기억장치(보조기억장치): 자기테이프, 광학디스크, 자기디스크, SSD

  • 휘발성 기억장치: 메인 메모리, 캐시, 레지스터

기억장치 단계-위로갈수록 빠르고 비쌈


6. I/O Structure

  • 디바이스 컨트롤러: 자신이 제어하는 주변 장치와 로컬 버퍼 간에 데이터를 이동하는 역할을 함

  • 운영체제에는 각 디바이스 컨트롤러를 제어하기 위한 디바이스 드라이버가 있음

  • 입출력 과정

    1. I/O 작업을 수행하기 위해 디바이스 드라이버는 디바이스 컨트롤러 내에 적절한 레지스터를 로드한다.
    2. 디바이스 컨트롤러는 레지스터의 내용을 검사하여(ex. 키보드로부터 문자 읽기) 수행할 작업을 결정한다.
    3. 디바이스 컨트롤러가 디바이스에서 로컬 버퍼로 데이터를 전송한다.
    4. 데이터 전송이 완료되면 디바이스 컨트롤러는 인터럽트를 통해 디바이스 드라이버에게 작동이 완료되었음을 알린다.
    5. 디바이스 드라이버가 운영체제에 제어 권한을 되돌려 준다.
    6. 이 때 입력받은 데이터나 상태 정보를 넘겨주기도 한다.
  • 위와 같은 과정은 작은 양의 데이터에는 괜찮지만 많은 양의 데이터가 이동할때 오버헤드가 크다.

    → 이것을 해결하기 위해 DMA(Direct Memory Access)가 사용된다.

  • DMA: 주변장치들이 메모리에 직접 접근하여 읽거나 쓸 수 있도록 하는 기능

    → CPU의 개입 없이 I/O장치와 기억장치 사이의 데이터를 전송함

컴퓨터 작동 방식


7. Computer-System Architecture

현대 컴퓨터 시스템은 기본적으로 폰 노이만 구조를 따른다.

  1. Single-Processor Systems

    → 하나의 메인 CPU만 탑재

  2. Multiprocessor Systems

    → 2개 이상의 프로세서를 가지고 있음

  • 멀티 프로세서 시스템의 장점

    1. 처리량(throughput)의 증가: 프로세서가 늘어나면 더 빠르게 연산 수행 가능

    2. 규모의 경제(Economy of Scale): 멀티 프로세서 시스템은 주변장치를 공유할 수 있기 때문에 여러 대의 싱글 프로세서 시스템을 구축하는 것보다 경제적이다.

    3. 안정성 증가: 하나의 프로세서가 작동을 멈춰도 느려질 뿐 전체 시스템은 멈추지 않는다.

      → 성능이 나빠지지만 작동은 가능하도록 하는 것을 우아한 성능저하(Graceful degradation)이라고 부른다.

      → 이렇게 성능을 저하함으로써 작업을 계속 유지하는 시스템을 장애 허용 시스템(Fault tolerant)라고 한다.

비대칭 멀티프로세싱(AMP, Asymmetric multiprocessing)

  • 보스 프로세서가 시스템을 제어하고, 다른 프로세서들은 보스의 지시를 받는 방식
  • 부하 분산(Loadbalancing)을 효율적으로 할 수 있음
  • 보스 프로세서가 작동을 멈추면 다른 프로세서들도 멈춤

대칭 멀티프로세싱(SMP, Symmetric Multiprocessing)

대칭 멀티프로세싱의 구조


  • 모든 프로세서들은 하나의 메모리를 공유함
  • 동일한 작업을 병렬적으로 수행
  • 어떤 프로세서에 이상이 생겨 작동을 멈춰야 한다면 하던 작업을 다른 프로세서들에게 나눠주고 자신만 재부팅
  • 비대칭 멀티프로세싱의 단점을 보완
  • 대부분의 컴퓨터 시스템은 대칭 멀티프로세싱을 사용

참고자료

  • Peter B. Galvin, Abraham Silberschatz, Greg Gagne - operating system concepts 9th edition
profile
회고하는 공간.

0개의 댓글

관련 채용 정보