운영체제 (6) - 버스, 병목현상, 이벤트 처리

@JHSHIN·2023년 3월 23일
0
post-thumbnail

운영체제 수업을 수강하며 정리한 내용을 작성하려고 합니다.

컴퓨터 시스템의 구성요소

컴퓨터 시스템의 일반적인 구조: 버스

  • 초창기: 단일 버스 사용
    • 한 종류의 시스템 버스에 여러가지 모듈이 연결되는 구조
    • CPU, Memory, I/O의 속도가 비슷했던 초창기에 사용
    • CPU, Memory, I/O의 속도 격차 증가 → 병목 현상 발생

Bottleneck(병목 현상)

  • 같은 버스에 연결된 디바이스들 간의 속도 차이로 인해 발생하는 성능 저하
  • 빠른 device에 대한 stall
    • 빠른 디바이스가 처리하는 양만큼을 느린 디바이스가 처리하지 못함
      • 전체 시스템 속도가 느린 디바이스의 속도로 제한
    • e.g., CPU가 초당 5단위의 일을 처리, 메모리가 초당 3단위의 일을 처리
      • → 전체 시스템 속도는 초당 3단위의 일 처리
  • 일반적인 속도는 CPU > Memory > I/O

버스 이중화

  • 계층적 버스 구성
    • 속도 격차로 인한 병목 현상 해결
    • 의도: 1. 빈번히 활용되고 2. 속도가 유사한 장치들끼리 묶는 것
    • 접근 빈도가 적고, 처리 속도가 느린 장치들은 시스템 버스에 직접 연결하지 않고, I/O 버스를 거쳐 연결됨 → stall 방지

CPU의 실행 모드 예시

  • 시스템 보호를 위한 실행 모드
  • CPU는 하드웨어적으로 Mode switch를 함
    • 레벨 0 (Kernel Mode 또는 Supervisor Mode): 커널 또는 운영 체제에 의해 사용, 가장 높은 권한을 가지고 있으며, 모든 하드웨어와 메모리에 대한 전체 접근 권한이 있다. 운영 체제와 하드웨어의 관리, 시스템 콜 및 하드웨어 인터럽트 처리 등이 수행된다.
    • 레벨 1 (Hypervisor Mode 또는 Virtual Machine Monitor Mode): 가상화 소프트웨어에 의해 사용된다. 하드웨어에 직접적으로 접근하지 않으며, 가상화 레이어에서 실행되는 하드웨어 리소스에 대한 제한된 접근 권한을 가진다.
    • 레벨 2 (Driver Mode 또는 Device Driver Mode): 하드웨어 디바이스 드라이버에 의해 사용됩니다. 하드웨어 리소스를 직접적으로 접근할 수 있으며, 레벨 3보다 높은 권한을 가진다.
    • 레벨 3 (User Mode): 사용자 응용 프로그램에 의해 사용된다. 가장 낮은 권한을 가지며, 자신이 사용하는 메모리 영역 외의 다른 메모리 영역에 대한 접근이 제한된다. 대부분의 응용 프로그램이 실행되는 레벨이다.

CPU 이벤트 처리 기법

  • CPU 이벤트: 동기적 이벤트와 비동기적 이벤트로 나뉨
  • 동기적 이벤트: 어떠한 이벤트가 순차적으로 발생
    • 현재 수행하고 있는 프로그램의 맥락에서 발생
    • 프로그램의 흐름이 이벤트의 발생을 알고 있음
      • 시스템 콜, divide by zero(에러 처리)와 같이 프로그램 동작 상에서 발생
    • 요청을 하면 결과가 반환되는 것을 기다려야 함
    • 처리기법: trap(SW inturrupt)
  • 비동기적 이벤트: 현재 수행하고 있는 프로그램과 병렬적 or 독립적 or 동시에 일어날 수 있음
    • 처리기법: interrupt

동기적 이벤트 처리 기법: trap

  • 동기적 이벤트를 처리하기 위한 기법
    • divide by zero와 같은 프로그램 동작 상에서 발생
    • Trap 발생 상황의 예시
      • 0으로 나누는 경우
      • 유효하지 않은 메모리 주소에 액세스하는 경우
      • 시스템 콜 호출
      • 프로그램 치명적인 오류 발생
    • 시스템이 예외 처리 루틴으로 점프하여 예외를 처리할 때 사용되는 점프 명령어가 바로 Trap 명령어이고, Trap 명령어는 CPU가 현재 실행 중인 명령어의 주소를 저장하고, 예외 처리 루틴의 주소로 점프한다.
    • Trap시 Mode switch가 일어난다.
  • 처리 루틴
    • Trap 발생 시 해당 Trap을 처리하기 위한 trap service routine으로 점프
    • Trap 처리 완료 후 기존 실행 흐름으로 복원하여 다시 작업 이어 실행
  • Note
    • 트랩을 SW interrupt라고 부르는 경우가 다수 있음
    • 이 경우, 앞서 interrupt는 엄격하게 HW interrupt라고 구분됨

비동기 이벤트 처리 기법: interrupt

  • 비동기적 이벤트를 처리하기 위한 기법: interrupt
    • e.g., 네트워크 패킷 도착 이벤트, 타이머 인터럽트
  • 인터럽트 처리 순서
    • 현재 상태(state)를 저장
    • ISR(Interrupt service routine)로 점프
      • 인터럽트 처리 루틴은 짧아야 함(최소한의 시간 안에 실행)
    • 저장한 실행 상태(state)를 복원
    • 인터럽트로 중단된 지점부터 다시 시작
  • Note
    • 상태를 저장하고 복원하는 이유는 이벤트가 비동기적이기 때문
    • 인터럽트에는 우선순위가 있으며, H/W 장치마다 다르게 설정됨
    • ISR은 짧아야 함, 너무 길면 다른 인터럽트들이 처리 받기까지 오래 대기
    • Timesharing 역시 timer interrupt의 도움으로 가능하게 된 기술
profile
더 나은 UX에 계속해서 도전하며 성장하는 개발자

0개의 댓글