반응형
더보기
목차
- 컴퓨터 시스템의 일반적인 구조
- 병목 현상
- 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
- Event Handling Mechanisms
컴퓨터 시스템의 일반적인 구조
단일 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 작업 완료, 네트워크 패킷 수신.
- ISR이 정의된 절차에 따라 인터럽트 요청을 처리.
- 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가 명령어 실행 중 오류를 감지하면 발생.
- 유형:
- Fault
ex) Page Fault, Divide Error(0으로 나누기). - Trap: 명령어 실행 후에 발생.
ex) Breakpoint, Overflow. - Abort: 심각한 오류(예: 하드웨어 문제)
ex) Machine Check.
- Fault
- 유형:
- Interrupt : 외부 장치나 소프트웨어가 CPU에 작업 요청을 알릴 때 발생.
- Hardware Interrupt (하드웨어 인터럽트):
- 외부 하드웨어(예: 키보드, 타이머)가 CPU에 신호를 보냄.
ex) 키보드 입력, 타이머 신호- 인터럽트 벡터(Interrupt Vectors)를 통해 처리.
- IRQ (Interrupt Request):
- IRQ_TIMER: 타이머 인터럽트(프로세스 스케줄링 관리)
- IRQ_KBD: 키보드 인터럽트(사용자 입력 처리)
- IRQ_IDE: 디스크 인터럽트(디스크 I/O 작업 완료 처리)
- 외부 하드웨어(예: 키보드, 타이머)가 CPU에 신호를 보냄.
- Software Interrupt (소프트웨어 인터럽트):
- 소프트웨어가 CPU의 주의를 끌기 위해 발생.
ex) System Call
- 소프트웨어가 CPU의 주의를 끌기 위해 발생.
- Hardware Interrupt (하드웨어 인터럽트):
=> 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를 호출하여 이벤트를 처리.
- Polling
- Polling vs. Interrupt
- 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 작업 수행
반응형
'3학년 2학기 학사 > 운영체제' 카테고리의 다른 글
[운영체제] #9. 동기화 (1) (0) | 2024.11.27 |
---|---|
[운영체제] #7. InterProcess Communication (IPC) (0) | 2024.11.26 |
[운영체제] #4. Process (0) | 2024.11.20 |
[운영체제] #3. 운영체제 구조 (2) (0) | 2024.11.19 |
[운영체제] #2. 운영체제 구조 (1) (0) | 2024.11.19 |