본문 바로가기
3학년 학사/운영체제

[운영체제] #5. Computer Architecture

by whiteTommy 2024. 11. 24.
반응형
더보기

목차

  • 컴퓨터 시스템의 일반적인 구조
  • 병목 현상
  • I/O Device Basic Concepts
    • Event Handling Mechanisms
      • Interrupt
      • Trap
    • I/O 처리 기법
      • Pooling
      • Direct Memory Access (DMA)
        • DMA-Read
        • DMA-Write
    • I/O Device Access 기법
      • I/O Instruction
      • Memory Mapped I/O

 

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

단일 Bus 구조

 

  • Bus는 CPU, RAM, I/O 장치 간 데이터와 주소 전송 통로.
  • 주요 종류:
    • 데이터 버스.
    • 주소 버스.

 

  • 특징
    • 모든 데이터 전송이 하나의 버스를 통해 이루어짐.
    • 모든 장치가 버스를 공유하기 때문에 속도 저하 발생.
  • 단점
    • CPU, 메모리, I/O 장치가 동일한 버스를 사용할 경우, 동시 요청이 많아질 수록 느려짐
    • 시스템 성능 저하
    • CPU 는 빠르지만, 메모리 및 I/O 장치 속도가 느려 병목 현상 발생

 

병목 현상

  • 시스템의 CPU, 메모리, I/O 장치 간 속도 차이로 인해 데이터 전송 속도가 제한되는 현상.
  • 결과:
    • 느린 장치(I/O 장치)가 전체 성능을 제한.
    • 특히, CPU와 메모리 간 데이터가 빠르게 전송되더라도 I/O 장치에서 지연 발생.

 

속도 비교

 

  • CPU와 메모리:
    • CPU와 메모리 간 데이터 전송 속도는 상대적으로 빠름.
  • 메모리와 디스크:
    • 메모리보다 디스크 속도가 훨씬 느림.
  • 디스크와 네트워크:
    • 디스크보다 네트워크 장치 속도가 더 느림.
  • 그 외 I/O 장치:
    • 키보드, CD-ROM 등은 네트워크보다 더 느린 속도를 가짐.

 

계층적 버스 구조

 

  • 단일 버스의 한계를 극복하기 위해 계층적으로 설계된 구조.
  • CPU Local Bus, Memory Bus, PCI Bus 등 다양한 버스가 사용됨.

 

 

  • 이중 버스
    • I/O 장치 전용 버스 : I/O 장치는 I/O Bus에 연결하여 데이터 전송.
    • CPU와 메모리 간 전송은 빠른 System 버스에서 처리.
    • 두 버스를 이어주기 위해 Extension Bus Interface 사용

 

Basic HW Mechanisms

1. Interrupt

  • 비동기적 이벤트를 처리하기 위한 기법.
  • CPU가 현재 작업을 수행하는 중에, 외부 또는 내부 장치(I/O 요청, 네트워크 패킷 등)가 이벤트 처리를 요청하면 발생.
  • Interrupt 에는 우선 순위가 있으며 HW 마다 다름
  • ISR (Interrupt Service Routine) 은 짧아야 함 (너무 길면 다른 Interrupt 들이 처리되지 못함)
  • Time Sharing 은 Timer Interrupt 의 도움으로 가능하게 된 기술

 

Interrupt 처리 순서

  • Interrupt Disable:
    • 인터럽트 발생 시 다른 인터럽트 요청을 잠시 중단하여 현재 인터럽트 처리를 우선함. (한번에 하나)
  • 현재 상태(State) 저장:
    • CPU는 현재 실행 중인 작업 상태(레지스터 값, PC 값 등)를 저장하여 이후 복구할 수 있도록 준비.
  • ISR (Interrupt Service Routine) 호출:
    • 인터럽트에 대한 처리 루틴으로 이동.
    • ISR은 각 인터럽트에 대해 정의된 고유한 처리 코드.
    • ISR 실행 중, 새로운 인터럽트가 발생하면 처리되지 못할 수 있음(중첩 방지).
  • 처리 완료 후 상태 복원:
    • ISR 실행이 끝나면 CPU는 이전에 저장한 상태를 복원.
  • 이전 작업 재개:
    • 인터럽트 처리가 완료되면 CPU는 원래 실행 중이던 프로그램으로 돌아가 계속 작업을 수행.

 

 

 

 

  • Interrupt Generated (인터럽트 발생):
    • 하드웨어 장치에서 CPU에 신호를 보냄.
  • Interrupt Handler로 이동:
    • CPU는 실행 중이던 작업을 중단하고 인터럽트 핸들러(ISR)로 이동.
  • Interrupt 처리:
    • ISR이 정의된 절차에 따라 인터럽트 요청을 처리.
      ex)  I/O 작업 완료, 네트워크 패킷 수신.
  • Return to Main Service Routine:
    • 인터럽트 처리가 끝나면 CPU는 기존 작업으로 돌아감.

 

2. Trap

  • 동기적 이벤트를 처리하기 위한 기법.
  • 소프트웨어 실행 중 예외 상황이나 시스템 호출로 인해 발생.
    ex) Divide by zero, System Call
  • Trap이 발생하면 Trap Handler가 호출되어 처리.
  • Trap Service Routine:
    • Interrupt와 유사하게 특별한 루틴(Service Routine)이 실행됨.
    • 하지만 Trap은 동기적으로 발생하므로 실행 상태를 저장/복원할 필요가 없음.
  • 동기적 이벤트
    • Trap은 명령어 실행 중 즉시 발생하여 처리.
    • 반면 Interrupt는 비동기적으로 처리.

 

 

  • Program Execution Flow (프로그램 실행 중)
    • 응용 프로그램(App)이 실행되는 동안 특정 이벤트(예: 시스템 호출, 예외)가 발생.
  • Trap 발생
    • 실행 중인 명령어가 특정 조건(예: Divide by Zero)에 도달하면 Trap이 발생.
  • Trap Handler 호출
    • 커널 영역의 Trap Handler가 호출되어 이벤트를 처리.
    • 시스템 호출 또는 예외 처리 루틴으로 이동.
  • Trap Service Routine 실행
    • Trap Service Routine이 이벤트를 처리.
  • 이전 실행으로 복귀
    • Trap 처리가 완료되면 원래 실행 중이던 프로그램으로 복귀.

 

Intel x86 - Interrupt & Exception

  • Exception : CPU가 명령어 실행 중 오류를 감지하면 발생.
    • 유형:
      1. Fault
        ex) Page Fault, Divide Error(0으로 나누기).
      2. Trap: 명령어 실행 후에 발생.
        ex) Breakpoint, Overflow.
      3. Abort: 심각한 오류(예: 하드웨어 문제)
        ex) Machine Check.
  • Interrupt : 외부 장치나 소프트웨어가 CPU에 작업 요청을 알릴 때 발생.
    • Hardware Interrupt (하드웨어 인터럽트):
      • 외부 하드웨어(예: 키보드, 타이머)가 CPU에 신호를 보냄.
        ex) 키보드 입력, 타이머 신호
        • 인터럽트 벡터(Interrupt Vectors)를 통해 처리.
        • IRQ (Interrupt Request):
          1. IRQ_TIMER: 타이머 인터럽트(프로세스 스케줄링 관리)
          2. IRQ_KBD: 키보드 인터럽트(사용자 입력 처리)
          3. IRQ_IDE: 디스크 인터럽트(디스크 I/O 작업 완료 처리)
    • Software Interrupt (소프트웨어 인터럽트):
      • 소프트웨어가 CPU의 주의를 끌기 위해 발생.
        ex) System Call

 

=> xv6 에서 trap mechanism 이 위의 2가지 interrupt 들을 다룬다.

void trap(struct trapframe *tf){
 	if(tf->trapno == T_SYSCALL){ 
		if(myproc()->killed)
 			exit();
		myproc()->tf = tf;
 		syscall();
 		if(myproc()->killed)
 			exit();
 		return;
		}
        
	switch(tf->trapno){ // Hardware Interrupt handling
 		case T_IRQ0 + IRQ_TIMER: // Timer Interrupt
 			if(cpuid() == 0){
 				acquire(&tickslock); // 락 획득
				ticks++;			// 전역 타이머 변수 증가
 				wakeup(&ticks);		// 타이머 대기 중인 프로세스 깨우기
 				release(&tickslock);  // 락 해체
 			}
			lapiceoi(); 	//Local APIC (Advanced Programmable Interrupt Controller)
			break;
 
 		case T_IRQ0 + IRQ_IDE:	//Disk Interrupt
 		…

 

  • System Call 처리:
    • trapno가 T_SYSCALL이면 소프트웨어 인터럽트(시스템 호출)를 처리.
    • syscall() 함수가 호출되어 시스템 호출 요청 처리.
  • 하드웨어 인터럽트 처리:
    • 타이머 인터럽트: IRQ_TIMER가 발생하면 프로세스 스케줄링을 수행.
    • 키보드 인터럽트: IRQ_KBD가 발생하면 키보드 입력 처리.
    • 디스크 인터럽트: IRQ_IDE가 발생하면 디스크 I/O 완료를 처리.
  • Advanced Programmable Interrupt Controller (APIC):
    • lapiceoi()를 호출하여 APIC에서 인터럽트 종료를 알림.

 

I/O Device Basic Concepts

  • Device Registers
    • 종류 
      • Control Register : 장치 제어를 위한 명령어 입력
      • Status Register : 장치 상태를 확인
      • Input / Output Register : 장치와 데이터 입출력을 수행
    • 접근 방법
      • Register 들은 main memory 일부 영역에 mapping 되어 있음
      • mapping 된 영역의 주소만 알면 CPU 에서 접근 가능
  • I/O Controller
    • CPU 와 I/O 장치 사이의 중재 역할
    • 고수준의 I/O 요청을 저수준의 명령어로 변환

 

I/O 처리 기법 : Polling

  • CPU 가 loop 를 돌면서 특정 이벤트의 도착 여부를 확인
  • 매 순간 이벤트의 발생 여부를 확인 (Interrupt Handler 를 등록하는 방식과 반대)
    • Polling vs. Interrupt
      • Polling
        • CPU가 루프를 돌며 주기적으로 I/O 장치의 상태를 확인하는 방식.
      • Interrupt
        • I/O 장치이벤트 발생 시점에 CPU로 신호(Interrupt)를 보냄.
        • CPU는 Interrupt를 감지하고, Interrupt Handler를 호출하여 이벤트를 처리.
  • Programmed I/O 로 알려짐
  • 모든 I/O 연산은 CPU 에 의해 진행

  • 장점
    • Controller 나 장치가 빠른 경우, Polling 효율적 처리 가능
  • 단점
    • 이벤트 도착 시간이 길어지면, CPU 시간이 낭비된다.

 

I/O 처리 기법 : Direct Memory Access (DMA)

 

  • CPU 개입 없이 I/O 장치가 메모리에 직접 접근하여 데이터를 읽거나 씀.
  • DMA Controller가 CPU와 I/O 장치 간 데이터 전송을 담당.
    • CPU 와 DMA Controller 간의 통신으로 I/O 수행
    • CPU 가 DMA Controller 에게 I/O 를 요청하면, DMA Controller 가 CPU 를 대신하여 I/O Device 와 Main Memory 사이의 데이터 전송을 수행
  • 장점
    • CPU 가 데이터 전송에서 해방되어 다른 작업 수행 가능
    • 대량 데이터 전송에 적합
  • 단점
    • 추가적인 하드웨어 (DMA Controller) 가 필요
    • 소규모 데이터 전송에서는 효율적이지 않을 수 있음

 

 

DMA-Read

 

 

  • CPU가 DMA Controller에 디스크 데이터 읽기 명령을 전달.
  • DMA Controller가 디스크에서 데이터를 읽어 메모리로 전송.
  • CPU는 DMA 작업 완료 인터럽트를 수신한 후 작업을 계속.

 

 

DMA-Write

 

 

  • CPU가 DMA Controller에 메모리 데이터를 디스크에 쓰기 명령을 전달.
  • DMA Controller가 메모리에서 데이터를 읽어 디스크에 전송.
  • CPU는 작업 완료 후 확인.

 

DMA vs. Polling 

특징 DMA Polling
CPU 개입 없음 지속적으로 확인
효율성 대량 데이터 전송에 적합 소량 데이터 전송에 적합
추가 하드웨어 필요 필요 (DMA Controller) 없음
장치 반응 속도 장치 속도와 무관하게 처리 가능 장치가 빠른 경우 효율적
사용 사례 디스크, 네트워크와 같이 고속 데이터 전송이 필요한 경우 (카메라) 키보드, 마우스와 같은 저속 장치

 

 

 

I/O Device Access 기법

1. I/O Instruction 방식

  • Controller 는 보통 1개 혹은 그 이상의 Register 를 가진다. (Data, Control Signal 을 처리하기 위함)
  • CPU 가 장치의 레지스터에 접근하기 위해 특정 I/O 명령어를 사용
    ex) in, out 명령어
  • 컨트롤러의 레지스터(Bit Pattern)를 읽거나 쓰는 방식으로 장치와 통신

2. Memory Mapped I/O 방식

  • 장치의 레지스터를 메모리 주소 공간에 mapping 하여 CPU 가 일반적인 명령어로 접근
  • 메모리와 장치가 동일한 주소 공간을 공유
  • 일반 명령어 (mov, add, xor 등) 를 사용하여 I/O 작업 수행

 

반응형