2012-07-18 2 views
2

사용자 프로세스와 커널 프로세스에서 동시에 공유 리소스를 보호하는 방법은 무엇입니까? 희소하고 아주 코너 케이스입니다. 나는 인터뷰에서이 질문을 받았다. TIA사용자 프로세스와 커널 프로세스에서 공유 리소스를 동시에 보호하는 방법은 무엇입니까?

+0

커널에서 아무것도 보호 할 수 없습니다. 그것은 모든 것을 제어 할 수 있습니다. – Linuxios

+0

리소스 페이지를 액세스 할 수없는 것으로 표시 할 수 있습니다 (메모리 리소스라고 가정). 사용자 공간 권한이 커널에 영향을 미치지 않을 수도 있기 때문에 커널에서이 작업을 수행해야한다고 생각합니다. – fork0

+0

@Linuxios, 이것은 일반적인 성명서입니다. 그러나 일반적으로 스핀 잠금, 세마포어, 뮤텍스 (mutex)와 같은 몇 가지 잠금 메커니즘 (물론 협동 환경에서만 사용)을 사용하고 있습니다. 내 쿼리는이 컨텍스트에만 관련이 있습니다 (제한적). . 감사합니다 – kannah

답변

0

음, 여러 가지 방법으로 수행 할 수 있습니다. 하나는 이러한 방법은

시스템 호출
이 잠금을 해제 할 수있는 잠금을 획득하기 위해 하나 하나를 두 개의 시스템 호출을 작성합니다. 사용자 프로세스가 공유 자원에 액세스하려고하면 acquire-lock 시스템 호출을 호출합니다. 시스템 호출이 성공적으로 반환되면 사용자 프로세스는 공유 리소스에 액세스 할 수 있습니다. 사용자 프로세스가 완료되면 릴리스 시스템 호출을 호출하여 잠금을 해제합니다. 시스템 호출 자체는 spinlock_t 또는 mutex_t (또는 다른 잠금 메커니즘) 릴리스를 획득합니다. 공유 자원에 액세스하려는 커널 프로세스는 spin_lock/spin_unlock 또는 mutex_lock/mutex_unlock을 사용하여 동일한 잠금을 획득해야합니다.

@Damon이 지적한 바와 같이 이것은 매우 일반적인 질문이며 구체적인 답변을 제공하기 위해 인터뷰에 특정 질문을해야합니다.

관련 문제