2-1 System Structure & Program Execution

Copes·2022년 10월 28일
0

OS

목록 보기
2/15

컴퓨터 시스템 구조

Computer : CPU + Memory + (Disk + I/O Device)

출처 : https://core.ewha.ac.kr/publicview/C0101020140311132925816476?vmode=f

작업 요약

  • Memory에서 기계어(명령)를 하나씩 읽어서 CPU를 통해서 실행하는 방식.
  • CPU는 Disk에 직접 접근하지 않고, Device Controller를 통해 명령을 내린다.
  • 메모리에 사용자 프로그램이 Timer에 할당된 시간이 넘어가면 CPUInterrupt를 걸어 해당 프로세스를 종료시킨다.
    • CPU는 Interrupt Line을 체크하여 Interrupt가 들어온 것이 있는지 체크한다.
      • Interrupt가 발생하는 경우 사용자 프로그램이 CPU를 반납하고, OS로 CPU 제어권이 넘어간다.
  • 사용자 프로그램이 I/O 작업을 해야하는 경우 OS가 이런 작업들을 대신해준다.
    • 이런 I/O 작업은 오래 걸리므로 다른 사용자 프로그램으로 CPU를 넘겨준다.
      • I/O 작업이 종료되는 경우 CPU를 다시 넘겨준다.

Mode bit

  • 0 : 모니터 모드 : OS 코드 수행
    • Interrupt나 Exception 발생 시 하드웨어가 mode bit을 0으로 바꿈
    • 모든 Instruction 수행 가능
  • 1 : 사용자 모드 : 사용자 프로그램 수행
    • 사용자 프로그램에게 CPU를 넘기기 전에 mode bit을 1로 세팅
    • 이 상태일 때는 제한된 명령만 수행 가능하다. (보안을 해칠 수 있는 중요한 명령어은 수행 불가)

Timer

  • CPU를 특정 프로그램이 독점하는 것으로부터 보호

Device Controller

  • 해당 I/O 장치 유형을 관리하는 일종의 작은 CPU
  • Local Buffer를 가짐

DMA(Direct Memory Access) Controller

  • 잦은 Interrupt를 방지.
    • Memory에 I/O 장치의 입출력을 처리하여 CPU의 작업을 대신해준다. (1번의 Interrupt로 이런 작업이 가능하도록)

Memory Controller

  • DMA Controller와 CPU가 동시에 Memory에 접근하는 것을 방지

입출력(I/O)

  • 모든 입출력 명령은 운영체제만 가능
  • 사용자 프로그램이 I/O를 하는 방법
    • System Call
      • 사용자 프로그램은 운영체제에 I/O 요청
        • 올바른 I/O 요청인지 확인 후 I/O 수행

Interrupt

  • 인터럽트 당한 시점의 레지스터와 PC를 Save한 후 CPU의 제어를 인터럽트 처리 루틴에 넘긴다.
  • 넓은 의미
    • Interrupt : 하드웨어 인터럽트
    • Trap : 소프트웨어 인터럽트
      • Exception : 프로그램이 오류를 범한 경우
      • System call : 프로그램이 커널 함수를 호출하는 경우
  1. I/O 요청을 위해 System Call(소프트웨어 인터럽트)

  2. I/O 완료 후 I/O Controller가 Interrupt(하드웨어 인터럽트)를 걸어 작업 완료를 알림

    💡 하나의 I/O 작업을 위해 두 가지 Interrupt를 수행한다.
  • 인터럽트 관련 용어
    • 인터럽트 벡터 : 해당 인터럽트의 처리 루틴 주소를 가지고 있음(어떤 인터럽트가 발생하는 경우 어떤 것을 수행해야 하는지)
    • 인터럽트 처리 루틴 : 해당 인터럽트를 처리하는 커널 함수

0개의 댓글