OperatingSystem (2) 썸네일형 리스트형 [OS] 동시성 이슈에 대해 알아보겠습니다. 동시성(Concurrency)이란?병행성이라고 불리기도 하는 동시성은 논리적으로 두 개 이상의 task 가 동시에 실행되는 것처럼 보이는 상태를 의미합니다. 이를 구현하기 위해 하나의 작업을 일정 부분만 수행한 후, 다음 작업으로 전환하며 실행합니다. 이 과정에서 문맥 교환이 필요합니다. 동시성 환경에서는 여러 스레드가 동시에 공유 자원(shared resource)을 수정하려 할 때 문제가 발생할 수 있습니다. 이를 동시성 이슈라고 합니다. 먼저, 공유 자원과 임계 영역에 대해 알아보겠습니다.공유 자원과 임계 영역이란?공유 자원은 여러 스레드나 프로세스가 동시에 접근할 수 있는 데이터를 의미합니다. 코드 측면에서는 Service 등에 전역 변수가 공유 자원이 될 수 있습니다.프로세스 메모리 영역은 크게.. [OS] 멀티프로세스(multi-process)와 멀티스레드(multi-thread)를 비교해보겠습니다. 이번 글에서는 멀티 프로세스와 멀티 스레드를 비교해보록 하겠습니다. 두 개념 모두 "멀티(multi)"가 붙는다는 공통점이 있어 헷갈리는 개념이기도 합니다. "멀티(multi, 다수의)" 를 뗀 "프로세스(process)"와 "쓰레드(thread)"에 대해 먼저 정리해보겠습니다. 프로세스란 무엇일까요?실행중인 프로그램을 프로세스라고 합니다. 다시 말해 보조기억장치에 저장되어 있던 프로그램이 실행 되기 위해서 메모리에 적재되는 순간 프로세스가 됩니다. 이러한 과정을 프로세스가 생성된다라고 표현합니다. 프로세스는 나뉘어서 메모리에 적재됩니다. 메모리에는 커널 영역과 사용자 영역이 있습니다. 커널 영역에는 프로세스 생성시 PCB(Process Control Block)이라는 프로세스와 관련된 정보들이 담긴 .. 이전 1 다음