사용자 프로세스와 커널 프로세스에서 동시에 공유 리소스를 보호하는 방법은 무엇입니까? 희소하고 아주 코너 케이스입니다. 나는 인터뷰에서이 질문을 받았다. TIA사용자 프로세스와 커널 프로세스에서 공유 리소스를 동시에 보호하는 방법은 무엇입니까?
2
A
답변
0
음, 여러 가지 방법으로 수행 할 수 있습니다. 하나는 이러한 방법은
시스템 호출
이 잠금을 해제 할 수있는 잠금을 획득하기 위해 하나 하나를 두 개의 시스템 호출을 작성합니다. 사용자 프로세스가 공유 자원에 액세스하려고하면 acquire-lock 시스템 호출을 호출합니다. 시스템 호출이 성공적으로 반환되면 사용자 프로세스는 공유 리소스에 액세스 할 수 있습니다. 사용자 프로세스가 완료되면 릴리스 시스템 호출을 호출하여 잠금을 해제합니다. 시스템 호출 자체는 spinlock_t
또는 mutex_t
(또는 다른 잠금 메커니즘) 릴리스를 획득합니다. 공유 자원에 액세스하려는 커널 프로세스는 spin_lock/spin_unlock
또는 mutex_lock/mutex_unlock
을 사용하여 동일한 잠금을 획득해야합니다.
@Damon이 지적한 바와 같이 이것은 매우 일반적인 질문이며 구체적인 답변을 제공하기 위해 인터뷰에 특정 질문을해야합니다.
관련 문제
- 1. 동시에 여러 프로세스에서 난수를 생성하는 방법은 무엇입니까?
- 2. Windows 드라이버 - 사용자 프로세스와 통신합니다.
- 3. Qt 리소스를 공유 라이브러리에서 초기화하는 방법은 무엇입니까?
- 4. C# 서버 프로세스와 웹 사이트간에 데이터 공유
- 5. 커널 모드에서 실행중인 프로세스와 루트로 실행중인 프로세스의 차이점은 무엇입니까?
- 6. 외부 프로세스에서 stdout을 동시에 사용합니다.
- 7. 사용자 공간과 커널 스레드 간의 공유 메모리
- 8. 사용자 공간과 커널 공간간에 메모리 공유
- 9. 공유 MySql 사용자를 보호하는 방법
- 10. Mac OSX : 사용자 프로세스에서 커널 모듈로 파일 전달
- 11. x86에서 Linux는 사용자 프로세스와 커널에 다른 세그먼트를 사용하는 이유는 무엇입니까?
- 12. dll을 보호하는 방법은 무엇입니까?
- 13. 내 사이트가 훼손되었습니다. 공유 호스팅에서 자신을 보호하는 방법은 무엇입니까?
- 14. 자식 프로세스와 부모 프로세스를 동시에 실행하는 방법
- 15. 리소스를 공유 할 때 파이썬 스레드에서 전역을 피하는 방법은 무엇입니까?
- 16. 사용자 모드에서 커널 모드로 전환하는 방법은 무엇입니까?
- 17. 동시에 drawable 및 drawable-hdpi에서 리소스를 사용하는 방법은 무엇입니까?
- 18. 엔딩 프로세스에서 네이티브 리소스를 재생 하시겠습니까?
- 19. MsBuild에서 프로젝트간에 공유 리소스를 동기화하는 방법
- 20. remap_pfn_range가 커널 메모리를 사용자 공간에 다시 매핑하는 방법은 무엇입니까?
- 21. Unix IPC 리소스를 자동으로 제거하는 방법은 무엇입니까?
- 22. 가상 메모리 : 프로세스와 시스템의 하나임
- 23. 레일즈에서 루비의 사용자 프로필 데이터베이스 테이블을 올바르게 보호하는 방법은 무엇입니까?
- 24. 리소스를 DirectX11에서 Directx9로 공유
- 25. PE 파일 리소스를 보호하는 방법 (문자열, 이미지 ....)?
- 26. WCF PerCall 서비스를 사용하여 리소스를 보호하는 방법
- 27. 하나의 프로세스에서 다중 공유 메모리 생성
- 28. 커널 스레드를 이해하는데 문제가 있습니다. 실제로 커널 스레드는 무엇입니까?
- 29. CUDA의 커널 호출간에 공유 메모리를 사용하는 방법은 무엇입니까?
- 30. 커널 설정, 공유 메모리 구성을 변경하는 방법은 무엇입니까?
커널에서 아무것도 보호 할 수 없습니다. 그것은 모든 것을 제어 할 수 있습니다. – Linuxios
리소스 페이지를 액세스 할 수없는 것으로 표시 할 수 있습니다 (메모리 리소스라고 가정). 사용자 공간 권한이 커널에 영향을 미치지 않을 수도 있기 때문에 커널에서이 작업을 수행해야한다고 생각합니다. – fork0
@Linuxios, 이것은 일반적인 성명서입니다. 그러나 일반적으로 스핀 잠금, 세마포어, 뮤텍스 (mutex)와 같은 몇 가지 잠금 메커니즘 (물론 협동 환경에서만 사용)을 사용하고 있습니다. 내 쿼리는이 컨텍스트에만 관련이 있습니다 (제한적). . 감사합니다 – kannah