[운영 체제] Chapter 2 | System Structure & Program Execution 1

피망이·2023년 12월 28일

컴퓨터 시스템 구조

  • 매 cluck마다 memory에서 instruction(기계어)을 읽어 CPU에서 실행

  • Disk에서 가져오거나 저장

    • 내부를 통제하는 것은 각각의 device controller (CPU 역할)
    • 작업 공간 : local buffer
  • CPU에 제어 정보를 저장할 수 있는 작은 공간 : register

  • CPU가 무한 루프를 돌거나 I/O의 개입을 필요로 할 때 : Interrupt line 체크

    • 특정 프로그램이 CPU를 독점하는 것을 막을 때 : timer로 관리
    • timer로 인해 Interrupt line에 무언가 걸려 오면 OS를 통해 CPU에게 전달됨
  • OS는 timer를 걸거나 CPU 제어를 하며 프로그램 관리

    • Interrupt I/O가 들어오면 데이터가 저장된 local buffer를 확인하며 CPU 할당
  • DMA controller, Memory controller도 존재

    • Direct Memory Access(DMA) : 메모리를 CPU와 DMA가 접근
    • memory controller는 두 장치의 충돌을 방지하기 위해 교통 정리
    • I/O가 자주 interrupt 걸어오기 때문에 CPU의 피로도를 막기 위해 설치

Mode bit

  • CPU를 운영 체제가 가지고 있느냐, 사용자 프로그램이 가지고 있느냐 표시

    • 0 : 모니터(커널) 모드 - OS가 CPU에서 실행중일 때, 무엇이든 실행
    • 1 : 사용자 모드 - 사용자 프로그램이 instruction을 수행하다가 I/O가 들어오면 NO!
  • 보안을 해칠 수 있는 명령어는 모니터 모드(0)에서만 수행 가능 : "특권 명령"

Timer

  • 정해진 시간이 흐른 뒤 운영 체제에게 제어권이 넘어가도록 interrupt를 발생시킴

  • 매 클럭 틱 마다 1씩 감소

    • 0이 되면 타이머 interrupt 발생

Device Controller

  • I/O 장치를 관리하는 작은 CPU

    • 제어 정보가 담긴 register와 데이터가 담긴 local buffer로 구성
  • Device controller : 하드웨어

  • Device driver : 소프트웨어

    • 동작 코드가 담긴 매뉴얼은 펌웨어

입출력(I/O)의 수행

  • 시스템콜(system call)
    • 사용자 프로그램이 운영 체제에게 I/O 요청하는 것
    • device controller가 interrupt 하듯이 프로그램이 직접 접근 (mode bit 1 → 0)

인터럽트(Interrupt)

  • 인터럽트 당한 시점의 레지스터와 program counter를 save한 후 CPU의 제어를 인터럽트 처리 루틴에 넘김

  • 현대의 운영 체제는 인터럽트에 의해 구동됨

    • 인터럽트가 들어올 때에만 OS가 작동되고 나머지는 사용자 프로그램이 쓰는 구조
  • 넓은 의미의 Interrupt

    • 하드웨어 인터럽트
    • Trap : 소프트웨어 인터럽트
      • Exception(e.g. Divided by zero) : 오류를 범할 경우
      • 시스템콜(System Call) : 프로그램이 커널 함수 호출
  • 인터럽트 벡터

    • 해당 인터럽트의 처리 루틴 주소를 가짐

profile
물리학 전공자의 프로그래밍 도전기

0개의 댓글