Process Creation


<aside> 💡 NOTE

</aside>

Process Management2


<aside> 💡 NOTE

java에서는 시스템콜을 할수없다. 따라서 JNI라는 것을 이용해서 시스템 콜을 하며 단계는 다음과 같다. JVM → JNI → 시스템 콜 → 커널 → 디스크 컨트롤러 → 커널 버퍼 복사→ JVM 버퍼 복사 java가 느리다는 이유도 여기서 나온다. 해결방법으로 NIO(new Input Output)이 등장했다.

스크린샷 2024-03-03 오후 8.23.06.png

IO과정에서 유저 영역은 커널 영역을 거치면서 버퍼와 복사 과정이 추가된다.

예시 1) 비디오 카드(모니터) - 커널 영역의 버퍼로 데이터를 이동하는 것은 DMA(direct memory access) 기술을 통해 cpu자원이 필요없다. 하지만 커널 → 프로세스 영역으로 이동은 cpu가 반드시 개입해야한다. 따라서 JVM 내 버퍼로 복사해 오는 것이 아닌 커널 영역에 버퍼의 데이터를 직접 사용할 수 있다면 cpu 자원낭비를 막을 수 있다.

예시 2) 디스크(HDD, SSD) → 커널 영역으로 데이터를 복사해오는 동안 JVM으로 바로 복사되지 않고 커널 영역에 내 버퍼가 찰때까지 블로킹 된다. 그리고 버퍼에 가득 찼을때 JVM으로 데이터를 전송한다. 참고 : https://internet-craft.tistory.com/94

프로세스 간 협력

<aside> ✍️ NOTE

독립적 프로세스(Independent) 따라서 프로세스 간 정보를 주기 위해서 IPC를 이용합니다.

</aside>

CPU 스케줄링

<aside> ✍️ NOTE

CPU and I/O Bursts in Program Execution

스크린샷 2024-03-03 오후 9.02.15.png

</aside>

스크린샷 2024-03-03 오후 7.46.12.png

CPU 로드를 보면 빨강은 CPU가 커널 영역의 일을 했다는 것을 표시하고 하늘 색은 CPU가 커널 이외의 영역, 즉 사용자 영역의 작업을 했다는 것을 의미합니다.

스크린샷 2024-03-03 오후 7.48.06.png