Memos2012. 2. 3. 01:48
페이스북 계정을 휴면시킬지 고민중이다.


페이스북이나 트위터와 같은 소셜네트워크 기반의 서비스들이 일견하기에는 사람들의 관계의 지평을 넓혀주고, 소통이 원할하도록 만들어주는 것 같지만, 실상은 그렇지 않다.


SNS는 결국 사람들을 고립시킬 것이다. 나도 연구했던 분야이지만, 사람들의 모든 행동들은 모두 수집되고 분석되어서 효과적으로 소통의 망을 늘려나갈 것이고, 광고주들에게는 매력적인 광고 모델을 제공할 것이다. 비슷한 성향의 사람들을 친구로 추천할 것이고, 혹은 친구의 친구를 알게 될 것이고, 우리는 그 안에서 새로운 관계를 맺게 될 것이다.


결과적으로 우리는 큰 소셜 네트워크에서 군집화되어 그 군집내에서 머물게 될 것이다. 개개인은 그렇지 않겠으나, 대체적으론 그렇게 될 것이다.


사람들은 자연스럽게 페이스북을 통해서 교류하고 얘기하게 될 것이고, 난 그것이 두렵다. 

'Memos' 카테고리의 다른 글

3월 1일 분이사진  (0) 2012.03.01
東京事変 恋は幻 (GET IT UP FOR LOVE)  (0) 2012.02.09
4월 17일  (1) 2011.04.18
리눅스용 UML 제작도구 - Bouml  (0) 2011.04.06
첫 블로깅입니다 ^^  (0) 2011.03.23
Posted by 곰푼
Tips/Kernel development2012. 1. 31. 16:10
 컴퓨터는 CPU, 메모리, 디스크 등의 다양한 장치들로 구성되어 있다. 이 장치들을 추상화하여 사용자들이 혹은 응용프로그램이 사용하기 쉽도록 해주는게 바로 운영체제이며, 그 운영체제의 핵심이 바로 커널이다.

 커널은 컴퓨터에 부착된 장치들을 효율적으로 관리하도록 해주는 관리자의 역할을 한다. 각 장치들은 추상화를 통해 사용자들이 접근할 수 있게 된다.

커널은 크게 두 가지 타입으로 나뉠 수 있다. (하이브리드, 엑소 커널은 여기서는 논외로 하자.)

1. 모놀리식 커널 Monolithic Kernel

 이 커널은 시스템을 관리하기 위한 기능들이 하나의 이미지에 내장된 커널을 의미한다. 하드웨어 위에 고수준의 가상 계층을 가지고 있으며, 어플리케이션 영역의 프로그램 구현을 위한 서비스를 제공한다. 이 서비스에는 프로세스 스케줄링, 메모리 관리, 디스크 관리, 장치 관리 등이 있으며, 이를 위하여 시스템 콜(System Call)의 형태로 서비스들을 제공한다. 
 커널이 하나의 프로세스로써 단일 주소 공간에서 실행되도록 구현되어있으며, 커널 이미지는 일반적으로 단일 정적 바이너리로 존재한다. 


2. 마이크로 커널 Micro Kernel
 
 커널의 기능들을 서버(Server)라 불리는 분리된 프로세스로 조각내어서 커널 자체의 크기를 줄인 커널이다. 각 서버들은 다른 주소공간에서 실행되도록 분리되어 있으며, 오직 서버만이 각 기능들을 특권 실행 모드(Privileged execution mode)에서 실행할 수 있다. 그러므로 모놀리식 커널에서와 같은 직접적인 함수 호출이 불가능하고, 대신 IPC와 같은 메시지 패싱 기법으로 호출할 수 있다. 
 IPC 매커니즘이 일반적인 함수 호출에 비해 꽤 큰 오버헤드를 갖고 있고, 또 커널 공간과 사용자 공간의 컨텍스트 전환(Context Switch)이 자주 발생하기 때문에, 모놀리식 커널에서 볼 수 없는 추가적인 처리량을 내재하고 있다.

 

Features of Linux Kernel::

 

리눅스 커널은 모놀리식 커널이지만, 모듈을 동적으로 적재할 수 있도록 지원한다. 모듈은 필요에 따라 그 코드가 적재(Load) 혹은 제거(Unload)될 수 있다.

SMP(Symmetric MultiProcessor)를 지원한다. SMP는 두 개 또는 그 이상의 프로세서가 하나의 메모리 공간을 공유하여 사용하는 다중 프로세서 아키텍쳐이다.

선점형 커널이다. 선점형 커널에서는 시스템 콜 루틴 수행 중간에 인터럽트를 체크해서 인터럽트의 수행을 우선시한다. 비선점형 커널에서는 시스템 콜을 우선시하여, 해당 호출이 끝난 후에 인터럽트를 수행한다.

리눅스에서는 스레드와 프로세스가 서로 다르지 않다. 이는 리눅스에서 스레드의 구현을 light weight process로 구현하기 때문이며, 이에 대해서는 나중에 논하기로 하겠다.

'Tips > Kernel development' 카테고리의 다른 글

VFS : Virtual File System - Introduction  (0) 2012.09.30
PID Namespace  (0) 2012.03.15
Posted by 곰푼
Writings2011. 7. 27. 15:57
문서간의 유사도를 측정하는 방법을 알아보자.

먼저 앞서 소개한 방법 중, tf의 벡터로 각 문서들을 다루겠다.

   수도권  기상예보  강우량
 doc1 3 1 2
 doc2 1 1 5
 doc3 1 1 3

이를 3차원 벡터로 나타내면

doc1 = < 3, 1, 2 >
doc2 = < 1, 1, 5 >
doc3 = < 1, 1, 3 >


위와 같이 표기할 수 있을 것이다.

이렇게 표기된 문서들의 유사도를 어떻게 측정할 수 있을까? 직관적으로, 다음과 같은 방법을 쓸 수 있을 것이다.

similarity(doc1, doc2) = |(3 - 1)| + |(1 - 1)| + |(2 - 5)| = 2 + 0 + 3 = 5
similarity(doc1, doc3) = |(3 - 1)| + |(1 - 1)| + |(2 - 3)| = 2 + 0 + 1 = 3
similarity(doc2, doc3) = |(1 - 1)| + |(1 - 1)| + |(5 - 3)| = 0 + 0 + 2 = 2


문서간의 유사도는 doc2와 doc3가 가장 높고 그 다음이 doc1, doc3, 가장 유사하지 않은 문서는 doc1, doc2임을 알 수 있을 것이다. 이 계산법의 개념은 단순하다. 문서가 각 단어별 갯수로 표기될 때, 단어별 갯수차이를 구하여 가장 차이가 작은 문서들이 가장 유사한 문서라는 것이다. 이는 Manhattan Distance로 잘 알려진, 두 지점 간의 거리를 구하는 방법의 확장판이다. 단 두 지점간의 거리를 구할 때 2차원의 좌표값을 사용했다면, 여기서는 이를 3차원 벡터로 확장했다는 점이 다르다.

위와 같이 각 문서를 bag of words 모델로 표시했을 때, 이를 n차원의 어느 좌표를 향하는 벡터로 생각할 수 있다는 데서 이러한 표기법은 잇점을 갖는다. 더욱이 다음으로 소개하고자 하는 Cosine Similarity에서는 각 문서간의 유사도를 평가할 때, 두 문서의 각도를 척도로 삼는 다는 점에서 이 벡터 표기법이 더 큰 의미를 갖게된다.

Cosine Similarity는 다음과 같이 좌표평면상에 나타낸 벡터의 유사성으로 판별하는 방법이다.


이는 위에서 들었던 예제하고는 다른 예시이다. 어떤 문서에 gossip과 jealous라는 단어의 분포를 바탕으로 위와 같은 벡터성분을 표기하였을 때, 좌표평면상에 어느 지점을 나타내는지 알 수 있을 것이다. 여기에 주어진 질의어 q에 대해서도 vector로 변환하여 좌표평면상에 나타내면, 어느 문서와 가장 비슷한지 알 수 있을 것이다.(주어진 예시에서는 d2와 가장 유사함을 주목하라.)

위와 같이 표기하기 위해서는, 각 벡터를 단위 벡터:Unit Vector로 환산하는 것이 중요하다. 그래야만 문서에서 그 단어가 차지하는 비중을 위와 같이 나타낼 수 있다. 단위 벡터로 환산한다는 의미는 우리가 관심을 두는 것이 해당 단어가 얼마나 많이 나오냐(tf)가 아니라 해당 단어가 문서내에서 얼마만큼의 비중을 차지하느냐인 것으로 보면된다.

'Writings' 카테고리의 다른 글

IDF:Inverse Document Frequency  (0) 2011.07.27
TF:Term Frequency  (0) 2011.07.26
Posted by 곰푼