해당한다는 것은 알고 있었지만 커널의 개념을 명확히 파악하지 못하고 시그널와 인터럽트의 차이가 불분명해 보여서 책을 펴서 공부했습니다.
생성하여 외부 프로그램 내부와 관련이 없는 의 예기치 않은 변경에 응답합니다.
예외는 부분적으로 하드웨어에 의해 실행되고 부분적으로 의해 실행되는 한 형태입니다.
예외는 프로세서 상태의 변경에 대한 응답으로 제어 흐름의 급격한 변경입니다.
상태의 변화를 이벤트라고 합니다.
상태는 프로세서에서 다양한 비트와 시그널로 인코딩됩니다.
이벤트는 현재 명령의 현재 실행과 관련되거나 관련되지 않을 수 있습니다.
시스템 타이머가 꺼지면 요구 사항이 만료되거나 프로세서가 이벤트가 발생한 것을 감지한 경우 예외라고 하는 점프 테이블을 통해 이러한 종류의 이벤트를 처리하도록 특별히 설계된 서브루틴에 대한 간접 프로시저 호출이 만들어집니다.
생성 1 핸들러는 현재 명령어로 제어를 반환합니다.
이벤트가 발생했을 때 실행 중이던 명령어 2 핸들러는 예외가 발생하지 않았다면 다음에 실행되었을 명령어에 대한 제어를 반환합니다.
3 핸들러는 중단된 프로그램 예외 처리를 중단하기 때문입니다.
하드웨어와 소프트웨어 간에 긴밀한 협력이 있어야 합니다.
예외 테이블은 점프 테이블이고 항목 예외 대한 해들러 코드의 주소를 포함합니다.
우리가 찾고 있는 코드가 있는 메모리 주소인 통해 예외 테이블의 위치로 이동합니다.
시스템에서 가능한 예외의 유형은 프로세서 설계자가 할당한 고유한 음수가 아닌 정수 예외 번호입니다.
다른 번호는 커널라는 설계자가 할당합니다.
예제 0으로 나누기 페이지 오류 메모리 액세스 위반 중단점 산술 오버플로 그러나 페이지 오류는 실제로 같은 언어로 발생하지만 예를 찾아야 할 것입니다.
아, 램이 가질 수 있는 용량 이상입니다.
더 큰 크기의 버퍼를 할당하면 페이지 폴트가 발생합니다.
버퍼가 임시 메모리 저장소인 경우 저장된 자식은 변수 등에 저장되기 전에 임시로 저장됩니다
메모리에 버퍼링하는 것이 직접 작업보다 낫습니다.
더 빠름 버퍼 없이 인쇄하려고 하면 파일 디스크에 직접 쓰기 때문에 버퍼가 메모리이기 때문에 훨씬 느립니다.
시스템 호출 신호로 주어지는 예 외부 장치 시스템 부팅 시간 점프 테이블을 할당하고 초기화합니다.
예외의 유형 1 인터럽트 비동기 예외 프로세서 외부의 장치 신호의 결과입니다.
장치 예제 네트워크 어댑터 디스크 컨트롤러 타이머 칩 장치는 프로세서 칩의 시그널 링 핀에 의해 인터럽트를 트리거하고 시스템 버스에 예외 번호를 넣습니다.
장치가 인터럽트가 발생했음을 인식한다는 증거.
인터럽트가 끝난 후 항상 다음 명령을 실행합니다.
2 이것은 의도된 예외이며 명령 실행의 결과로 발생합니다.
내부적으로 발생한 예와 동기화합니다.
인터럽트 핸들러와 마찬가지로 트랩 핸들러는 다음 명령어로 제어를 반환합니다.
트랩의 가장 중요한 용도는 시스템 호출이라고 하는 사용자 프로그램과 커널 사이의 프로시저와 같은 인터페이스입니다.
사용자 프로그램은 종료 서비스를 요청하여 커널에서 파일을 읽거나, 프로세스를 생성하거나, 새 프로그램을 포크로 로드하거나, 현재 프로세스를 종료하도록 요청할 수 있습니다.
프로세서는 사용자 프로그램이 실행할 수 있는 특별한 명령어를 제공합니다.
명령을 실행하면 예외 처리기에 적절한 커널 루틴이 호출되고 인수가 디코딩됩니다.
프로그래머의 관점에서 볼 때 시스템 호출은 일반 함수 다르지 않지만 두 실행 프로세스는 상당히 다릅니다.
코드를 작성할 때 작성한 함수는 사용자 모드에서 실행되고, 사용자 모드는 실행되는 명령 유형을 제한하며, 사용자 모드는 함수를 호출하는 것과 동일한 스택에 액세스합니다.
시스템 호출은 커널 모드에서 실행되고 권한 있는 명령어를 실행하며 명령어가 커널에 정의된 스택에 액세스할 수 있도록 합니다.
조건의 오류 결과는 핸들러가 수정할 수 있는 오류입니다.
오류가 발생하면 프로세서는 제어를 오류 처리기로 넘깁니다
핸들러가 오류 조건을 올바르게 수정할 수 있으면 오류가 발생한 명령에 제어를 반환합니다.
페이지 폴트를 다시 실행하여 수정하는 것이 일반적입니다.
물론 재실행 전에 수정하는 과정이다.
메모리를 캐시로 옮기는 과정이 필요하지만 명령어 자체를 수정하거나 수정할 필요는 없다.
루틴 커널의 중단 루틴은 오류를 일으킨 응용 프로그램을 종료합니다.
중단은 복구할 수 없는 오류의 결과이며 일반적으로 패리티 오류, 즉 또는 비트가 손상될 때 발생하는 동일한 하드웨어 오류로 인해 발생합니다.
흠 오류 중단인 줄 알았는데 아니네요.
커널는 시스템의 모든 것을 제어합니다.
시스템이 처음 시작될 때 커널는 부트로더 다음에 로드되는 첫 번째 프로그램입니다.
커널가 나머지 모두 처리해야 하기 때문입니다.
꺼질 때까지 커널는 메모리를 저장하고 커널는 디스크 관리 메모리 관리 작업 관리와 같은 저수준 작업입니다.
관리 프로세스가 커널에 요청하면 시스템 호출이라고 합니다.
파일을 읽는 과정도 하드웨어와 프로세스 간의 상호작용이고 이를 위해서는 당연히 커널가 필요하다.
하드웨어 커널 프로세스 스레드 모드 콤이 설정되면 커널 모드에 있음을 의미합니다.
모드 콤이 설정되어 있지 않으면 사용자 모드입니다.
사용자 모드의 프로세스는 프로세서 중지, 모드 비트 변경, 작업 시작 또는 참조 코드 주소 공간의 커널 영역에 직접 액세스하는 것과 같은 권한 명령을 수행할 수 없습니다.
사용자 모드 프로세스가 커널 데이터 구조 영역에 액세스할 수 있도록 하는 파일 시스템이라는 영리한 메커니즘을 제공합니다.
신호는 시스템에서 어떤 유형의 이벤트가 발생했음을 프로세스에 알리는 작은 메시지입니다.
이러한 메커니즘에 대한 정보를 제공합니다
예를 들어, 프로세스가 0으로 나누기를 시도하면 커널는 사용자에게 신호를 보냅니다.
그래서 오류 처리 과정은 커널에 의해 이루어지므로 사용자는 무슨 일이 일어나고 있는지 알지 못하므로 커널는 이 신호를 통해 어떤 오류가 발생했는지 사용자에게 알려줍니다.