나만의 작은 도서관

[TIL] 240603 캠프 50일차: 소켓, 쓰레드, I/O 본문

Today I Learn

[TIL] 240603 캠프 50일차: 소켓, 쓰레드, I/O

pledge24 2024. 6. 4. 01:11

오늘 배운 내용                                     

소켓

소켓은 통신의 극점(endpoint)를 말하며, 두 프로세스가 네트워크 상에서 통신을 할 때 사용한다. 양 프로세스에 하나씩 총 두개의 소켓이 필요하며, 각 소켓은 IP주소 + 포트 번호 조합으로 구별한다. 서버-클라이언트 구조인 경우, 클라이언트가 서버로부터 부여받는 포트번호는 유일한다(1024번 이상의 포트 번호)

 

쓰레드

프로세스 내에서 작업을 실행하는 주체이다. 하나의 프로세스에 1개 또는 그 이상의 쓰레드가 존재할 수 있는데, 이 대 여러 개의 쓰레드를 사용할 수 있는 프로세스를 멀티쓰레드 프로세스라고 한다. 멀티 쓰레드인 경우 각 쓰레드는 프로세스의 메모리를 공유 자원으로 사용한다. 그렇기 때문에 하나의 쓰레드에 문제가 발생하면, 같은 프로세스에 존재하는 다른 쓰레드들에게 영향을 줄 수 있다. 

같은 프로세스에 있는 쓰레드와의 콘텍스트 스위칭(context switching)은 다른 프로세스와의 콘텍스트 스위칭보다 부담이 적다. 그 이유는 같은 프로세스의 콘텍스트 스위칭이 발생한 경우, 캐시를 삭제하고 생성하는 일련의 과정을 생략할 수 있기 때문이다(공유 데이터가 동일하기 때문)

 

I/O

I/O는 input/output을 의미하며, I/O장치로는 키보드, 마우스, 스피커 등이 있다. I/O의 작업 처리 속도는 CPU보다 매우 느리기 때문에 동기식으로 I/O작업 처리를 기다리는 것은 CPU가 idel상태로 놀고 있는 기간이 치명적이게 길어지는 결과를 초래한다. 따라서 되도록이면 I/O작업 처리는 비동기 방식으로 처리하는 것이 바람직하다.

오늘의 Trouble Shooting                  

- 오늘은 해결한 Trouble이 없어요!

 

오늘 한 일                                       

더보기
  • IOCP, Select모델 발표 자료 제작 완료
  • 1차 팀 프로젝트 각 팀원의 PR & merge 완료(필수 요구사항 80%완료)
  • 팀 프로젝트 2번째 역할 분배