목록운영체제 (11)
개발스토리
* 인터럽트 처리는 먼저 하드웨어적인 처리가 수행되고, 다음으로 소프트웨어적 처리가 수행된다. - 아래 처리 과정이 이해가 가지 않는다면 이전 포스팅들을 다시 보고 돌아오자. * 하드웨어적 처리 - 인터럽트가 일어나고 cpu가 하던 일을 멈추면 자동으로 수행된다. - 상태 레지스터 값을 저장. - 프로세서 모드를 커널 모드로 변경하여 os를 수행.(모드 비트를 변경) - pc 레지스터 값을 저장 - 발생된 인터럽트의 벡터 값(ISR 주소)을 PC레지스터에 저장 (OS내의 인터럽트 서비스 루틴을 수행하게 된다) * 소프트웨어적 처리(OS가 수행함) - CPU 레지스터들의 값을 저장(메모리에 저장) - 인터럽트 처리 코드를 수행 - CPU 레지스터 값을 복원( 저장된 값들을 CPU 레지스터에 load..
인터럽트 벡터란 무엇일까? -> 인터럽트 벡터는 인터럽트가 발생했을 때, 그 인터럽트를 처리할 수 있는 서비스 루틴들의 주소를 가지고 있는 공간이다. * 각 인터럽트에는 번호가 할당되어 있다. * 메인 메모리의 지정된 영역에 각 인터럽트를 처리할 코드(인터럽트 서비스 루틴)의 시작 주소가 저장된다. - 인터럽트 벡터: 인터럽트 서비스 루틴의 시작 주소 - 인터럽트 벡터 테이블: 인터럽트 벡터들이 저장되어 있는 영역 * 컴퓨터가 전원이 켜져 부팅될 때, OS는 인터럽트 벡터 테이블 값을 초기화 한다. (벡터값을 세팅) - 즉, 인터럽트 벡터마다 대응하는 ISR(인터럽트 서비스 루틴)의 주소값을 세팅한다. - 예를 들어, INT1의 벡터에는 INT1을 처리하는 ISR의 주소 값을 저장한다. (..
인터럽트는 운영체제 내부에서 상당히 중요한 개념이다!! 잘 봐두도록 하자! 인터럽트가 무엇일까? -> CPU에게 어떤 사건이 발생했음을 알리는 것이다. -> CPU가 처리할 인터럽트가 정해져 있다.(보통 수십~수백 개) 인터럽트의 유형에는 어떤 것들이 있을까? 1. 하드웨어 인터럽트 - 입출력 장치에서 입출력의 종류를 알린다. - 타이머 장치에서 주기적으로 알린다. 2. 소프트웨어 인터럽트(trap) - 프로그램 오류 ex) 0으로 나누기, 잘못된 주소 참조 등 - 사용자(프로그램)의 서비스 요청: 시스템 호출(system call) 인터럽트가 발생하면, cpu는 현재 수행하던 일을 중단하고 인터럽트 서비스 루틴(인터럽트를 처리하는 코드)을 수행한다. - 현재 수행하던 일을 중단한다는 ..
캐싱이란 무엇일까?? -> 사용 중인 데이터를 느린 저장장치에서 빠른 저장장치로 임시 복사하는 것을 말한다. 이때, 빠른 저장장치를 캐시(cache)라고 부른다. 즉, 데이터가 필요할 때 캐시를 먼저 검사한다. 만약 필요한 데이터가 캐시에 있으면 캐시에 있는 정보를 바로 사용하기 때문에 빠른 속도로 사용할 수 있다. 하지만 필요한 데이터가 캐시에 없다면 데이터를 캐시로 복사한 후에 사용한다. 또한, 캐시의 크기는 정해져 있으므로, 무한히 데이터를 복사할 수 없다. 캐시가 다 찼는데, 데이터를 또 저장해야 한다면, 이미 캐시에 있는 데이터의 일부분을 제거하고 새 데이터를 저장해야 한다. 이를 교체(replacement)라고 한다. 제거할 데이터를 결정하는 것은 교체 정책이라고 한다. 교체 정책은..