/usr/bin/date: ELF 64-bit LSB executable, Excutable Linking Format, 64bit 실행(.exe) 파일
c언어 소스코드 파일 및 컴파일 파일 확인
[root@hj0216 ~]# vi k.c
#include <stdio.h>
int main(void)
{
puts("Linux Study \n");
return 0;
}
[root@hj0216 ~]# gcc k.c -o k
[root@hj0216 ~]# ./k
Linux Study
[root@hj0216 ~]# file k.c
k.c: C source, ASCII text
[root@hj0216 ~]# file k
k: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=5184afee87a2c1e03c5ab28a197f71a816dd0587, not stripped
k.c: C source, C 소스코드 파일
k: ELF 64-bit LSB executable, 64-bit exe 실행 파일
File의 종류
[root@hj0216 ~]# ll /dev
crw-------. 1 root root 10, 235 2월 3 22:50 autofs
drwxr-xr-x. 2 root root 160 2월 3 22:50 block
lrwxrwxrwx. 1 root root 3 2월 3 22:50 cdrom -> sr0
brw-rw----. 1 root disk 253, 0 2월 3 22:50 dm-0
srw-rw-rw-. 1 root root 0 2월 3 22:50 log
...
c: character device (입출력 장치: 프린터기, 키보드 등)
[root@hj0216 ~]# file /dev/autofs
/dev/autofs: character special
Process의 경우, 완전히 독립된 실행 객체로써 다른 Process의 영향을 받지 않음
그로인해 서로간 통신이 어려워 Kernel 영역에서 IPC라는 내부 프로세스 간 통신을 제공
Process는 이러한 IPC를 통해 상호 통신을 함
-> IPC의 종류: PIPE, Named PIPE, Message Queue, Shared Memory, Socket 등
1. PIPE: 부모-자식 프로세스간 통신 시 사용
2. Named PIPE: 이름을 가진 PIPE를 통해서 부모-자식 관계가 아닌 프로세스간 통신 시 사용 가능
3. Memory Queue: 컨베이너 벨트 위 물건에 라벨을 붙이면서 동시에 다양한 물건을 다룰 수 있는 것과 같이 큐에 쓸 데이터에 번호를 붙임으로써 여러 개의 프로세스가 동시에 데이터를 쉽게 다룰 수 있음
4. Shared Memory: 프로세스가 공유 메모리 할당을 커널에 요청하면 커널은 해당 프로세스에 메모리 공간을 할당함으로써 이후 어떤 프로세스건 해당 메모리영역에 접근할 수 있음 공유메모리는 중개자가 없이 곧바로 메모리에 접근할 수 있기 때문에 다른 모든 IPC들 중에서 가장 빠르게 작동함
5. Socket: 같은 도메인 내에서 연결될 수 있고, process들간 통신을 가능하게 하는 범용적인 IPC