Java/네트워크 통신

[Java] 89. 사용자 모드와 커널 모드

Song hyun 2024. 5. 22. 09:30
728x90
반응형

[Java] 89. 사용자 모드와 커널 모드

1. 컴퓨터의 구성

2. 소프트 웨어 시스템의 구성

3. 이중 모드와 시스템 호출

4. 인터럽트


 

1. 컴퓨터의 구성

(1) 컴퓨터 시스템은 크게 하드웨어(Hardware)와 소프트웨어(Software) 두 가지로 나눌 수 있다.

(2) 하드웨어(Hardware)는 물리적으로 컴퓨터 시스템을 구성하고 있는 기계장치이다.

(3) 소프트웨어(Software)는 논리적으로 컴퓨터 시스템을 구성하고, 하드웨어들을 관리하고 동작시킨다.

*소프트웨어는 명령어들의 집합으로 볼 수 있으며, 그것들을 '프로그램'이라고 말할 수 있다.

 


 

2. 소프트 웨어 시스템의 구성 : 운영 체제의 핵심은 커널!

(1) 소프트웨어 시스템은 User 프로그램(사용자 프로그램)OS 프로그램(운영체제)로 나뉜다.

(2) OS 프로그램(운영체제)는 사용자에게 GUI를 제공하여 사용자와 컴퓨터 간의 상호작용을 쉽게 처리할 수 있도록 도와주며, 다양한 소프트웨어 응용 프로그램들을 관리하는 등 많은 서비스를 지원한다. 

(3) OS 프로그램 내에서도 가장 핵심적인 서비스가 있는데, 바로 자원에 접근하고 조작하는 기능이다.  

이 핵심 서비스를 담당하는 부분을 커널(Kernel)이라고 한다.

 


 

3. 이중 모드와 시스템 호출

(1) OS 프로그램은 사용자가 실행하는 응용 프로그램들이 하드웨어 자원에 직접 접근하는 것을 방지하여, 자원을 보호한다. 만약 응용 프로그램이 CPU, 메모리 등 하드웨어를 마음대로 접근하고 조작할 수 있다면 자원에 악영향을 미칠 수 있기 때문이다. 

(2) 때문에 운영체제는 응용 프로그램들이 자원에 접근하려고 할 때마다, 하드웨어로 직접 접근하는 것이 아니라, 자신을 통해서 하드웨어에게 접근하도록 한다. 이를 이중 모드라고 말한다.

 

(3) 이 때, 사용자 모드(User 프로그램, 응용 프로그램)이 자원에 접근하는 운영체제 서비스를 제공받으려면, 운영체제에 직접 요청을 보내 커널 모드로 전환되어야 한다. 이런 요청을 시스템 호출(System Call)이라고 한다.

(4) 일반적으로 응용 프로그램은 실행 과정에서 운영체제 서비스를 빈번하게 이용한다. 그 과정에서 시스템 호출을 사용하게 되고, 사용자 모드와 커널 모드를 빠르게 오가게 된다.

 

 


 

4. 인터럽트

(1) 인터럽트는 하드웨어/소프트웨어에 의해 발생할 수 있는 신호로, 현재 프로세서가 수행 중인 작업을 잠시 중지하고, 긴급하게 처리해야 할 작업을 처리하기 위해 발생한다.

(2) 인터럽트는 컴퓨터 시스템에서 매우 중요한 개념으로, 실행중인 프로그램의 일반적인 흐름을 일시적으로 중지시켜 특정 작업을 처리한 뒤, 다시 원래의 프로그램 실행으로 돌아가게 하는 메커니즘이다.

 

 


 

5. 시스템 호출 vs 인터럽트

(1) 발생 원인

-시스템 호출: 운영체제의 서비스를 요청할 때

-인터럽트: 예측 가능/불가능한 다양한 이유들로 발생

 

(2) 처리 방식

-시스템 호출: 사용자 프로그램과 운영체제 간의 인터페이스로 사용되며, 커널 모드로의 전환을 포함

-인터럽트: 프로세서가 즉시 현재 작업을 중지하고, 인터럽트 처리 루틴을 실행하게 한다.

 

*InterruptedException: 자바에서 스레드가 대기 상태(Sleep, wait)에 있을 때, 다른 스레드가 현재 스레드를 인터럽트 할 때 발생하는 예외이다.

-> 즉, 하나의 스레드가 잠들어 있다가, 의도치 않게 다른 스레드가 인터럽트를 발생시킨 것이다.

계속 대기 상태로 있어야 하는 스레드가 깨어나게 된다면, 적절한 예외처리를 통해 스레드 자원을 종료시키거나, 다른 작업을 수행시킬 수도 있다.

728x90
반응형