This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
|
wiki:others [2017/12/07 12:33] 1.241.172.144 created |
wiki:others [2017/12/14 16:45] (current) 1.241.172.144 |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | =====1. signal의 일반적 정의===== | + | =====보통 먼저... 어떤..===== |
| - | + | ||
| - | 의미를 전달하기 위해서 사용하는 일반적인 방법으로 신호와 메시지가 있다. 메시지는 언어기반의 전달방식이며, 여러의미를 내포하고 있는 비교적 복잡한 의미전달 방식이다. | + | |
| - | + | ||
| - | 반면, 신호는 하나의 의미만을 내포한다. 해석이 간단하고 빠른전달이 가능하다는 장점을 지난다. 예를들어 교통신호 표지판은 각각이 하나의 의미만을 가지며, 누구에게나 동일하게 해석이 된다. | + | |
| - | + | ||
| - | 이상은 일반 생활에서의 신호와 메시지의 차이점을 기술한건데, 컴퓨터에서의 의미전달에도 그대로 적용된다. | + | |
| - | + | ||
| - | ====1.1. 시그널==== | + | |
| - | + | ||
| - | 시그널 즉 신호는 "의미"를 상대방에게 전달하기 위해서 사용하는 소통방식 중 하나로, 아마도 인류의 가장오래된 소통방식 중 하나일 것이다. 하긴 signal은 인간만이 사용할 수 있는 유일한 것은 아니다. 시그널은 그 자체가 복합적이고 추상적인 언어의 성격보다는 구체적이고 단순한, 즉 1:1로 의미가 매칭이 되는 단순한 소통의 방식이기 때문이다. 예컨데, 동물들도 울음소리나 몸동작, 호르몬, 배설물들을 이용해서 다른 동물들에게 신호를 보낸다. | + | |
| - | + | ||
| - | signal이 동물들과 인간들에게 있어서의 최소한의 의사소통으로 오랫동안 선호되어온 이유는 그 사용방법의 간단함과 의미전달의 효율에 있을 것이다. 언어의 경우에는 매우 간단한 문장이라고 하더라도 다양한 해석이 있을 수 있고, 문화와 환경이 다를 경우에는 전혀 다른 해석이 있을 수 있지만, 정보와 의미가 1:1로 매칭되는 signal은 그 의미를 해석하는데 많은 에너지를 사용할 필요가 없기 때문이다. 빠르고 전달되고 빠르게 해석된다는 장점을 가진다고 볼 수 있겠다. | + | |
| - | + | ||
| - | 물론 signal도 단점은 있다. 1:1이기 때문에, 생존에 필요한 최소한의 정보를 정확하게 전달하기에는 매우 효율적이지만, 복잡한 의미를 전달할때에는 오히려 효율이 떨어질 수 있다는 점이다. | + | |
| - | + | ||
| - | 요즘과 같이 복잡한 시대에, 신호와 같은 단순한 것들로는 살아가기가 귀찮을 것 같다고 생각될지도 모르지만, 사실 신호는 오히려 더욱더 널리 사용되는 추세다. 그렇잖아도 복잡한 세상인데, 어느 세월에 그걸 말과 글로 설명하고 앉아 있을 것인가. | + | |
| - | + | ||
| - | 지금은 위험하오니 길을 건너지 마시오하는 것보다 빨간불켜주는게 의미를 훨씬더 잘 전달할 수 있다. 신호는 오히려 차고 넘친다. 도로는 온통 신호들로 넘쳐나며, 인터넷 세계역시 이모티콘으로 대표되는 신호들로 가득 채워져 있다. | + | |
| - | + | ||
| - | 이들 신호는 주로 다음의 두가지 용도에 특히 잘 사용될 수 있다. | + | |
| - | + | ||
| - | 비동기적인 사건이 발생했음을 알리기 위함 : 즉 예로 들자면 전화벨, 메시지가 도착했음을 알리는 알람 | + | |
| - | 사건을 동기화 하기 위함 : 시계알람, 자동차경주에서 출발시각을 맞추기 위함 | + | |
| - | + | ||
| - | ====1.2. 메시지==== | + | |
| - | + | ||
| - | 시그널은 빠르고, 간단하게 이해될 수 있다는 장점이 있지만 복잡한 정보를 전달할 수 없다는 단점을 가진다. 그래서 인간의 언어와 비슷한 형태로 메시지를 이용해서 정보를 전달하는 방법도 있다. | + | |
| - | + | ||
| - | 이 방식을 이용하면 복잡한 정보를 전달할 수 있지만, 메시지의 형식과 해석방법에 대해서 서로 약속이 되어 있어야 한다. 나는 너를 사랑한다라는 인간의 메시지를 예로 들어보자. 이 메시지를 정확히 전달하고 이해할려면 주어+동사+목적어라는 문장의 형식과 나, 너, 사랑, 하다의 단어들의 의미를 알고 있어야만 한다. 또한 이러한 약속을 알고 있다고 하더라도, 자신이 처한 문화/사회적 환경과 교육수준에 따라서 전혀 다르게 해석이 되기도 한다. | + | |
| - | + | ||
| - | 이처럼 이용하기 복잡하지만 형식과 의미를 이해하고 있다면, 몇개의 단어만을 가지고도 엄청나게 다양한 정보전달이 가능하다는 장점을 가진다. 우리가 일상적으로 사용하는 단어는 수천개에 불과하다. 그렇지만 이 수천개로 거의 무한에 가까운 의미를 전달할 수 있다. | + | |
| - | + | ||
| - | 컴퓨터에서는 프로세스간 복잡한 정보교환을 위해서 메시지를 교환하는 경우가 많다. 인간의 언어와 마찬가지로 이들도 해석될 수 있도록 메시지 규약을 가지고 있어야 한다. 이러한 메시지 규약을 Protocol이라고 한다. 예를들어 Web Server는 Web Client와 메시지 통신을 하는데, 이때 따르는 Protocol이 HTTP(HyperText Transfer Protocol)이다. 마찬가지로 파일전송을 위한 일반적인 프로토콜로 FTP(:12)가 있다. 이들 메시지는 내부 프로세스 간의 통신일 경우 IPC(:12)라고 하는 리눅스 운영체제가 제공하는 내부통신메커니즘에 따라서 전달될 수 있다. 멀리떨어진 프로세스, 즉 인터넷으로 연결된 프로세스들이라면 TCP(:12)/IP(:12)를 이용해서 통신이 이루어질 것이다. TCP/IP는 인터넷상에서 데이터를 전송하기 위한 프로토콜이며, 리눅스는 이들 프로토콜을 쉽게 사용할 수 있도록 socket(:12)를 제공한다. | + | |
| - | + | ||
| - | IPC는 뒷장에서 따로 다룰 것이다. 네트워크상에서 socket을 이용한 프로세스간 통신은 이 문서의 범위를 벗어난다. 아마도 네트워크 프로그래밍 관련된 별도의 문서를 통해서 다루게 될 것이다. | + | |
| - | + | ||
| - | =====2. 운영체제에서의 signal===== | + | |
| - | + | ||
| - | 운영체제가 하는 가장 중요한 일은 컴퓨터와 인간이 서로 원할히 소통할 수 있게끔 도와주는 일이 될것이다. 운영체제와 인간 사이에는 다시 응용 소프트웨어가 놓여있고, 인간은 응용 소프트웨어를 통해서 운영체제와 소통을 하게 된다. | + | |
| - | + | ||
| - | +----------+ | | | + | |
| - | | Computer |<--->| OS | <-------> 응용 APP <---------> 사용자 | + | |
| - | | | | | <-------> 응용 APP | + | |
| - | | | | | <-------> 응용 APP | + | |
| - | +----------+ | | | + | |
| - | + | ||
| - | 운영체제는 이들 응용 소프트웨어간 그리고 응용 소프트웨어와 사용자간의 소통을 위한 몇가지 도구들을 제공한다. 예컨데, IPC(다음 장에서 다루게될)와 같은 것들인데, 이것은 인간의 언어의 형태에 가깝다. 즉 다양한 형태로 해석될 수 있는 '''메시지'''들을 주고 받음으로써, 각각의 객체들간의 소통을 지원한다. | + | |
| - | + | ||
| - | 이들은 '''재해석'''가능한 데이터를 이용하기 때문에, 객체간 복잡한 소통을 할 수 있지만, 반대로 사용하기에 너무 복잡한 면이 있다. 때로는 인간이나 혹은 동물들이 그렇듯이, 아주 간단하게 소통할 수 있는 '''signal'''같은 도구도 필요할 것이다. | + | |
| - | + | ||
| - | 그래서 대부분의 운영체제(:12)는 signal을 지원하며, 마찬가지로 Linux도 signal을 지원한다. 시그널은 인간이나 동물이 사용하는 그것과 매우 유사하다. 즉 의미와 정보가 1:1로 매칭되기 때문에, 재해석할 필요없이 즉시 의미를 알아낼 수 있도록 되어 있다. | + | |
| - | + | ||
| - | 리눅스 운영체제는 미리 약속되어 있는 수십가지의 signal을 제공하는데, kill(1)을 이용하면 리눅스가 지원하는 signal의 종류를 알아낼 수 있다. | + | |
| - | + | ||
| - | <code> | + | |
| - | # kill -l | + | |
| - | 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL | + | |
| - | 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE | + | |
| - | 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 | + | |
| - | 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT | + | |
| - | 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP | + | |
| - | 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU | + | |
| - | 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH | + | |
| - | 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN | + | |
| - | 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 | + | |
| - | 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 | + | |
| - | 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 | + | |
| - | 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 | + | |
| - | 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 | + | |
| - | 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 | + | |
| - | 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 | + | |
| - | 63) SIGRTMAX-1 64) SIGRTMAX | + | |
| - | </code> | + | |