목록CS (3)
장미정원

들어가며동기, 비동기, 블로킹, 논블로킹이라는 용어는 한 번쯤 들어봤거나 개념에 대해 조금은 알고 있을 것이라 생각됩니다. 순서대로 처리하는 것이 동기.. 그 반대가 비동기.. 작업 흐름이 끊기는 것이 블로킹.. 제어권.. 이렇게 머리속에 키워드만 생각나고 정확한 정의가 헷갈리며 개발을 할때 자주 등장하는 개념과 용어이기 때문에 정확히 정리해보는 시간을 가지려 합니다. 동기와 비동기 Synchronous, Asynchronous동기의 영단어의 어원은 Synchronous의 Syn은 '함께', chrono는 '시간'이라는 뜻입니다. 즉 함께 시간을 맞춰서 실행한다. 정도로 해석할 수 있습니다. 함께 시간을 맞춰서 실행한다는 말은 요청한 작업이 끝나야 남은 작업을 이어나간다라고 생각할 수 있습니다. 즉 작업..

프로세스프로세스는 실행 중인 프로그램을 의미합니다. 컴퓨터에 있는 여러 프로그램들은 보조기억장치에 저장되어 있다가 프로그램을 실행하는 순간 메모리에 적재되고 프로그램은 프로세스가 됩니다. 프로세스는 실행될때 CPU의 자원을 필요로 합니다. 컴퓨터에는 여러 개의 프로세스들이 실행될 수 있습니다. 하지만 모든 프로세스가 CPU의 자원을 동시에 사용할 수는 없으므로 각자 차례를 기다리며 한정된 시간만큼만 CPU 자원을 사용하고 돌려주는 것을 반복하여 동작합니다. 이러한 프로세스의 실행 순서를 관리하고 프로세스에 지원을 배분하는 일은 운영체제가 담당하는데 이를 위한 운영체제는 PCB를 이용합니다. PCB - Process Control Block프로세스 제어 블록은 프로세스의 정보를 저장하는 자료구조입니다. 메..

동기화여러 프로세스나 스레드가 공유자원에 접근하여도 공유자원의 일관성을 유지할 수 있는 것입니다. 프로그램에서 여러 쓰레드가 공유자원에 동시에 접근하였을 때 타이밍이나 순서에 따라 결과값이 달라지는 일이 발생할 수 있습니다. 이런 현상을 Race Condition 경쟁상태라고 합니다. 이러한 경쟁상태에 의해 프로그램의 의도와 다르게 동작하게 될 위험이 있기 때문에 동기화 작업으로 이러한 공유 데이터의 동시에 접근하는 것을 막기 위해 순서를 제어하여 공유 데이터의 일관성을 유지하여야합니다. 공유 데이터의 일관성을 보장하기 위해 한번에 특정 쓰레드나 프로세스만 접근 가능한 영역을 Critical Section 임계영역이라고 하며 이 임계영역에는 특정 프로세스나 쓰레드만 접근을 허용하여 공유 데이터의 일관성을..