운동하는 공대생
[OS(운영체제)] 운영체제 Interrupt, System Call, Upcall 본문
1. Mode switch
- User -> Kernel
- Interrupts: 외부의 hardware에 대하여 발생한다.
- Exceptions: 프로그램에서 예상하지 못한 상황에서 발생한다. 예를 들어 외부 침입자 같은 상황
- System calls: process에서 kernel에 요청을 줄때
- Kernel -> User
- Return from interrupt, exception, system call : 이전에 User에서 Kernel 상태가 끝이 나고 돌아올 때
- User-level upcall(UNIX signal) : 비동기적 사용자 프로그램의 처리
2. Data Transfer Modes
- PIO(programmed IO)
CPU가 I/O 디바이스와 memory 사이에서 데이터를 전송하는 일에 관련되어 있다.
- DMA(Direct Memory Access)
높은 속도의 I/O device를 사용한다. 그리고 CPU의 간섭 없이 바로 메모리에 데이터를 전송한다. Cache가 여기서 등장하게 된다.
3. Event Notification to CPU(or Kernel)
- Polling
CPU 혹은 Kernel 이 I/O 의 종료 전까지 멈추는 상황을 이야기한다. 그래서 CPU의 cycles의 낭비가 발생한다.
- Interrupt
I/O 가 끝난다면 CPU에 device가 통지한다. 여기서 hardware-base에서는 물리적으로 interrupt pin이 발생한다. 이건 interrupt handling이라고 불린다. 또한 CPU는 I/O의 종료 이전에도 시간이 지난 이후에 interrupt가 발생하기도 한다. 그리고 CPU는 intrrupt가 발생하면 실행 중인 상황을 잠시 멈추더라도 이벤트를 처리를 해야 한다.
4. Interrupt Handling
이전에 이야기를 했듯이 I/O가 하드웨어 차원에서 CPU가 물질적으로 interrupt pin 이 발생하는 것을 interrupt handling이라고 이야기를 한다. interrupt가 발생하면 먼저 실행 중인 context를 저장한다. 이것은 지정된 위치인 interrupt stack에 저장된다.
Interrupt가 발생하면 발생된 이벤트를 우선적으로 처리해야 하므로 관리권을 interrupt handler로 권한을 넘긴다. 이것을 Interrupt service routine(ISR)이라고 한다. ISR이 실행된 후에는 CPU가 원래 수행하던 작업으로 돌아가고, 중단된 지점부터 다시 작업을 이어갑니다.
4.1 Interrupt stack
Interrupt stack은 이전에 실행되던 상태를 저장하기 위해서 존재하며 kernel memory에 위치해 있다. xv6는 user process별로 kernel stack이 존재한다.
4.2 Interrupt Masking
Interrupt handler는 interrupt가 없는 상황에서 발생하며 OS는 interrupt를 끄는 게 가능하다. 또한 현재의 CPU에서만 적용이 가능하다.
4.3 Returning from interrupt
- kernel이 현재 interrupt handler를 실행한다.
- 이전에 저장했던 context를 interrupt stack에서 불러온다.
- x86에서는 kernel이 바로 user-level로 가는 건 없다. iret 함수를 통해서
5. System call
순서
1. process에서 예외가 발생하면 kernel에게 system call이 발생한다.
2. kernel에게 parameter를 전달한다.
3. kernel에 process의 상태를 저장하고 system cal을 실행한다.
4. user mode로 상태를 복원한다.
- User mode는 CPU가 사용자 응용 프로그램을 실행할 때 사용하는 모드로, 시스템 리소스에 제한적으로 접근하는 실행 환경을 의미합니다.
- User space는 운영체제에서 사용자 응용 프로그램이 실행되는 메모리 영역으로, 커널 공간과 구분됩니다.
6. Upcall ( user-level event delivery)
Upcall은 user process에게 바로 처리를 요구하는 이벤트를 알려주는 역할을 한다.
'OS' 카테고리의 다른 글
[OS(운영체제)] Virtual Memory (0) | 2024.08.20 |
---|---|
[OS(운영체제)] CPU 스케줄링(CPU Scheduling) (1) | 2024.08.19 |
[OS(운영체제)] 운영체제 Kernel&Protection (0) | 2024.08.10 |
[OS(운영체제)] 운영체제 프로세스 (0) | 2024.07.31 |
[OS(운영체제)] 운영체제 소개 (0) | 2024.07.31 |