프로그램 실행 중에, 만약 컴퓨터 시스템 자체에 문제가 생겼거나 혹은 이전에 시스템에 요청한 작업이 완료가 됐으면 운영체제로 부터 알람을 받습니다.
또는, 컴퓨터 시스템에 치명적일 수 있는 동작(operation)들은 프로그램 레벨에서 바로 실행할 수 없고 반드시 OS가 제공하는 인터페이스를 통해 OS에게 대리로 수행해 달라고 요청을 해야 합니다.
출처 : 쉬운코드 유튜브
우리가 개발하는 프로그램은 일반적으로 유저 모드에서 실행된다.
프로그램 실행 중 인터럽트가 발생하거나 시스템 콜을 호출하게 되면 커널 모드로 전환된다.
프로그램의 현재 CPU 상태를 저장한다.
커널이 인터럽트나 시스템 콜을 직접처리 즉, CPU에서 커널 코드가 실행된다.
처리가 완료되면 중단됐던 프로그램의 CPU 상태를 복원 -> 유저 모드 (다시 통제권을 프로그램에게 반환) -> 프로그램이 이어서 진행
시스템을 보호하기 위해 -> 우리가 사용하는 프로그램이 시스템이나 하드웨어에 간섭 또는 악영향을 미칠 가능성이 존재한다.
인터럽트가 발생하면 CPU에서는 즉각적으로 인터럽트 처리를 위해 커널 코드를 커널 모드에서 실행한다.
시스템 콜이 발생하면 해당 커널 코드가 커널 모드에서 실행된다.
Thread thread = new Thread();
thread.start();
native가 명명되면 대부분 운영체제를 뜻한다. JNI(Java Native Interface)를 통해 기반이 되는 OS의 System call을 호출 한다.