OS-컴퓨터 구조

이윤주·2023년 3월 4일

OS

목록 보기
2/4

1주차 강의 영상-2

하나 이상의 CPU와 메모리에 대한 액세스를 제공하는 시스템 버스에 연결된 여러 device controller로 구성된다.

소프트웨어 코드-> 메모리에 저장
CPU가 메모리에서 읽어와서 실행하고 다시 메모리에 저장
main memory (DRAM) -> 휘발성이므로
SSD, HDD 등의 비휘발성 디스크에 데이터 저장

disk controller, USB controller, graphics adapter 등의 주변 장치에 local buffer storage가 있어 일종의 메모리로 인식. 그리고 특정 목적 레지스터가 포함되어 있음.
local buffer storage-> 데이터, 제어 명령어 존재

주변 장치(peripheral devices)와 local buffer storage 사이의 데이터 교환 동작이 이루어짐

CPU moves data from/to main memory to/from local buffers

직접 메모리 접근, DMA(Direct Memory Access)
: 특정 하드웨어 하위 시스템이 CPU와 독립적으로 메인 시스템 메모리에 접근할 수 있게 해주는 컴퓨터 시스템의 기능. 주변장치의 데이터는 장치 컨트롤러에 의해 로컬 버퍼로 이동한다. 그러나 전송할 데이터가 많은 경우 많은 양의 데이터의 이동으로 인한 부담이 커지는데 이러한 문제를 해결하기 위해 DMA를 이용한다. 장치 컨트롤러가 데이터의 한 블록을 이동시키는데 이 과정에서 DMA로 인해 CPU의 개입이 필요없게 된다. CPU에서는 데이터 이동이 완료되었다는 단 한 번의 인터럽트만 발생한다. 데이터가 전송되는 동안 CPU는 다른 작업을 수행할 수 있게 되어 효율성이 높아진다.

Device driver: device controller의 동작을 이해함. 어떤 device에 관한 표준 인터페이스를 OS에 제공함. 주변 장치에 관한 세부적인 내용을 몰라도 실행 가능. -> peripheral devices 업체에서 제공, OS에 포함됨

-공유 메모리에 대한 순차적 액세스를 보장하기 위해 메모리 컨트롤러는 메모리에 대한 액세스를 동기화한다.

a program performing I/O
-program은 API를 통해 data operation을 진행.
API-> SDK를 통해 제공됨.

API(application programming interface), 응용 프로그램 프로그래밍 인터페이스
: 컴퓨터나 컴퓨터 프로그램 사이의 연결.

인터럽트

device controller가 데이터 전송 시 프로그램에 응답을 주는 방식 : interrupts

:OS가 하드웨어와 상호 작용하는 핵심적인 방식 제공
interrupt signal: hardware에서 CPU로 보내는 트리거 신호

인터럽트 처리 과정

  1. 인터럽트가 발생하면 CPU는 하던 작업을 멈춘다.
  2. 해당 주소에 있는 서비스 루틴(interrupt handler)을 즉시 실행한다.
  3. CPU가 일을 다 처리한 후 진행 중이었던 작업을 재개한다.(resume)

인터럽트 구현

IRQ(interrupt request lines)
:주변 장치 컨트롤러가 CPU에 인터럽트 시그널을 보낼 때의 라인
두 개의 라인을 가진다.
-nonmaskable(FIQ): 처리하고 있던 인터럽트 동작을 멈추고 새로운 인터럽트 동작을 처리함.(중요한 인터럽트 신호를 처리)
-maskable(IRQ):CPU가 인터럽트를 처리할 때 또 다른 인터럽트 신호가 들어올 경우 그 신호를 막고 현재 처리하는 것을 먼저 처리.

  1. CPU가 IRQ 신호를 감지하고 인터럽트 번호를 읽어서 5. 해당하는 인터럽트 핸들러 루틴으로 점프해 실행하도록 한다.
    -> 현재 모든 상태를 저장해야 함
    -> 인터럽트 원인 파악
    -> 필요한 작업 수행
    -> 완료 후 저장한 상태를 읽어오고 인터럽트 신호 이전의 프로그램 동작 재개.
  • 추가적인 기능 : interrupt-controller hardware 이용.
    -> 인터럽트 컨트롤러가 여러 신호를 받았을 때 하나의 IRQ 신호만 CPU에 보내고 제어함.(CPU 역할 대신함)
    -> 적절한 인터럽트 핸들러를 잡아내는 효율적인 방법 사용
    -> 우선순위에 기반한 인터럽트 신호 처리 순서 결정

인터럽트 벡터 테이블 : 인터럽트 서비스 루틴(ISR)에 해당하는 주소의 배열

profile
飛 전공자

0개의 댓글