-
[운영체제 ] 3. 인터럽트 , 컨텍스트 스위칭CS/운영체제 2021. 9. 20. 22:08
1. 인터럽트
- CPU 가 프로그램을 실행하고 있을때 , 입출력 하드웨어등의 장치 또는 예외상황이 발생하여 처리가 필요한 경우 CPU 에 알려서 처리하는 기술
- 현재 실행중인 프로그램의 수행을 미루고 다른 프로그램의 수행을 요구하는 명령
- 인터럽트는 하드웨어 인터럽트(외부 인터럽트) 와 소프트웨어 인터럽트(내부 인터럽트로 나뉜다.)
소프트웨어 인터럽트(내부 인터럽트)
주로 프로그램 내부에서 잘못된 명령 또는 잘못된 데이터를 사용할경우 발생
- 나누기 0을 하는 경우
- 사용자가 운영체제만 사용할 수 있는 자원에 엑세스 하는경우(커널)
- Overflow / Underflow 가 밣생하는 상황
하드웨어인터럽트(외부인터럽트)
주로 프로그램 외부적 요인에 의해 발생함
- 키보드등의 IO 관련 이벤트
- 타이머가 일정한 시간 간격으로 중앙처리장치에게 인터럽트 요청 (시분할 시스템 )
2 . 인터럽트 처리 과정
- CPU는 사용자 모드를 커널 모드로 바꿔줌
- IDT(intertupt Descriptor table) 에서 해당하는 커널 함수 주소를 찾아 낸다. (시스템 콜의 경의 0x80)
- 현재 진행중인 프로세스의 상태를 보존하고 멈춘뒤 커널함수의 주소를 통해 커널함수를 실행하여 인터럽트 내용을 처리한다.
- 커널 함수가 종료됨에따라 사용자 모드로 전환 다시 원래 프로세스 다음 코드 진행
3. 컨텍스트 스위칭
인터럽트 처리과정중 기존에 진행중이던 프로세스에서 인터럽트 내용의 프로세스로의 전환이 이루어졌습니다. 이와 같이 진행중 프로세스에서 다른 프로세스로 전환되는 것을 컨텍스트 스위칭이라고 합니다.
컨텍스트 스위칭과 관련해 등장하는 프로세스 구조에 대해서는 추후 정리해보도록 하겠습니다.
컨텍스트 스위칭 과정 (A -> B -> A)
- CPU 레지스터중 PC(ProgramCounter) 에는 A프로세서의 Code(프로세스 구조중) 의 현재 실행 위치(주소값)이 저장됨
- SP(StackPointer) 에는 Stack(프로세스 구조중)에 현재 마지막으로 스택된 값의 주소가 저장됨
- CPU 레지스터중 PCB 에 PID(프로세스 아이디)와 함께 해당 PC/SP 에 저장된 주소값이 저장됨
- 프로세스가 B로 전환되고 CPU(sp/pc) 에는 새로운 프로세스에 대한 값으로 덮어씌워짐
- B프로세스의 PC/SP 값들이 PCB에 저장됨.
- PC/SP 에 PCB에 저장된 A프로세스 값들로 덮어씌워짐으로써 다시 A로 전환됨
PCB (Process Control Block) 란
- 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳으로 프로세스 상태정보를 저장하는 운영체제 커널의 자료구조 이다.
- PCB 는 프로세스 생성시 만들어지며 주기억장치에 유지된다.
- 프로세스가 생성될때마다 고유의 PCB 가 생성된다.
'CS > 운영체제' 카테고리의 다른 글
[ 운영체제 ] 6. 가상메모리 와 페이징 (0) 2021.10.03 [ 운영체제 ] 5. 스레드 와 프로세스 (0) 2021.09.28 [ 운영체제 ] 4. 메모리 구조 , PC , SP (0) 2021.09.23 [운영체제 ] 2. 프로세스 상태와 스케줄링 알고리즘 (0) 2021.09.18 [운영체제 ] 1. 운영체제 구조 - 커널 , 시스템 콜 , 쉘 , API (0) 2021.09.18