본문 바로가기

Computer Science/운영체제9

프로세스/스레드 동기화 동시다발적으로 실행되는 프로세스/스레드들은 서로 협력하며 영향을 주고받는다. 이 과정에서 공유 자원 또는 데이터가 있을 때 여러 프로세스가 동시에 해당 자원에 접근하게 되면, 자원의 일관성이 깨질 수 있고 이에 따른 문제가 발생할 수 있다. 이렇게 여러 프로세스나 스레드가 동기화 메커니즘 없이 자원에 접근하려는 상황을 Race Condition(경쟁 상태)라고 한다. 따라서 Race Condition 상태에서, 프로세스들의 순서를 정하여 데이터의 일관성을 유지시키는 작업을 프로세스 동기화라고 한다. 임계구역 문제 멀티 프로세스 환경에서 둘 이상의 프로세스가 동시에 접근해서는 안되는 공유자원의 코드 영역을 임계구역이라고 한다. 임계구역에서 발생하는 문제를 해결하기 위해서는 다음의 3가지 조건을 모두 충족시.. 2023. 3. 19.
쓰레드 세이프(Tread Safe) 멀티 스레드 환경에서의 스레드 세이프 (Thread Safe) 쓰레드 세이프(Thread Safe)란 멀티 스레드 프로그래밍 과정에서 어떤 공유 자원(함수, 변수, 객체 등)에 여러 스레드가 동시에 접근해도 프로그램 실행에 문제가 없는 상태를 말한다. Thread Safe를 지키기 위한 조건 Re-entrancy 어떤 함수가 한 스레드에 의해 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하더라도 그 결과가 각각에게 올바르게 주어져야한다. Thread-local Storage 공유 자원의 사용을 최대한 줄여 각각의 스레드에서만 접근 가능한 저장소들을 사용함으로써 동시 접근을 막는다. Mutual exclusion 공유 자원을 꼭 사용해야 할 경우 해당 자원의 접근을 락으로 통제한다. Atomic .. 2023. 3. 19.
Sync vs Async & Block vs Non-Block 동기(Synchronous) vs 비동기(Asynchronous) 동기와 비동기는 프로세스의 수행 순서 보장에 대한 매커니즘이다. 즉 처리해야 하는 작업들을 어떠한 흐름으로 처리할 것이냐에 대한 관점이다. 동기는 요청과 그 결과가 동시에 일어나는 것을 말한다. 즉 요청을 하면 시간이 얼마나 걸리던지 요청한 결과가 주어질 때 까지 계속해서 기다리게 된다. 그래서 I/O 작업 요청 상황에서도 하나의 System call이 끝날때까지 기다려서 그 결과물을 가져온다. 반대로 비동기는 요청과 결과가 동시에 일어나지 않는 것을 말한다. 하나의 요청에 대한 응답을 즉시 처리하지 않아도, 그 대기시간 동안 다른 요청에 대한 처리가 가능한 방식이다. system call이 완료되지 않아도 기다리지 않고, 작업이 완료가 .. 2023. 3. 19.
캐시 메모리 캐시 메모리(Cache Memory) 주기억장치에서 자주 사용하는 프로그램과 데이터를 저장해두어 속도를 빠르게 하는 메모리 주기억장치와 CPU사이에 위치 속도가 빠른 장치와 느린 장치간의 속도 차에 따른 병목현상을 줄이기 위한 범용 메모리 캐시메모리를 사용하면 주 기억장치를 접근하는 횟수가 줄어들어 컴퓨터의 처리속도가 향상 CPU는 데이터를 가져오기 위해 캐시메모리 -> 메모리(RAM) -> 보조기억장치(HDD) 순으로 접근한다. Cache hit ✅ : 캐시 메모리의 데이터를 CPU 레지스터에 복사한다. Cache Miss ❎, Memory hit ✅ : 메모리에서 데이터를 캐시 메모리에 복사하고 캐시 메모리의 복제된 내용을 CPU 레지스터에 복사한다. Cache Miss ❎, Memory Miss ❎.. 2023. 3. 18.
가상 메모리(Virtual Memory) 가상 메모리의 정의 가상 메모리(Virtual Memory)는 프로세스를 실행할 때 실행에 필요한 일부만 메모리에 로드하고 나머지는 디스크에 두는 것을 말한다. 이를 통해 프로세스 전체가 물리적 메모리에 있는 것 '처럼' 수행되는, 즉 물리적 메모리가 훨씬 많이 있는 것처럼 보이게 된다. 결과적으로 메모리에 작은 양의 주소 공간만 있으면 충분히 프로세스를 수행할 수 있고, 그에 따라 더 많은 프로그램을 동시에 실행할 수 있게 된다. (물리적인 메모리 크기보다 크기가 큰 프로세스 또한 실행이 가능하다) 가상적으로 주어진 주소를 가상 주소(virtual address) 혹은 논리 주소(logical address)라고 하며, 실제 메모리 상에서 유효한 주소를 물리 주소(physical address)라고 한.. 2023. 3. 18.
교착상태와 기아상태 교착 상태(Deadlock)이란 서로 다른 프로세스가 서로 점유하고 있는 자원의 반납을 대기하고 있어, 상대방의 작업이 끝나기만을 기다리고 있기 때문에 다음 단계로 진행하지 못하는 상태를 의미한다. 교착 상태의 발생 조건 상호배제(Mutual exclusion) : 한 번에 한 프로세스만 해당 자원을 사용할 수 있어야 한다. 점유대기(Hold and wait) : 최소 하나의 자원을 점유하고 있으면서 다른 프로세스가 사용중인 자원을 추가로 점유하기 위해 대기하는 프로세스가 존재한다. 비선점(No preemption) : 프로세스가 어떤 자원의 사용을 끝낼 때까지 그 자원을 뺏을 수 없다. 순환대기(Circular wait) : 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다. 위의 .. 2023. 3. 18.