특정 데이터를 공유 메모리 파일?로 만들어서 여러 프로세스에서 같이 쓰고싶음
[질문] 리눅스에서 이런거 무슨 함수 써야함
Riey(rerereq)
2021-03-23 22:24
추천 0
댓글 22
다른 게시글
-
커널 버전에 종속적인 커널 모듈은 CI/CD 돌리기 불가능? [10][%] 익명(121.132) | 21.03.23추천 0
-
광고가 또 [1][%] 익명(49.174) | 21.03.23추천 1
-
서버점검 한다치면 개발자들 그 시간에 출근하는거임? [3][%] 익명(218.39) | 21.03.23추천 0
-
리눅스 서버에서 내 컴으로 푸시가능할까요? [10][%] 익명(39.7) | 21.03.23추천 0
-
수식어나 다른 키워드 안붙은 타입을 뭐라고 부르냐 [2][%] 익명(122.199) | 21.03.23추천 0
-
윈도우 체크디스크랑 메모리검사 해서 문제없으면 하드 메모리문제는 아닌건가 [2][%] 익명(14.36) | 21.03.23추천 1
-
아무것도 모르는 아이돌팬입니다. [21][%] 익명(112.150) | 21.03.23추천 0
-
순수 러스트로 짜여진 pager 추천 좀 [8][%] 익명(124.37) | 21.03.23추천 0
-
이번에 안드로이드 웹뷰 오류 발생한 원인 뭐같음? [3][%] 익명(110.14) | 21.03.23추천 0
-
aws볼때마다 좀 땔깜될수 있겟다는 느낌듬 [5][%] CreeJee(000as00060) | 21.03.23추천 0
https://opensource.com/article/19/4/interprocess-communication-linux-storage
mmap 에서 SHARED 메모리 공간 할당하는 방법이 있었던 걸로 기억함
아니면 그냥 Unix Domain Socket 쓰는 건 어떰? 이것도 따지고 보면 파일 가지고 IPC 하는 거임
IPC용은 아니고 캐시 데이터 공유용이라..
그렇다면 mmap 알아보셈 공유 메모리 공간 만들 수 있는 플래그가 있을 거임
결국 그게 IPC 아닌가
이거갖고 통신할건 아니라서 ㅇㅇ
근데 UDS 가 내부 동작상으로 메모리만 쓰나? 내가 알기론 디스크 파일로 알고 있는데 그렇게 보면 '공유 메모리 파일' 이라는 조건에는 안 맞긴 할 듯
UDS는 유닉스 경로로 하는 소켓통신이라서 지금 할려는거엔 안맞음
shared memory (shm)
아 맞다 이것도 있음 이건 이름 지정해서 그 메모리 접근하는 거잖아
이거랑 mmap이랑 뭘 써여할지 모르겠음;
내부적으로 동작이 비슷할 걸? mmap 이 좀 더 로우레벨이고 저건 wrapping 함수 아닌가
mmap 은 포인터로 다이렉트 접근이라 동작 예측이 어려워서(어디서 뭘 하는 지 알기 힘듦) 여러가지 api 로 제공되는 shm 이 더 좋다고 생각함
ㄹㅇ? 그러면 별로 고민할건 없겠네
ㅇㅇ shm가 mmap보다 고수준 인터페이스 같음 커널이 만든 /dev/shm를 쓰는데 RAM에 스왑파티션까지 같이 사용함
ㅇㅇ mmap 은 그냥 메모리 주소값 받아서 포인터로 가지고 놀아야 함
포인터 받는건 상관 없는데 일단 둘다 같은 계열이면 써보고 편한거 골라봄
shm으로 공유 메모리를 만들고 mmap으로 내 메모리에 매핑하는거네 둘중 하나가 아니라 둘다 쓰는것이였음
아니면 그냥 /tmp/kime/cache 경로에 저장 ㄱㄱ
pipe, FIFO도 있음 ㄱㄱ 원하는거에 맞는지는 모르겠음
그럼 그냥 파일 하나 만든 다음에 그 파일을 mmap하면 되는 거 아님? 뭐가 문제야?