Race Condition 경쟁 상태 여러 스레드가 공유된 자원에 동시에 접근하여 그 순서와 타이밍에 따라 결과가 달라지는 상황을 말한다. 이런 경우, 실행할 때마다 다른 결과를 얻는다. 컴퓨터의 작동에서 일반적으로 발생하는 결정적 결과와 달리, 결과가 어떠할지 알지 못하거나 실행할 때마다 결과가 다른 경우를 비결정적(Indeterminate)인 결과라고 부른다. Critical Section 임계 영역 멀티스레드가 같은 코드를 실행할 때 "경쟁 상태"이 발생하기 때문에, 이러한 코드 부분은 임계 영역(Critical Section)이라고 부른다. 공유 자원에 접근하지만, 동시에 여러 스레드에서 실행되면 안 되는 코드 부분이다. Mutual Exclusion 상호 배제 동기화 기법의 하나 락이나 세마포어..
멀티스레딩 멀티스레딩은 컴퓨터 프로그래밍에서 여러 개의 thread를 사용하여 동시에 작업을 수행하는 기술이다. 이를 통해 여러 작업을 동시에 처리하고 병렬성을 이용하여 성능을 향상시킬 수 있다. 멀티스레딩을 구현하기 위해서는 스레드의 생성, 동기화, 스케줄링, 자원 공유 등을 적절하게 관리해야 한다. 멀티스레딩의 이점 성능 향상: 멀티스레딩은 여러 작업을 동시에 실행함으로써 CPU의 사용률을 높이고 작업을 병렬로 처리함으로써 전체적인 성능을 향상시킬 수 있다. 응답성 개선: 멀티스레딩을 사용하면 작업을 여러 스레드로 분할하여 동시에 처리할 수 있으므로, 사용자에게 빠른 응답성을 제공할 수 있다. 자원 공유: 멀티스레딩은 여러 스레드가 공유된 자원에 동시에 접근하고 사용할 수 있도록 해준다. 이를 통해 ..
본 글은 운영체제(아주 쉬운 세 가지 이야기) 제 2판을 참고하여 정리하였습니다. 프로그램을 쉽게(동시에) 실행하고, 프로그램 간의 메모리 공유를 가능케 하고, 장치와 상호작용을 가능케 하고, 다양한 흥미로운 일을 할 수 있게 하는 소프트웨어가 있다. 시스템을 사용하기 편리하면서 정확하고 올바르게 동작시킬 책임이 있기 때문에 소프트웨어를 운영체제(Operating System, OS)라고 부른다. 운영체제 Operating System, OS 운영체제는 가상화(virtualization)라고 불리는 기법을 사용한다. 운영체제는 프로세서, 메모리, 또는 디스크와 같은 물리적인 자원을 이용하여 일반적이고, 강력하고, 사용이 편리한 가상 형태의 자원을 생성한다. 이 때문에 운영체제를 때로는 가상 머신(virt..
동시성과 병렬성 동시성은 여러 작업이 동시에 진행되는 것처럼 보이는 개념이다. 하나의 CPU 코어에서 여러 작업을 번갈아가며 실행하면서 동시성을 구현할 수 있다. 이때 작업 간에는 시간적인 겹침이 발생하며, 각 작업은 작은 단위의 실행을 번갈아가며 처리한다. 동시성은 프로그램의 응답성을 향상시키고 작업의 순서나 우선순위를 조절하는 데에 활용된다. 쓰레드를 이용하여 동시성을 구현할 수 있다. 반면에 병렬성은 여러 작업이 실제로 동시에 실행되는 것을 의미한다. 병렬성은 여러 CPU 코어 또는 다중 처리 장치를 활용하여 작업을 동시에 처리함으로써 성능을 향상시킨다. 병렬성은 동시에 실행 가능한 독립적인 작업들을 분할하고 병렬로 처리함으로써 작업을 빠르게 완료할 수 있다. 병렬성은 주로 CPU 집약적인 작업을 ..