컴퓨터 시스템 구조에 대하여

hyunwoo Jin·2024년 4월 21일
0
post-custom-banner

컴퓨터 시스템 구조

흔히 알고 있는 컴퓨터란 사실 CPU 와 memory 를 칭한다. 그 외 하드디스크 키보드 마우스 프린터 모니터 등등은 I/O device (입/출력 장치)라고 한다.

CPU

  • CPU는 매 순간(클럭사이클)마다 메모리에서 인스트럭션(기계어)를 하나씩 읽어서 실행한다.실행 후 인터럽트 라인을 체크하고 인터럽트가 존재하지 않으면 다음 인스트럭션을 실행한다.
  • CPU 안에는 메모리보다 더 빠르고 정보를 저장할 수 있는 더 작은 공간 register 가 있다. 그리고 cpu 안에는 현재 실행되는 것이 사용자의 프로그램인지 운영체제인지 구분하는 mode bit 이 존재한다.
  • 사용자의 프로그램이 CPU를 제어하다가 사용자가 키보드나 마우스같은 입출력 장치를 사용하면 local buffer 가 cpu 에게 인터럽트를 걸고, 인터럽트가 들어오게 되면 CPU는 자동적으로 제어권이 운영체제에게 넘어가게 된다.

Mode bit

사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호 장치 필요

0 : 모니터모드 (커널, 시스템 모드)

  • 모드빗의 값이 0일 때에는 운영체제가 CPU를 제어하고 있다는 뜻으로 메모리 접근, i/o device 접근하는 인스트럭션 모두 허용된다.

1 : 사용자 모드

  • 반대로 값이 1일 때에는 사용자 프로그램이 CPU를 제어하고 있다는 뜻으로 보안을 해칠 수 있는 중요한 명령어는 제한된다. 이를 특권 명령 이라고 한다.

Memory

  • CPU의 작업 공간

I/O device

Input device

  • 기기를 사용하면 컴퓨터안으로 입력되는 입력 장치 Input Device 이다.
  • 키보드와 마우스

Output device

  • 처리결과를 내보내는 것이기 때문에 Output Device 이다.
  • 프린터와 모니터

I/O device controller

  • 해당 I/O 장치유형을 관리하는 일종의 작은 CPU
  • 제어 정보를 위해 control register, status register를 가짐
  • local buffer 를 가짐 (일종의 data register)
  • I/O는 실제 device 와 local buffer 사이에서 일어남
  • device controllersms I/O가 끝났을 경우 interrupt로 CPU에 그 사실을 알린다.

    device driver (장치구동기) : OS코드 중 각 장치별 처리루틴 (software)
    device controller (장치제어기) : 각 장치를 통제하는 일종의 작은 CPU (hardware)

Disk

  • 보조기억장치인 하드디스크는 입 출력 동시 수행하는 장치이다.
  • 디스크 내 정보를 메모리가 읽기도 하고 처리 결과를 디스크의 파일 시스템에 저장하기도 한다.
  • 각각의 I/O 디바이스는 그 디바이스를 전담하는 작은 CPU 같은 것들이 붙어있는 데 그것이 device controller 이다.
  • 그리고 CPU의 작업공간인 메모리가 있듯이 각 device controller의 작업 공간인 local buffer 가 존재한다.

DMA controller

  • 다이렉트 메모리 액세스 컨트롤러
  • I/O device 들을 통해 CPU가 너무 많은 방해를 받게되는 것을 방지한다.
  • local buffer 에 쌓인 내용을 메모리에 복사하는 일을 대신 수행한다.

Timer

  • 특정 프로그램이 CPU를 독점하는 것을 방지하기 위한 하드웨어이다.
  • 처음엔 CPU를 운영체제가 가지고 있다가 사용자 프로그램에게 cpu 를 빌려주기 전 타이머에 시간 세팅을 한다.
  • 타이머는 매 클럭 틱 때마다 1씩 감소한다. 타이머의 값이 0이 되면 타이머 인터럽트가 발생한다.
  • cpu는 하던 일을 멈추고 인터럽트에 따라 cpu의 제어권이 사용자 프로그램에서 운영체제로 넘어가게 된다.

I/O 수행

  • 모든 입출력 명령은 특권명령임으로 사용자 프로그램에서 직접적으로 수행할 수 있는 권한이 없다.
  • 사용자 프로그램은 운영체제에 커널함수를 호출하여 I/O 요청을 하는데 이를 시스템 콜(system call) 이라고 한다.
  • 사용자 프로그램이 인터럽트 라인을 세팅하는 인스트럭션을 실행한다.
  • CPU는 인터럽트를 받았기 때문에 운영체제로 제어권이 넘어가고 이때 사용자 프로그램의 시스템 콜을 보고 I/O 명령을 수행한다.

Interrupt

  • 인터럽트 당한 시점의 레지스터와 program counter를 save 한 후 CPU의 제어를 인터럽트 처리 루틴에 넘기는 것을 보편적으로 의미한다.
  • 넓은 의미로는 하드웨어 인터럽트와 소프트웨어 인터럽트 두가지를 포괄적으로 지칭한다.

    Trap = 소프트웨어 인터럽트

  • exception: 프로그램이 오류를 범한 경우
  • system call: 프로그램이 커널 함수를 호출하는 경우

인터럽트 처리 루틴 (인터럽트 핸들러)

  • 인터럽트의 종류와 종류별 해야할 일들이 운영체제에 코드로 정의 되어 있는 것.
  • 해당 인터럽트를 처리하는 커널 함수

반효경 교수님의 3. System Structure & Program Execution 1 를 통해 작성됨

profile
꾸준함과 전문성
post-custom-banner

0개의 댓글