Windows I/O의 이해 - 드라이버와 디바이스
CS/OS2024. 3. 3. 00:31Windows I/O의 이해 - 드라이버와 디바이스

I/O Manager I/O 시스템은 IRP (I/O Request Packet)이라 불리는 패킷에 기반하여 동작한다 예외로, IRP생성을 생락하고 I/O를 수행하는 Fast I/O라는 기법이 있다. I/O Manager는 I/O작업을 표현하기 위해 메모리에 IRP를 생성하고, IRP에 대한 포인터를 드라이버에 전달한 후 I/O작업이 완료되면 패킷을 폐기한다. 드라이버는 요청된 I/O 작업이 완료되었거나, 추가 처리를 위해 다른 드라이버로 전달해야하기 때문에, IRP를 수신하고, IRP가 지정한 작업을 수행한 후, IRP를 I/O Manager에게 다시 전달한다. I/O Manager는 여러 드라이버가 공통으로 쓸 수 있는 I/O처리 수행코드를 제공하고, 드라이버가 제공하는 모듈식 인터페이스 덕에 I/O..

[Thread] 스핀락(SpinLock)
SERVER/Multi-Thread2022. 9. 3. 17:53[Thread] 스핀락(SpinLock)

여러개의 스레드가 공유자원을 쓰고있을 때, 해당 공유자원이 있는 임계 영역(Critical Section)에 동시에 접근하게 되면, 공유 자원에 대한 접근이 어떤 순서로 이루어졌는지에 따라 실행 결과가 같지 않고 실행할때 마다 달라지는 경쟁 상태(Race Condition)이 발생하게 된다. 따라서 해당 문제를 해결하기 위해 한 스레드가 임계 영역에 접근하면 다른 스레드들은 이 스레드가 이용하는 동안 해당 임계영역에 접근 할 수 없도록, 즉 두 개 이상의 프로세스가 동시에 임계영역에 접근하는 것을 막하야하는데, 이를 상호 배제(Mutual Exclusion)라고 한다. 상호배제는 Lock을 통해 달성할 수 있는데, 이 글에서는 Lock을 구현하는 여러가지 방법중 스핀락(SpinLock)에 대해서 알아보고..

image