프로세스간 자원 공유 혹은 프로세스간 통신 관련 질문

swunk의 이미지

한 시스템 내에 2개의 프로세스간에 자원공유 혹은 통신을 하고자 합니다.

A라는 프로세스는 시작과 동시에 열심히 자료구조를 생성해 놓고,

B라는 프로세스가 요청이 있을때 마다 A에서 생성한 해당 자료구조를 검색/삭제/수정 할수 있게 하려고 합니다.

IPC 기법 중 어느 기법을 사용하는게 좋은가요 ?

쉐어드 메모리를 조금 봤더니만 공유하는 메모리의 사이즈가 정해져 있더군요...자료구조 덩치가 크고 복잡하기 때문에 제한된 메모리만을 가지고 사용하는 것은 위험한 발상이라 생각합니다.

소켓을 생각했는데 자료구조가 복잡해서 주고 받는 문제가 있을것 같구요...
소켓을 써서 A 프로세스에서 생성한 자료구조의 시작 주소만을 알려주고, B 프로세스에서 그 시작주소에 접근해서 자료구조에 접근 할 수 있는 방법이 있을까요 ?
얼핏 생각해 보면 프로세스마다 주소공간이 다르기 때문에 주소값을 주고받고 해서 자료구조에 접근하는 것은 불가능할듯 합니다.

아니면 비슷한 방법이라도 있을까요 ?....

그런 방법이 없다면 어떻게 문제를 풀어가면 좋을지 조언 부탁드립니다.

쌀밥의 이미지

소켓 방식이 일반적인 접근 방법일듯 합니다.

자료구조의 복잡도가 문제라면.... 그래도 소켓 방식을 쓰는게 좋을것 같고요

사이즈가 문제라면

DB (내지는 File)를 거쳐서 전달 받는 방법도 생각해봄직 합니다...

일하는 사람들의 희망 민주노동당 : http://www.kdlp.org
반공 교육의 성과로, 민주주의의 반대가 공산주의(또는 사회주의)라고 생각하는 사람이 많다.

primus의 이미지

자료구조를 검색/삭제/수정

HASH테이블은 어떨까요?..

HASH테이블은 메모리는 동적할당이기때문에 사이즈에 제한을 받지

않고. 저장할려는 자료구조도 변동이 용이합니다.

A쓰레드는 HASH테이블 생성하고 자료 저장하고..

B쓰레드는 사용자 입력에 따라 검색 삭제 수정하면 될것 같네요.

죠커의 이미지

자료구조가 복잡하더라도 직렬화 할 수 있지 않을까요?

violino의 이미지

파이프를 쓰셔도 될듯. (named pipe 가 좋겠죠?)
원래 파이프가 그런것 하라고 만들어놓은것이니깐요. 또한 용량 제한도 없구요.
시스템 어딘가에 named pipe를 생성하셔서 파일 입출력처럼 하시는겁니다.
찾아보시면 리소스가 많이 있을겁니다.

만의 하나라도 다른 시스템으로 갈 가능성이 있으시면 소켓이나 RPC 등 다른 프로토콜을 쓰셔야겠죠.

시스템 V IPC 들은 정보의 양이 작을때만 유용한 것 같습니다.
(메시지큐, 세마포어, 공유메모리등이 있다는데 제가 써보진 않아서 좀..암튼 커널 레벨에서 지원되고, 효율적이라고는 하더군요)

정말 복잡한 자료구조라면 (제생각엔 왠만한건 프로토콜 만들어서 소켓통신이 가능할 것 같지만) 쌀밥님 말씀처럼 DB나 파일을 쓰시는 방법밖엔 없겠네요.

vio:

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.