Memory : CPU의 작업대
I/O Device
Register : CPU 내부에 존재하는 Memory 보다 빠르고 작은 정보 저장소
modebit
- modebit 0 : OS가 CPU 점유 중
메모리 접근, I/O devices 접근 가능 ...- modebit 1 : 타 프로그램이 CPU 점유 중
I/O devices 접근 등 불가능- 즉, OS에게 주도권 넘길 때는 modebit 1 > 0으로 토글 (Interrupt나 Excetption 발생 시)
- 사용자 프로그램에게 주도권 넘길 때는 modebit 0 > 1
Interrupt Line
timer : 특정 프로그램의 CPU의 독점 방지
- 사용자 프로그램의 Instruction 실행 중 I/O가 필요하면 CPU의 주도권을 OS로 넘긴다. (읽어 줘 / 써줘)
- I/O는 OS밖에 못함 (보안 상의 이유로)
- I/O에 시간이 걸리니까 하청 주고 일단 다른 프로그램 실행
- I/O 완료되면 Interrupt 건다 -> OS로 CPU 주도권 넘어감 -> Interrupt 원인 파악 -> 원래 프로그램 CPU timer 시간 남았어 ? -> 원래 프로그램으로 복귀
DMA Controller (Direct Memory Access)
인터럽트 Interrupt
의미
- 하드웨어 인터럽트(Interrupt)
하드웨어가 발생시킨 인터럽트 (일반적 인터럽트)- 소프트웨어 인터럽트(trap) :
- Exception > 프로그램이 오류 범한 경우
- System Call > 프로그램이 커널 함수를 호출하는 경우 ('I/O device 읽어줘' 요청)
관련 용어
- 인터럽트 벡터 :
- 해당 인터럽트의 처리 루틴 주소를 가지고 있음
- 실제 해야할 일 : 핸들러(루틴) / 이동하는 주소 저장 : 벡터
- 인터럽트 처리 루틴(핸들러) : 해당 인터럽트 처리하는 커널 합수
동기식 입출력과 비동기식 입출력
동기식 입출력 (synchronous I/O)
I/O 요청 후 입출력이 완료된 후에 제어가 사용자 프로그램으로 넘어감.
요청이 끝날때 까지 CPU 대기 (자원 낭비)
매시점 하나의 I/O만 실행
I/O 완료될 때까지 해당 프로그램에서 CPU 빼앗음
I/O 완료될 때까지 I/O 출력 대기줄 세움
다른 프로그램에 자원 줌
비동기식 입출력 (asynchronous I/O)
저장장치 계층 구조
- Executable : CPU가 직접 접근 가능한가?
- 상부는 빠르고, 비싸고, 휘발성이고, 용량이 작다.
- Cache : D-Ram에서 자주 사용하는 데이터 불러와서 보관
강의 : 운영체제 (KOCW) - 반효경
교재 : OSTEP - three easy pieces