📌 동기화 (Synchronization) 동기화 (Synchronization): 다수의 프로세스 혹은 스레드를 동시에 실행해도 공유 데이터의 일관성을 유지하는 것 멀티 스레드는 하나의 프로세스에서의 공유된 자원을 사용하며 얻는 이점이 많다. 공유된 자원을 사용함으로써 메모리를 효율적으로 사용할 수 있고, 스레드 간 컨텍스트 스위칭이 가볍다는 장점이 있다. 하지만 이러한 이점과 동시에 동기화 작업을 해야 된다는 단점 또한 존재한다. 즉, 자원을 공유하며 공동으로 사용하기 때문에 공유 자원 접근 순서를 정하여 문제가 발생하지 않도록 해야 한다는 것이다. 예를 들어 하나의 객체에 두 개의 스레드가 접근할 때, 스레드가 언제 컨텍스트 스위칭이 되었는지에 따라 결과가 달라질 수 있는 현상이 발생할 수도 있는 ..
📌 IPC (Interprocess Communication) 프로세스의 가장 큰 특징은 독립된 메모리 공간을 할당 받는다는 것이다. 이는 개별 독립적이기 때문에 동기화를 위한 작업을 하지 않아도 된다는 장점이 있으나, 자원 소모적이라는 단점도 함께 존재한다. 그렇다면 이렇게 독립적으로 메모리 공간을 할당 받는 프로세스들이 어떻게 상호 간 통신을 할까? 이는 바로 커널에서 제공하는 IPC를 통해 서로 다른 프로세스들끼리 통신을 한다. IPC (=Interprocess Communication)는 프로세스들 사이에 서로 데이터를 주고 받는 행위 또는 그에 대한 방법이나 경로를 말한다. (IPC 정의 출처: 위키피디아) IPC 없이는 프로세스 간 통신이 어렵기 때문에 커널에서 IPC라는 내부 프로세스 간 통..

📌 프로그램과 프로세스 프로그램과 프로세스를 설명하기 전에, 사진과 함께 용어들을 간단하게 정리하고자 한다. Program: 컴퓨터가 실행할 수 있는 명령어들의 집합 Proess: 컴퓨터에서 실행 중인 프로그램 CPU(Central Processing Unit): 명령어를 실행하는 연산 장치 Main Memory: 프로세스가 CPU에서 실행되기 위해 대기하는 곳 PCB(Process Control Block): 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는 운영 체제 커널의 자료 구조 우리는 컴퓨터를 사용하면서 흔히 프로그램이라는 단어를 접하곤 한다. 하지만 컴퓨터 용어에 관심이 없거나 작업 관리자 창을 자세히 보지 않았을 경우 프로세스라는 단어는 다소 생소할 수 있다. 또한 프로그램과 어떤 관계..