시스템 콜도 내부적으로 인러텁트
시스템 콜은 각각의 번호가 부여되어 있다.
eax, 시스템 콜 번호
ebx, 인자값
int 0x80 >> 시스템 콜에 해당하는 인터럽트 코드
이 이후에
CPU는 사용자 모드에서 커널 모드로 변경
IDT(Interrupt Descriptor Table) 에서 해당 코드(0x80)을 찾아서 실행한다. (system_call() 함수)
system_call() 함수 안에서 시스템 콜 번호 (eax), 해당 번호에 맞는 시스템 콜 번호로 이동
해당 함수 실행 후, 커널 모드에서 사용자 모드로 변경
인터럽트 IDT
부팅 시에 운영 체제가 기록한다,
0~31 : 예외상황 인터럽트 (정의 안된 채로 남아있기도 하다)
32~47 : 하드웨어 인터럽트 (주변 장치의 종류와 개수에 따라 변경 가능)
128 : 시스템 콜 (= 0x80)
인터럽트와 프로세스
1. 프로세스 running, interrupt event occurs
2. 현 프로세스 실행 중단
3. 인터럽트 처리함수 실행 (운영 체제
4. 현 프로세스 재실행
'computer' 카테고리의 다른 글
프로세스와 컨텍스트 스위칭 - 프로세스 구조와 컴퓨터 구조 (0) | 2021.06.19 |
---|---|
프로세스와 컨텍스트 스위칭 (0) | 2021.06.18 |
프로세스 스케쥴링 - 인터럽트 2 (0) | 2021.06.17 |
스케쥴링 알고리즘 - 인터럽트 (0) | 2021.06.17 |
스케쥴링 알고리즘 - 선점형과 비선점형 스케쥴러 2 (0) | 2021.06.17 |
댓글