Skip to content

Latest commit

 

History

History
61 lines (45 loc) · 5.18 KB

File metadata and controls

61 lines (45 loc) · 5.18 KB

Chapter 2. System Structure & Program Execution

컴퓨터 시스템 구조

  • device controller: I/O device는 각각이 해당 컨트롤러를 가지며, 이것이 작은 CPU 역할을 하며 디바이스를 전담.
    • I/O가 끝났을 때 interrupt line을 통해 CPU에 해당 사실을 알린다.
  • local buffer: 장치로부터 들어오고 나가는 데이터를 임시로 저장하기 위한, device controller의 작은 메모리 공간.
  • register: CPU의 내부에 위치하며, 가장 빠른 속도로 접근이 가능한 저장 공간. register는 크게 주소 레지스터, 상태 레지스터, 데이터 레지스터로 이루어져 있다. 예시로, 계산을 수행 중인 값은 데이터 레지스터에 저장된다.
  • mode bit: CPU에서 현재 실행하고 있는 것이 운영체제인지, 사용자 프로그램인지를 구분.
    • 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호 장치
    • 0은 모니터 모드로 OS 코드를 수행
    • 1은 사용자 모드로 사용자 프로그램을 수행
    • mode bit이 1(사용자 모드)일 때는 제한적인 인스트럽션 실행만이 가능한데, 이를 일반 명령이라 한다.
    • mode bit이 0(모니터 모드)일 때는 OS 코드를 수행할 수 있는데, 이를 특권 명령이라 한다.
  • Interrupt line: 메모리의 다음 인스트럭션을 가져오기 위한 라인.
  • Timer: 정해진 시간이 흐른 뒤 사용자 프로그램에서 운영체제로 CPU 제어권이 넘어가도록 하는 하드웨어
    • 타이머는 매 클럭 틱 때마다 1씩 감소
    • 타이머 값이 0이 되면 타이머 인터럽트가 발생
    • 인풋이 필요하지 않고 무한루프를 도는 프로그램이 있다면 타임 셰어링이 불가능해진다. Timer가 존재한다면 이를 막을 수 있다.
    • 특정 프로그램이 CPU를 독점하는 것을 막기 위함
    • CPU는 하나의 인스트럭션이 종료될 때마다 interrupt를 확인하는데, 이때 타이머 인터럽트가 발생한 것이 확인된다면 해당 사용자 프로그램은 CPU 제어권을 잃게 된다.
  • DMA(Direct Memory Access) controller: 로컬 버퍼에 데이터가 올라가는 일이 끝나면, 해당 컨트롤러는 I/O 데이터를 메모리에 올리고, 모두 끝나면 interrupt line을 통해 CPU에 완료 사실을 알린다.
    • I/O가 발생할 때마다 CPU가 메모리에 접근하여 이를 저장하는 것보다 오버헤드가 낮아진다.
  • memory controller: CPU와 DMA controller가 동시에 메모리에 접근하여 정보를 사용하거나 쓰면 충돌이 일어나기 때문에 이를 제어해주는 컨트롤러

입출력(I/O)의 수행

  • 모든 입출력 명령은 특권 명령이다.
  • 그렇기 때문에 사용자 프로그램은 I/O 작업을 원한다면 스스로 운영체제에게 CPU 제어권을 넘겨주고 I/O 작업을 요청(시스템 콜 system call)하게 된다.
  • 시스템 콜 system call

  • 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것
  • 이때 사용자 프로그램은 직접 메모리 주소를 점프할 수 없기 때문에 CPU에게 interrrupt line을 통해 요청, CPU가 이를 처리한다. 이때의 interrupt를 trap이라고 한다.
  • interrupt의 종류에 따라 어떤 처리를 하는 지에 대해 적혀있는 테이블을 인터럽트 벡터라고 한다.

인터럽트(Interrupt)

현대의 운영체제는 인터럽트에 의해 구동된다.

  • 인터럽트 당한 시점의 register와 program counter를 저장한 후 CPU의 제어를 (벡터가 가진) 인터럽트 처리 루틴에 넘긴다.
  • Interrupt(하드웨어 인터럽트): 하드웨어가 발생시킨 인터럽트
  • Trap(소프트웨어 인터럽트): 프로그램이 오류를 범했거나 프로그램이 커널 함수를 호출(시스템 콜)하는 경우

동기식 입출력과 비동기식 입출력

  • 동기식 입출력: I/O 요청 후 해당 입출력 작업이 완료된 후에야 사용자 프로그램에 제어권이 넘어가는 방식. 인스트럭션을 실행할 수 없다.
  • 비동기식 입출력: I/O 요청 후 해당 입출력 작업을 기다리지 않고 사용자 프로그램에게 바로 제어권을 넘기는 방식. 인스트럭션을 실행할 수 있다.

→ 위 두 가지 방식은 모두, 프로세스가 CPU 소유여부와는 무관하다.

저장장치 계층 구조

  • CPU는 primary 저장계층에 직접 접근이 가능하기 때문에 byte 단위로 정보를 가져온다.
  • 반대로 secondary 저장계층에 직접 접근이 불가능하기 때문에 섹터 단위로 정보를 가져온다. → excutable하지 않은 매체
  • Caching: 재사용을 목적으로 한다. 일단 한 번 위로 올라온 secondary 정보를 primary(캐시 메모리)에 저장한다. 용량이 작기 때문에 기준을 두고 기존 데이터를 휘발시키는 특성을 지닌다.