저번 시간 했던 것 복습
레지스터 내 Program Counter에 적혀있는 메모리 주소를 찾아가서 instruction을 가져와 실행
하나 실행하면 Program Counter가 4bytes 증가해서 다음 주소의 instruction을 읽어온다 → 순차적으로 실행된다고 가정할 때
결국 CPU는 프로그램 카운터가 가르키는 주소를 읽어서 instruction을 실행하는 일을 한다.
그 중간에 체크하는 것은 interrupt line을 확인해서 들어온 interrupt가 있는지 확인하는 것이다.
누가 CPU를 쓰고있었든 상관없이 interrupt가 있으면 CPU를 운영체제에게 할당한다.
커널에 정의되어있는 interrupt 처리 방식대로 interrupt를 처리한다.
mode bit이 0이냐 1에 따라서 → 0이면 모든 CPU가 실행할 수 있는 모든 기계어 집합을 실행할 수 있고, 1이면 한정된 instruction만 실행할 수 있도록 설정되어 있다.
다른 사용자 프로그램의 메모리 주소에 접근한다거나, I/O 디바이스에 접근한다거나의 instruction은 mode bit이 0일 때만 실행할 수 있다.
사용자 프로그램을 100% 믿을 수 없기 때문이다.
그래서 사용자 프로그램에 I/O 디바이스에 접근하기 위해서는 system call을 사용하여 운영체제에 먼저 접근하도록 한다고 했었다 → 운영체제야 I/O 좀 대신 해줘.
트랩에는 두 가지 종류가 있다.
→ 여기까지 저번 시간에 했던 내용 요약 끝.