본문으로 바로가기

[리눅스] I/O 인터페이스

category 운영체제/리눅스 2019. 12. 16. 21:15
728x90
반응형

오늘은 리눅스의 I/O 인터페이스에 대해 알아보겠습니다.

I/O는 입력/출력을 뜻합니다.

I/O인터페이스는 데이터 교환을 위한 기능입니다. 

IPC에서 몇 가지에 대해 언급을 했지만, 여기서 더 자세히 설명드리겠습니다.

많이 사용되는 I/O 종류로는 파일, 파이프, 소켓, IPC 등이 있습니다.

프로세스끼리의 통신을 위해서는 IPC뿐 아니라 I/O도 많이 사용합니다.

 

 

 

1. 파이프

실제 사용하는 파이프와 똑같습니다.

파이프 한쪽에서 물을 넣으면 다른 쪽에서 물을 받을 수 있습니다.

물을 데이터로 비유하면됩니다.

파이프는 익명 파이프(anonymous pipe)와 네임드 파이프(named pipe)가 있습니다.

익명 파이프는 임시적으로 생성된 프로세스만 접근이 가능하고, 다른 외부의 프로세스는 접근이 불가능합니다.

네임드 파이프는 외부에서 접근 가능합니다.

익명 파이프는 쉘에서도 사용합니다.

제가 자주 사용하는 명령어인 ps -ef | grep [process_name] 에서도 사용됩니다.

프로세스가 동작하는지는 자주 확인합니다.

여기서 파이프는 두 명령어를 연결해줍니다.

ps -ef 의 출력 결과를 grep [process_name] 으로 전달하게 되어 출력이 됩니다.

파이프는 FIFO(First In First Out) 규칙을 따르는데 선입선출 즉, 처음 들어온 것이 처음 나간다는 뜻입니다.

 

 

 

2. 소켓 


제가 자주 사용하는 기법입니다.

아무래도 네트워크쪽 개발을 많이 하다보니 자주 사용합니다.

소켓은 많이 공부했습니다.

네트워크 프로그래밍에서 가장 기본적인 부분을 담당합니다.

소켓은 크게 유닉스 도메인 소켓과 네트워크 도메인 소켓으로 나눌 수 있습니다.

유닉스 도메인 소켓은 로컬 시스템 즉, 현재 장비에서만 접근이 가능합니다. ( 내부 소켓 )

네트워크 도메인 소켓은 다른 시스템 즉, 다른 장비에서도 접근이 가능 합니다. ( 네트워크 소켓 )

하나의 호스트 내에서 통신을 하고 싶을 때는 유닉스 도메인 소켓을, 다른 호스트와 통신을 하고 싶을 때는 네트워크 도메인 소켓을 사용합니다.

위의 두 종류는 소켓의 도메인입니다.

소켓을 어떤 방식으로 보낼지는 또 두 가지로 나눌 수 있습니다.

데이터그램 소켓과 스트림 소켓 입니다.

데이터 그램은 사용자가 정한 데이터그램 단위로 전송하겠다는 것입니다.

스트림은 물이 흐르는 것처럼 데이터를 전송하겠다는 것입니다.

그렇게 때문에 데이터 그램은 유실이 발생할 가능성이 있습니다.

그에 반해 스트림은 물이 흐르는 것처럼 유실되지 않고 전송을 합니다.

오늘 포스팅은 여기까지 하겠습니다.

728x90
반응형

'운영체제 > 리눅스' 카테고리의 다른 글

[리눅스] samba란  (0) 2020.04.19
[리눅스] systemd? systemctl?  (0) 2020.01.16
[리눅스] IPC란  (0) 2019.12.10
[리눅스] ulimit 명령어  (0) 2019.12.06
[리눅스] yum local repository 설정  (3) 2019.11.04