2017-09-21 12 views
0

여러 사용자 공간 프로세스가 동시에이 값에 액세스 할 수 있으므로 보안을 위해 일부 잠금 장치 또는 메모리 장벽을 사용해야한다고 생각하지만 리눅스 드라이버에서 코드를 많이 찾을 수 있거나 작성 사례를 보호 할 수 있습니다. . 우리는 정말로 읽기 및 쓰기 모두에 뮤텍스가 필요합니까?sysfs를 통해 가져 오거나 설정할 수있는 int 값을 보호하기 위해 뮤텍스가 필요합니까?

+0

SHM을 사용하고 읽기? (공유 메모리 세그먼트) – rak007

+0

아닙니다. 내 경우는 예를 들어 rw 레지스터가 "REG"이고 드라이버에 "int reg"값이 캐시 된 다음 sysfs 파일을 만듭니다. "/sys/.../reg"라고 가정 해 봅시다. 사용자가 int 값을 "/sys/.../reg"에 에코하면이 값이 REG에 쓰여지고 "int reg"에 캐시됩니다. 사용자 cat "/sys/.../reg"를 사용하면 드라이버는 "int reg"를 사용자에게 제공합니다. 내 질문은 에코와 고양이 사건 모두에 대해 "int reg"를 보호하기 위해 뮤텍스를 추가해야합니까? –

+0

여러 프로세스/스레드가있는 파일로 작성하는 경우이 게시물은 도움이 될 수 있습니다. https://stackoverflow.com/questions/26565498/multiple-threads-writing-on-same-file – rak007

답변

0

코드가 실행되는 CPU 및 시스템에 따라 다릅니다. 실제로 작업이 원자 인 경우 동기화 기술없이이 작업을 수행 할 수 있습니다. 동기화 객체를 사용하는 것이 좋을지 모르겠다면 int/dword 값의 경우 대부분 사람들은 sych 객체없이이 작업을 수행합니다.

이 문서 http://preshing.com/20130618/atomic-vs-non-atomic-operations/

과도 같은 문제 Are C++ Reads and Writes of an int Atomic?

+0

설명에 감사 드리며 링크 :-) –