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