CATEGORY

분류 전체보기 (73)
세상사는이야기 (27)
회사이야기 (7)
친구들이야기 (6)
공부이야기 (33)
개인적인이야기 (0)

RECENT ARTICLE

RECENT COMMENT

ARCHIVE

LINK



  1. 2008.08.05
    Noriter 설명
  2. 2008.06.24
    New Search Sever PPT 자료
  3. 2008.06.23
    araxis merge 2008
  4. 2008.06.12
    Unix 입출력 PPT
  5. 2008.06.09
    IPC(interProcessCommunication)의 이해(2)
  6. 2008.06.09
    IPC(interProcessCommunication)의 이해(1)
  7. 2008.06.05
    술을 마신다... 2
  8. 2008.06.04
    P2P 종류
  9. 2008.06.03
    내 이름 어때?
  10. 2008.06.03
    더 좋은 구글 검색방법

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

IPC(Inter Process Communicaiton) 이해 (2)


IPC란 무엇인가?

정의:
IPC는 프로그램들간의 데이터를 공유하고 동기화하기 위해 사용되는 방법을 뜻한다. 이때 프로그램은 보통 프로세스를 의미한다. IPC를 할 수 있게 해주는 일반적인 도구는 세마포어, 공유메모리( Shared memory), 내부 메시지큐등이 있다. 이런 방법이 갖는 이점은 디스크를 통한 파일공유와 관련IO를 통한 공유하는 방법의 오버헤드를 줄일 수 있다는 것이다.

IPC를 쓰는 이유

Use IPCs when you need to talk between programs, you want the talking to be 프로그램들간에 데이터를 빠르게 공유하고 싶을 때, 혹은 전하고 싶을 때, 또한 프로세스간의 통신의 복잡한 하부구조를 알지 않아도 되는 경우 등이다. IPC는 커널이 세부적인 통신을 맡아서 해주기 때문이다. 예룰 들어 당신의 프로세스가 세마포어에 의해 보호되는 자원을 기다리고 있다고 한다면 커널은 당신의 프로세스를 대기행렬( Waiting gueue )에 넣어 버린다. 그리고 자원을 쓸 수 있는 순간이 되면 커널은 프로세스에게 자원을 할당하게 된다. 또한 커널은 이런 오퍼레이션이 원자적(atomic)일 것을 확인한다. 이것은 데이터의 무결성을 위해 세마포어를 세팅하는 오퍼레이션은 어떠한 경우에도 방해 받지 않는다는 것이다.

 IPC calls의 유사성과 차이점

IPC 통신 루틴상의 모든 자원은 비슷한 방법과 매우 유사한 함수 콜을 이용한다.
   기능    메세지큐    세마포어    공유메모리
   1.IPC할당방법    msgget    semget    shmget
   2.IPC제어방법    msgctl    semctl    shmctl
     (상태변경,해제)
   3.IPC작동방법    msgsnd    semop    shmat
     (send/receive)    msgrcv        shmdt

IPC루틴은 다루는 데이터의 양에 따라 다르다.
- 세마포어는 long integer이며 단일숫자를 나타낸다.
- 메시지큐는 4096문자를 가질 수 있다.
- 공유메모리 세그먼트는 256MB이다.

현재 활동중인 상태를 보는 방법

다음 두개의 명령어를 활용할 수 있다.

Ipcs: 세마포어와 메시지큐, 공유메모리의 상태를 볼수 있다.
ipcs -m ( shared memory )
ipcs -q ( message gueues )
ipcs -s ( semaphore )

Ipcrm: 세마포어, 메세지큐,공유메모리부분을 시스템에서 제거한다. Ipcrm 명령은 shmctl,semctl,msgctl system call의 front end명령(사용자가 직접 부르는)으로서 적절한 실행관한과 옵션을 사용하면 자원을 D(deletion)상태로 마크하게 된다. 그러나, 자원을 사용하고 있는 모든 프로세스가 detach를 해야만 완전히 ipcs를 통해 보면 사라지게 된다.

Fields common to each of the IPC types
Ipcs명령의 결과에서 보면 일부는 공통적으로 사용된다. 다음부분이 그러하다.
  T Type= m (shared memory), s (semaphore) or q (message queues)
  ID This is the identifier for the entry similar to a file descriptor. It is used by the operations function calls to access the resource after a get is performed on it.
  KEY Similar to a file name, this is what the routine uses to get, or open, the resource. When you get this name, the return value is the ID. If the key is 0x00000000 (IPC_PRIVATE), this entry can only be used by related, parent/child processes.
  MODE Permissions and status. The meaning of the field is different for each of the IPC types.


The first two characters can be one of these: RSCD
  R and S These are for the message queues and indicate a process is waiting on a message send or receive call.
  D Indicates the shared memory segment has been deleted but will not disappear until the last process attached to it releases it.(NOTE: The key will be changed to ipc_private, that is, all zeros (0) when the segment has been marked for removal but still has attached processes.)
  C This shared memory segment will be cleared when the first process attaches to it.Flag not set. The next nine characters are permission bits with r indicating read access for this position; w indicating either write or alter access, depending upon the IPC facility it is attached to. No permissions for this operation.


IPCs need permissions for owner, group and other.
  OWNER The login name of the owner
  GROUP The name of the group that owns the entry
  CREATOR The login name of the creator of the entry
  CGROUP The group of the creator of the entry
  CTIME The time when the associated entry was created or changed


Headings that are special to message queues
  CBYTES The current total byte count of all messages in the queue
  QNUM The number of messages currently in the queue
  QBYTES The maximum number of bytes allowed for all messages in the queue
  LSPID The ID of the last process that sent a message to the queue
  LRPIC The ID of the last process that received a message in the queue
  STIME The time the last message was sent to the queue
  RTIME The time the last message was received, or read, from the queue


Headings that are special to semaphores
  NSEMS The number of semaphores in the set for this entry
  OTIME The time the last operations was done for this semaphore entry


Headings that are special to shared memory
  NATTCH The current number of processes attached to this segment
  SEGSZ The size of the segment in bytes
  CPID The process ID of the creator of the segment
  LPID The process ID of the last process to either attach or detach from this segment
  ATIME The time of the last attach to the segment
  DTIME The time of the last detach from the segment

And
IPC(InterProcessCommunication)의 이해 (1)

IPC는 프로그램들간의 데이터를 공유하고 동기화하기 위해 사용되는 방법을 뜻한다. 이때 프로그램은 보통 프로세스를 의미한다. IPC를 할 수 있게 해주는 일반적인 도구는 세마포어, 공유메모리( Shared memory), 메시지큐등이 있다. 이런 방법이 갖는 이점은 디스크를 통한 파일공유와 관련IO를 통해 공유하는 오버헤드를 줄일 수 있다는 것이다.

Semaphore

세마포어는 공유 할 수 없는 자원을 액세스하는 것을 제어하는 특화된 데이터 구조체이다. 자원을 놓고 협력하거나 혹은 경쟁하는 프로세스는 그 자원이 사용 가능한가에 대한 결정을 세마포어를 통해서 하게 된다. 자원이 사용 가능하지 않다면 기본적으로 운영체제는 요청한 프로세스를 관련한 큐에 대기 시킨다. 그리고 자원이 사용 가능한 상태가 되면 그 프로세스에게 알려주고 실행시키게 된다. 이것은 자원의 사용가능성에 대한 처리를 간편하게 해주는 역할을 하게 된다. 실생활에서 예를 든다면 교차되는 선로에서 반대 방향으로 진행하는 열차를 대기 시키는 신호등과 같은 역할을 하게 된다. 대부분 세마포어는 프로세스 동기화나 lock을 위해 사용된다. 보통 세마포어는 이진수(Binary)이거나 Counting으로 이루어졋다. 한 binary세마포어는 한 자원을 제어한다. 가령 0이면 자원이 사용 중이라는 뜻이고, 1이면 사용 가능하다는 뜻이 된다

Message queues

메시지큐는 프로세스간에 크지 않은 양의 데이터를 구조화된 방식으로 넘겨주는데 사용된다. 전달되는 정보는 미리 지정된 메시지 구조체를 통하게 된다. 메시지를 발생시키는 프로세스는 사용자 정의의 형을 명시하고 메시지를 시스템이 유지시키는 메시지 큐에 위치 시킨다. 그 메시지 큐를 액세스하는 프로세스는 FIFO(선입선출)방식으로 특정 타입의 메시지를 선택적으로 읽기 위해 메시지 타입을 이용하게 된다. 메시지큐는 프로그램에게 여러 프로그램으로부터 오는 데이터를 멀티플렉싱을 할.수 있도록 해준다.

Shared memory

공유메모리는 다중프로세스들이 가상메모리를 공유할 수 있도록 해준다. 이 방법은 메모리 공유를 위한 가장 빠른 수단이긴 하지만 가장 간편한 수단은 아니다. 일반적으로 한 프로세스는 공유메모리 세그먼트를 생성하고 할당하게 된다. 생성시점에서 사이즈와 사용허가권에 대한 설정이 된다. 그리고 프로세스는 세그먼트를 어태치(attach)하고 연다. 이것이 현재의 데이터 영역으로 맵핑을 발생시킨다. 또한 필요하다면 세그먼트를 초기화한다. 이렇게 발생된 공유영역은 다른 프로세스가 허가권이 설정되어 있다면 접근할 수 있게 되고 그 영역을 자신의 데이터 영역으로 맵핑을 하고 쓰게 된다. 보통은 세마포어가 공유영역에 대한 접근을 제어하는데 이용된다. 하나의 프로세스가 작업을 끝내게 되면 공유영역을 지우는 것이 아니라 detach하게 된다. 그리고 자신의 소유권을 다른 프로세스에게 이양하게 된다. 그리고 공유영역을 쓰던 모든 프로세스가 죽게 되었을 때 일반적으로 영역을 생성시킨 프로세스가 제거에 대한 책임을 지게 된다. 데이터는 공유 영역을 통해 전달이 되는데 이것이 가장 빠른 IPC방법이다. 그러나 현재 64bit가 아닌 32bit 컴퓨팅에서 발생되는 대용량 데이터 ( 256MB ) 처리하기 위해서는 새로운 옵션으로 프로그램을 컴파일 할 것을 요구한다.

Memory mapping 에 대한 이해

응용프로그램의 명령이 수행되는 속도는 보통 프로그램addressable 메모리 영역밖을 얼마나 많이 접근하느냐에 달려있다고 해도 과언이 아니다. 즉 많을수록 속도는 늦어 질 수 밖에 없다. 이런 메모리 외부영역을 접근하는 트랜잭션 오버헤드를 줄이기 위해 OS는 두가지 방식을 제시하고 있다. 하나는 파일을 프로세스 메모리영역에 맵핑하는 것이 있다. 흔히 파일 메모리맵핑기법으로 불리기도 한다. 두번째는 협력하는 프로세스간에 사용하는 공유영역을 둠으로서 오버헤드를 줄일 수 있다 메모리팹핑화일은 프로세스로 하여금 직접적으로 데이터를 접근할 수 있는 메커니즘을 제공한다. 이것은 파일을 열고 읽으면서 데이터를 자신의 데이터 버퍼로 복사하는 작업을 없애 줌으로서 상당한 I/O이동을 줄여준다. 한 파일을 맵핑하는 프로세스가 하나 이상 일 때는 공유를 하게 된다. Mapped memory영역 ( 또한 shared memory 영역으로도 불리는)은 프로세스간에 데이터를 교환하는 대규모 풀(pool)을 제공한 것이다. 그러나 락킹이나 접근제어에 대한 부분은 signal이나 semaphore를 사용하여 설정하여야 한다. 이렇게 하여야 한 프로세스가 사용중인 데이터를 변경하는 것과 같은 접근 충돌을 막을 수 있다. 공유메모리 영역은 메시지로 보내기에는 큰 공용데이터베이스의 데이터를 여러 프로세스가 공유하는 경우에 특히 유용하다. 맵핑은 파일을 읽고 쓰는데에 따르는 오버헤드를 줄일 수 있다고 했다. 파일의 내용이 유저영역으로 올라오게 되면 (맵핑) 다른 프로세스들은 마치 메모리에 올라 온 것처럼 시스템콜(I/O)를 사용하지 않고 포인터를 이용해 직접 접근하게 되는 것이다. 또한 디스크에 있는 파일은 마치 paging 영역처럼 활용됨으로써 페이징 공간을 줄일 수있다. 프로그램은 어떠한 정규파일에 대해서도 맵핑을 할 수 있다. 이런 특징은 실행코드를 가지는 오브젝트코드에도 적용 가능하다. 이렇게 하면 일반 파일보다 좀더 빠르게 액세스 할 수 있게 되기 때문에 실행파일을 좀더 빨리 load할 수 있다. 보다 자세한 사항은 shmat서브루틴을 참고 한다.
And
사용자 삽입 이미지
And

    P2P (peer-to-peer)

    혼합형 P2P : 서버가 개입되는 혼합형

    개방형 P2P : 서버 간섭이 없는


  1. 냅스터 : 혼합형 P2P
    • 냅스터 서버는 사용자가 중앙 서버에 접속하는 순간 PC MP3, WMA 음악파일을 서버에 전송해 이것을 목록화 하는 방식
    • 접속한 모든 사용자 음악 파일은 중앙 서버에 모두 데이터화됙, 파일을 다운 받고자 하는 컴퓨터와 제공하는 컴퓨터를 1:1 연경하여 파일을 전송하는 방식
    • 국내 대표적인 냅스터 방식 프로그램 - 소리바다, 브이쉐어
    • 스타형 : 하나의 네트워크 장치에 별처럼 다른 여러대의 네트워크 장치가 붙은 형태. 보통 다른 네트워크장치들을 중재하는장치는 허브/스위치 또는 멀티포트랜카드가 장착된 서버가 된다. 허브/스위치 같은 중심이 되는 네트워크 장치의 성능에 큰 영향을 받는다.

    사용자 삽입 이미지


  2. 그누텔라 : 개방형 P2P
    • 서버 간섭이 없고 파일 형식에 따른 제약이 없어 인터넷의 가장 원초적인 형태
    • 중앙 통제창치를 거치지 않고 개인간의 파일 교환이기 때문에 냅스터에 비해 훨씬 자유롭게 정보를 주고 받을 있다.
    • 서버가 없기 때문에 서비스 업체는 저작권 소송 문제를 피할 있다.
    • 단점 :
      • 서버에 등록된 목록만 검색하는 것이 아니라 각각의 연결된 컴퓨터에 직접 들어가 자료를 검색하고, 자료가 없으면 다시 다른 컴퓨터로 들어가 검색하는 작업을 반복하기 때문에 시스템 과부하를 일으킬 있는 문제
      • 보안에 치명적인 결함
      • 검색과 다운로드 속도가 냅스터에 비해크게 떨어지고, 이용자와 파일 추적이 불가능해 음란물, 불법 소프트웨어의 유통을 막을 있는 보안쳬계는 갖추고 있지 않다.

    • 그물형 : 각 네트워크장치끼리 모두 연결된 형태. 하나의 네트워크 장치는 다른 모든 네트워크장치와 각각 케이블로 연결하게 된다. 어느 한선이 단선되더라도 다른 케이블로 통신이 되고, 각 장치식별로 통신이 간단한, 가장 신뢰할 수 있는 형태이지만 비용 문제로 현실에서 거의 사용되지 않는다.

    사용자 삽입 이미지


And

내 이름 어때? - 김정민

작은 집단의 자료에서 계산한 여러 통계자료를 기준으로 이름의 성별과 시대별 특징을 알려드립니다. 정교하게 조절된 통계가 아니므로 재미로만 보세요. :)

  • 사적인 정보를 가능한 한 보호하려고 인구가 적은 이름들은 사례 노출에서 대부분 제외하였습니다.
  • 비슷한 이름으로 추정한 부분은 기계학습 알고리듬으로 계산되었기 때문에 사람의 실제 느낌과는 많이 다를 수도 있습니다.
  • 통계 자료는 주로 70년대 태생을 기준으로 했기 때문에, 60년대 이전이나 85년 이후에 많이 사용된 이름들은 부정확할 가능성이 높습니다. (아래 나오는 연도는 모두 탄생연도 기준입니다.)

관련글 트랙백과 댓글은 블로그로 보내주세요.

내 이름 느낌이 어때?

  • 김씨는 한국에서 가장 많은 성이고 모두 992만 5949명이 있어서 전체 21.59%를 차지합니다. (통계청, 2000년)
  • 정민은 아주 중성적인 이름입니다.
    여성성 0.53238
  • 정민은 여자 이름 중 134번째 인기있는 이름이며 여자 625명 중 1명 정도가 정민이입니다. 전체에서는 0.150%로 77번째입니다.
  • 비슷한 여자 이름은 정미 성미 정이 정임 선민 등이 있고, 비슷한 남자 이름은 성민 정인 정빈 종민 성인 등이 있습니다.
  • 이름을 뒤집으면 민정이 되어서 매우 여성스러운 이름네요~*
  • ㄱㅈㅁ로 머릿글자를 만들 수 있는 사람은 전체에서 0.26% 정도이고 100번째 많습니다. 남자 이름은 김재문 김정민 김종문 김종민 김진만 등이 있고, 여자 이름은 김정미 김정민 등이 있습니다.
  • 정민은 남자 이름으로는 계속 늘어나는 추세이며, 80년 무렵 가장 인기있었습니다. 여자 이름으로는 계속 늘어나는 추세이며, 79년 무렵 가장 인기있었습니다.
    이름 빈도 변화 추이 그래프

글자마다 뜯어보면 어때?

  • 앞 글자 "정"은 약간 여성스러운 느낌을 주고, 두 번째 글자 "민"은 남성스러운 느낌이 있습니다. 두 글자가 서로 잘 맞추고 있네요.
  • 앞 글자 "정"은 여자 이름 앞 글자에서 6.12% 빈도로 쓰여서 세 번째 많이 쓰입니다.
  • 앞 글자 "정"은 남자 이름 앞 글자에서 4.03% 빈도로 쓰여서 6번째 많이 쓰입니다.
  • 앞 글자 "정"은 약간 여성스러운 이름으로 만듭니다. (0.11)
  • 뒷 글자 "민"은 여자 이름 앞 글자에서 0.68% 빈도로 쓰여서 24번째 많이 쓰입니다.
  • 뒷 글자 "민"은 남자 이름 앞 글자에서 1.98% 빈도로 쓰여서 16번째 많이 쓰입니다.
  • 뒷 글자 "민"은 약간 남성스러운 이름으로 만듭니다. (-0.21)
  • 남자 이름에서 앞 글자 "정"은 꾸준한 추세이며, 78년 쯤 가장 인기있었고, 뒷 글자 "민"은 계속 늘어나는 추세이며, 81년에 주로 인기있었습니다.
  • 여자 이름에서 앞 글자 "정"은 꾸준한 추세이며, 64년 무렵 가장 인기있었고, 뒷 글자 "민"은 계속 늘어나는 추세이며, 80년생에게 가장 인기있었습니다.
  • 글자별 빈도 변화: 정 (남) 정 (여) 민 (남) 민 (여)
    글자별 빈도 변화 추이 그래프 

해보고 싶은 사람들인 이곳으로

And
이 문서는 구글 검색엔진을 이용해서 문서를 더 잘 찾을 수 있는 기술들에 대한 내용을 담고 있다. 구글은 상당히 복잡한 검색옵션을 제공하는데, 여기에서는 그 중에서 간단하면서도 효율적인 몇 가지 방법에 대해서 소개할 것이다.

쌍 따움표

2개 이상의 쿼리 문장이 주어졌을 경우, 구글은 각 쿼리어간의 거리를 검사해서 score를 계산한다. socket api를 검색어로 입력했다면, socket와 api가 동시에 발견된 문서 중에서, 가능한 가까이 붙어있는 문서가 우선 노출되는 방식이다. 그러나 노래가사와 같은 경우에는 거리에 상관없이 반드시 붙어있어야 할 것이다.

예를 들어 harry potter를 검색할 경우, "harry potter"로 검색하는게 원하는 결과를 얻을 확률이 높다.

harry potter를 검색어로 입력할 경우에는 harry potter, harry ant potter, Im potter. your harry?'등등이 검색될 수 있는데, 쌍따움표로 묶어줄 경우 harry 다음에 potter이 포함된 문서만 검색하기 때문이다.

키워드의 포함과 제외

Wireless Networking로 검색을 한다고 가정해 보자. 우리가 원하는 정보는 무선 네트워크 기술이다.

이경우 Wireless와 Networking가 모두 포함된 문서가 상위에 검색될 확률이 높지만, 문서자체의 가중치에 의해서 Wireless와 Networking 둘중 하나만 포함된 문서가 상위에 검색될 수도 있다. 그렇다면 가장 확실한 검색방법은 따움표로 묶는 방법이 될 것이다.
"Wireless Networking"

그러나 이 경우에는 검색되는 문서의 양이 너무 적어져서, 중요한 문서가 빠질 수도 있다. 그렇다면 쌍따움표를 빼고 검색어를 만드는 방법이 있다.
Wireless NetWorking

이 경우에는 다양한 문서가 검색되겠지만, Wireless와 NetWorking 둘중 하나만 포함되어도 검색결과에 노출되므로, 쓸데 없는 문서까지 검색될 수 있다. 이를테면 Wireless phone, Wireless PDA등이 무선 네트워크 장비 관련 정보들 까지 떠버린다. 우리가 중요한건 네트워크 기술이므로, Networking를 반드시 포함시키도록 하면, 좀더 좋은 결과를 얻을 수 있을 것이다. 이렇게 해당 검색어를 반드시 포함시키고자 할때에 +를 검색어 앞에 붙여주면 된다.
Wireless +NetWorking

키워드를 제외할 필요도 있을 것이다. 이경우에는 -를 사용하면 된다.
"Wireless NetWorking" -wired +routers

필드 명령

검색엔진들은 필드검색이 가능하도록 색인테이블을 지원한다. 즉 site, contents (본문), link, title 별로 검색이 가능하도록 색인테이블을 작성한다. 이를 이용하면 특정 site내에서의 검색이라든지, 사이트의 제목에서만 검색하는 등의 검색작업을 수행할 수 있다. 다음은 www.joinc.co.kr 사이트내에서 "socket api"문장을 포함한 문서를 찾는다.
site:www.joinc.co.kr.co "socket api"

또한 상위 도메인명을 필드로 지정할 수도 있다. 아래와 같이 하면 .co.kr도메인을 가진 문서에 대해서 검색을 수행하게 된다.
site:.co.kr "socket api"

intitle:를 이용하면 문서의 제목을 기준으로 검색을 한다. title에 joinc가 포함된 문서 중에서 wiki가 검색된 문서를 찾는다면 다음과 같이 하면 된다.
intitle:joinc wiki

filetype:를 이용하면 해당 파일타입을 기준으로 검색을 할 수 있다. 다음과 같이 하면 파일 타입이 xml인 문서중에서 pthread를 포함한 것을 검색하게 된다.
filetype:xml pthread

이러한 필드들은 몇개를 조합해서 사용할 수도 있다.
site:joinc.co.kr filetype:html 하드웨어

기타등등

구글은 웹문서를 수집할 때, 해당 사이트에 있는 ROBOTS파일을 읽어서 그 정책에 따라서 행동한다. 이 로봇파일에는 웹문서를 수집할 수 있는지, 수집하기 위해서 아이디와 패스워드가 필요한지 등에 대한 정보를 담고 있다.
위 문서를 보면, 문서 수집을 허락하지 않는 파일과 디렉토리에 대한 정책이 있음을 확인할 수 있다.

아래와 같이 검색어를 입력하면, 각 사이트에 대한 robots.txt 정보를 검색할 수 있다.
inurl:"robots.txt" filetype:txt
And