출처 : KMOOC / 운영체제 / 이화여대 반효경 교수님
컴퓨터 시스템 구조와 프로그램 실행
Interrupt
- CPU는 기계어 실행하면서 계속 interrupt 체크
$\rightarrow$ interrupt 받으면 mode bit 0으로 바꾸고 os한테 CPU 제어권을 넘긴다
- 일반적으로 interrupt는 device controller가 보내는 HW interrupt를 의미한다.
- SW interrupt도 있지만 보통 trap이라고 부른다.
Trap
- Exception : 프로그램이 오류를 범하는 경우 ( 0으로 나눈다거나, 특권 명령을 수행하라고 요구하거나 )
- System call : 프로그램이 커널 함수를 호출
시스템 콜 (System Call)
- 사용자 프로그램이 OS의 서비스를 받기 위해 커널 함수를 호출하는 것
- 프로그램이 직접 program counter를 건드릴 수 없기 때문에 코드를 통해 interrupt를 건다
$\rightarrow$ 운영체제가 CPU 제어권을 받아 대신 처리해서 전달해준다.
- 예를 들어, I/O에 접근하는 건 전부 특권 명령이므로 시스템 콜 필요
인터럽트 벡터 (Interrupt Vector)
- 인터럽트 종류별 인터럽트 처리 루틴의 주소를 갖고 있음
- 즉, 인터럽트 처리 루틴의 주소 포인터
인터럽트 처리 루틴 (Interrupt Service Routine)
- 종류 별로 인터럽트를 처리하는 커널 함수
PC (Program Counter)
- 다음 번에 실행할 기계어의 메모리 주소를 저장하는 레지스터
Timer
- 일정 시간 간격으로 interrupt를 발생시킨다.
- 예를 들어, os가 프로그램 A한테 cpu를 넘겨줄 때 그냥 주지 않고 timer에 시간 세팅하고 cpu를 넘겨준다.
$\rightarrow$ 프로그램 A가 무한 루프를 돌더라도 운영체제가 다시 cpu 제어권을 돌려받는다
- 즉, cpu를 특정 프로그램이 독점하는 것을 막아준다.
입출력
Synchronous I/O
- I/O 요청한 프로그램은 I/O 작업이 끝날 때까지 대기
- 예를 들어, 파일을 읽어와야 다음 작업을 할 수 있으므로 기다린다
- 기다렸다가 같이 일하는 느낌
Asynchronous I/O
- I/O 요청한 프로그램은 I/O 작업이 끝날 때까지 기다리지 않고 마저 작업
- 예를 들어, 파일을 쓸 때는 꼭 결과를 볼 필요가 없으므로 기다리지 않을 수 있다
두 경우 모두 I/O 작업의 완료는 인터럽트를 통해 전달
DMA (Direct Memory Access)
DMA가 없으면 CPU가 입출력을 받아서 메모리에 옮겨주는 형태
이 경우 고속 I/O 장치 사용하면 interrupt 너무 자주 걸려서 CPU 비효율적으로 작동
DMA 컨트롤러가 직접 메모리에 전송 해주고 CPU에 인터럽트 걸어서 작업 완료만 알려준다
'CS > 운영체제' 카테고리의 다른 글
Process Synchronization II (0) | 2022.05.14 |
---|---|
Process Synchronization I (0) | 2022.05.14 |
CPU 스케줄링 (0) | 2022.05.14 |
프로세스 관리 (0) | 2022.05.09 |
운영체제 개요 (0) | 2022.05.08 |