본문 바로가기

Computer Science/Operating System20

IPC, Inter-Process Communication IPC, Inter-Process Communication 앞선 포스팅에서도 많이 살펴봤듯이, 프로세스는 독립적으로 실행된다. 프로세스와 흔히 비교되는 게 스레드인데, 스레드는 대부분의 메모리 공간을 공유하며 한 프로세스 내의 스레드끼리는 공유 자원을 가진다. 하지만 프로세스는 개별적으로 메모리 공간을 가지며 독립적으로 실행된다. 이러한 프로세스끼리도 통신할 수 있도록 한 기법이 바로 IPC이다. ❓ IPC, Inter-Process Communication IPC는 말 그대로 프로세스 사이의 통신 기법을 의미한다. 프로세스는 유저 공간에서 독립적으로 돌아가고 있기 때문에 서로에게 영향을 끼치지 않지만, 통신이 어렵다는 단점이 있다. 이러한 문제를 해결하기 위해 커널 영역에서 IPC라는 프로세스 간 통신.. 2024. 4. 15.
System Call : fork() & exec() System Call : fork() & exec() System call로 하드웨어를 컨트롤하면서 여러가지 작업을 수행할 수 있다. System call을 활용한 작업 영역을 다음 세 가지로 구분한다. File I/O Process Control Inter Process Communication fork와 exec는 이 중 Process Control의 영역이다. 즉, fork()와 exec()는 모두 한 프로세스가 다른 프로세스를 실행시키기 위해 사용되는 시스템 콜이다. 하지만 분명한 차이가 존재한다. 우선 각각의 동작과 예시에 대해서 알아보자. fork() fork() 시스템 콜은, 기존의 프로세스를 유지하면서 새로운 프로세스를 위한 메모리를 추가적으로 할당하고, 똑같은 코드를 복사하여 각각을 실행.. 2024. 4. 15.
멀티 프로세스와 멀티 스레드 멀티 프로세스와 멀티 스레드는 한 어플리케이션에 대한 처리 방식이다. 각각이 어떤 것이고, 장단점이 무엇인지 알아보자. 멀티 프로세스 ❓ 멀티 프로세스, Multi Process 하나의 프로그램을 여러 개의 프로세스로 구성하여, 각 프로세스가 독립적으로 작업을 수행하는 것을 말한다. 보통은 하나의 프로그램 실행에 대해 하나의 프로세스가 메모리에 생성되지만, 부가적인 기능을 위해 여러 개의 프로세스를 생성하는 것이다. 내부 구조 멀티 프로세스의 내부를 보면, 하나의 부모 프로세스가 여러 개의 자식 프로세스를 생성함으로써 다중 프로세스를 구성하는 구조이다. 한 프로세스는 실행되는 도중 프로세스 생성 시스템 콜을 통해 새로운 프로세스들을 생성할 수 있는데, 다른 프로세스를 생성하는 프로세스를 부모 프로세스(P.. 2024. 4. 15.
JAVA의 Thread JAVA의 Thread 자바에서는 여러 스레드를 생성하여 여러 작업들을 병렬적으로 수행할 수 있다. 오늘은 이에 대해 알아보자! Lang.Thread의 주요 메소드 우선 간단하게 스레드와 관련된 메서드를 먼저 보자. 각각은 스레드의 상태를 변화시키는 메서드이다. start() NEW에서 RUNNABLE로 보낸다. run() 스레드 상태가 RUNNING되면, run 메소드에 오버라이딩된 로직을 수행한다 yield() 우선권이 동일한 스레드에게 실행 기회를 양보한다. 해당 스레드는 RUNNING에서 RUNNABLE 상태로 바뀐다. sleep() 현재 실행중인 스레드를 주어진 시간동안 TIMED_WAITING 상태로 빠트린다. join() 다른 스레드와 협동 작업을 할 때 주로 쓴다. 호출되면 BLOCKED .. 2024. 4. 15.