본문 바로가기

운영체제

[OS:Concepts] 컴퓨터 시스템의 구조

Structure of computer

컴퓨터의 연산

현대의 컴퓨터

  • 공유메모리에 접근을 제공하는 공통 버스에 의해 연결된 여러개의 장치들과 하나 이상의 CPU의 집합
  • 장치 제어기는 특정 장치를 관리 함
  • CPU와 장치 제어기가 메모리 사이클을 얻기위해 병렬 수행되며 제어 및 동기화를 위해 메모리 제어기가 제공됨

컴퓨터의 구동

  • 구동을 위한 초기 프로그램(bootstrap program)을 가지고 있음
    • 보통 펌웨어, 바이오스라고 칭함
    • EEPROM에 저장됨
    • CPU레지스터로부터 장치 제어기, 메모리 내용등 모든 것을 초기화
    • 운영체제의 적재 및 수행 방법을 알고 있음
  • 커널이 적재되고 실행되면 사용자에게 서비스를 제공할 수 있음
    • 일부 서비스는 시스템 프로그램으로 커널이 수행되는 동안 계속 수행되는 시스템 프로세스, 시스템 디먼이 됨
    • 완전히 적재되면 사용자로부터 event를 기다림
  • event가 발생하면 하드웨어 또는 소프트웨어로부터 발생한 인터럽트에 의해 신호가 보내짐
    • 하드웨어는 언제든 시스템버스를 통해 cpu에신호를 보내 인터럽트 발생 가능
    • 소프트웨어는 시스템 호출을 통해 가능
  • CPU가 인터럽트 되면, 하던일을 중단하고, 고정된 위치로 실행을 옮김
    • 고정된 위치는 보통 서비스 루틴이 위치한 시작 주소를 가지고 있음
    • 인터럽트 서비스 루틴이 실행
    • 인터럽트가 완료되면 기존 연산을 재개한다.
    • 인터럽트는 방해라고 할 수 있고 다른 프로세스로부터의 요청이라고 보면 될 듯
    • 최근의 구조는 시스템 스택에 복귀주소를 저장하여 pop하여 바로 원래 연산을 실행한다.

저장장치 구조

  • 명령을 가져올 땐 대부분 주 저장장치에서 가져온다.
  • 메모리는 load, store 명령을 통해 이루어진다.
    • cpu register에서 명령을 꺼내 store하고
    • ram에서 저장한 register 명령을 다시 load하여 연산한다.
  • 폰 노이만 구조 시스템의 실행되는 명령-실행 사이클
    • 메모리로 부터 명령을 인출해 instruction register에 저장
    • instruction register의 명령을 해독
    • 피연산자에 대해 명령을 실행한 후 결과를 메모리에 저장

입출력 구조

  • 장치 제어기에는 여러개의 장치들이 부착될 수 있다. SCSI 제어기는 7개 이상의 장치를 붙힐 수 있다.
  • 디바이스 드라이버 : 운영체제가 장치 제어기의 동작을 이해하고 일관된 인터페이스를 제공한다.
  • 입출력 연산
    • 디바이스 드라이버는 장치 제어기의 적절한 레지스터에 필요한 값을 저장
    • 취할 동작을 결정하기 위해 이들 레지스터의 내용을 조사
    • 제어기는 장치로부터 자신의 로컬 버퍼로 데이터 전송을 시작
    • 장치 제어기는 연산이 완료됬음을 인터럽트를 이용하여 디바이스 드라이버에게 통보
    • 디바이스 드라이버는 제어를 운영체제에 반환하고 입력된 데이터가 있는 경우 포인터를 같이 반환
  • DMA : 입출력 카운트를 세팅한 후 CPU 개입없이 메모리부터 자신의 버퍼장치로 또는 버퍼에서 메모리로 데이터 블록을 전송한다.
    • 인터럽트는 블록 전송이 완료될 때 발생함
    • 장치 제어기가 전송 작업을 수행하고 있는 동안 CPU는 다른 작업을 수행할 수 있음