프로세스 동기화 (Process Synchronized) - 다중 프로세스(스레드) 프로그래밍환경에서 논리주소공간을 직접공유하게 될 경우 여러개의 프로세스(스레드)에서의 동시접근으로 인한 비일관성이 발생할 수 있다. - 이러한 비일관성을 방지하고 공유자원에대한 일관성을 책임져주는 것이 동기화이다. 예를들어 counter++ 라는 명령어가 존재한다고 하자. 우리 눈에는 한줄의 명령어지만 사실 컴퓨터입장에서보면 3개의 아래의 명령어로 동작한다. register = counter register = register + 1 counter = register 그런데 동시에 3개의 프로세스가 이 명령어를 실행한다고 가정하자. 그러면 이 9개의 명령어가 뒤섞여 비일관성을 야기할 수 있다. 이렇게 프로세스가 어떤 순서..
서로다른 Process간에 통신을 하기위해서는 IPC, RPC등의 기법들을 이용해야하는데 이번 포스팅에서는 IPC기법에는 어떤 것들이 있고, 각자 사용되는 상황 및 특징들을 살펴보겠다. 1. Anonymous PIPE (익명 파이프) 2. Named PIPE 3. Message Queue 4. Shared Memory 5. Socket - 해당 포스트에서는 따로 다루지 않습니다. 워낙 뭐.. ㅎㅎ 6. ..... 위 5개는 확실하게 알고가자!! 1. Anonymous PIPE - 외부 프로세스에서는 이 파이프에 접근이 불가능하다. But, fork등의 방법으로 자식프로세스가 태어난 경우에는 File Descriptor를 상속받아 통신가능. int fd[2]; rc = pipe(fd); → 0번 index..
Thread란 ? 하나의 프로세스내에서 실행되는 흐름의 단위. CPU이용의 기본 단위이기도 하다. 위와 같이 같은 프로세스에 속한 다른 스레드와 Code, Data, Heap, File등의 운영체제 자원들을 공유한다. 기본적으로 하나의 프로세스는 하나의 스레드로 동작하지만, 다수의 제어 스레드를 가진다면 동시에 하나 이상의 작업을 수행할 수 있다. 다중 Thread 프로그래밍의 장점. 1. 응답성(Responsiveness) : 자원을 많이 사용하는 작업을 동작시켰을 때 단일 스레드 프로그램이라면 그 작업 이외에는 동작을 하지 못하게된다. 그러나 다중 Thread를 사용해서 자원을 많이 사용하는 작업을 Thread로 동작시킨 다면, 그 외의 작업도 문제없이 진행이 가능하다. 2. 자원 공유(Resourc..