CHANGEL
SOLID BASICS
CHANGEL

공지사항

  • DEV.CHANGEL PROFILE
  • SOLID BASIC (289)
    • 공부 STUDY (115)
      • JAVA (57)
      • C | C++ (34)
      • CS (11)
      • MySQL (2)
      • ALGORITHM (1)
      • HTML (2)
      • CSS (2)
      • JS (2)
      • CODING (0)
      • MINI PROJECT (3)
    • 스프링 SPRING (21)
      • [SPRING] 김영한 스프링 입문 (11)
      • [SPRING] 남궁성 스프링의 정석 (1)
      • [SPRING] 스프링 핵심원리 (9)
    • 전공 수업 CS (65)
      • Computer Network (13)
      • algorithms (21)
      • Computer Architecture (7)
      • Software Engineering (4)
      • Data Structure (2)
      • DataBase (1)
      • Digital Engineering (14)
      • Discrete Mathematics (3)
      • Introduction to programming (0)
      • Mobile Software (0)
      • Intelligence and Informatio.. (0)
    • 대외활동 (35)
      • 신한은행 대학생 홍보대사 34기 (8)
      • SKT T프렌즈 5기 (13)
      • SK DEVOTION YOUNG 1기 (9)
      • 성균관 대학교 공학교육혁신센터 수강 (3)
      • 수상 기록 (1)
    • 솝트 33기 안드로이드 (7)
      • [솝트 33기] 회고록 (0)
      • [솝트 33기] 안드로이드 왕초보 스터디 (2)
      • [솝트 33기] 코틀린 스터디 (0)
      • [솝트 33기] Git을 털어보자 깃털 스터디 (4)
    • 멋쟁이사자처럼 11기 (6)
      • 멋사 회고록 (4)
      • 백엔드 세션 (1)
      • 기획 세션 (1)
      • 연합해커톤 운영단 (기획팀) (0)
    • 백준 BAEKJOON (16)
    • 독서 BOOK (10)
    • 자격증 CERTIFICATE (1)
    • 준비 서류 및 회고록 MEMOIR (7)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

최근 댓글

인기 글

CHANGEL

SOLID BASICS

전공 수업 CS/Computer Network

[컴퓨터 네트워크] Blocking I/O & Non-Blocking I/O

2023. 1. 7. 23:00

I/O 작업은 Kernel level에서만 수행할 수 있다. 따라서, Process, Thread는 커널에게 I/O를 요청해야 한다.

 

  1. #Blocking I/O(1) Process(Thread)가 Kernel에게 I/O를 요청하는 함수를 호출
    • 특징
      • I/O 작업이 진행되는 동안 user Process(Thread) 는 자신의 작업을 중단한 채 대기
      • Resource 낭비가 심함
        (I/O 작업이 CPU 자원을 거의 쓰지 않으므로)

    여러 Client 가 접속하는 서버를 Blocking 방식으로 구현하는 경우 -> I/O 작업을 진행하는 작업을 중지 -> 다른 Client가 진행중인 작업을 중지하면 안되므로, client 별로 별도의 Thread를 생성해야 함 -> 접속자 수가 매우 많아짐
  2. 이로 인해, 많아진 Threads 로 컨텍스트 스위칭 횟수가 증가함,,, 비효율적인 동작 방식
  3. (2) Kernel이 작업을 완료하면 작업 결과를 반환 받음.
  4. I/O Blocking 형태의 작업은
  5. #Non-Blocking I/O
    • 진행 순서
      1. User Process가 recvfrom 함수 호출 (커널에게 해당 Socket으로부터 data를 받고 싶다고 요청함)
      2. Kernel은 이 요청에 대해서, 곧바로 recvBuffer를 채워서 보내지 못하므로, "EWOULDBLOCK"을 return함.
      3. Blocking 방식과 달리, User Process는 다른 작업을 진행할 수 있음.
      4. recvBuffer에 user가 받을 수 있는 데이터가 있는 경우, Buffer로부터 데이터를 복사하여 받아옴.
      5. 이때, recvBuffer는 Kernel이 가지고 있는 메모리에 적재되어 있으므로, Memory간 복사로 인해, I/O보다 훨씬 빠른 속도로 data를 받아올 수 있음.
      6. recvfrom 함수는 빠른 속도로 data를 복사한 후, 복사한 data의 길이와 함께 반환함.
  6. I/O 작업이 진행되는 동안 User Process의 작업을 중단하지 않음.

'전공 수업 CS > Computer Network' 카테고리의 다른 글

[컴퓨터 네트워크] 로드 밸런싱 (Load Balancing)  (0) 2023.01.07
[컴퓨터 네트워크] 대칭키 (Symmetric Key) & 공개키(Public Key)/비대칭키(Asymmetric Key)  (0) 2023.01.07
[컴퓨터 네트워크] 라우팅 알고리즘 | RIP와 OSPF | 임시노드, 영구노드 작성  (1) 2022.12.06
[컴퓨터 네트워크] TCP 혼잡 제어  (0) 2022.12.05
[컴퓨터 네트워크] IPv6 and Tunneling - IPv6 주소 체계 | 터널링  (0) 2022.12.03
    '전공 수업 CS/Computer Network' 카테고리의 다른 글
    • [컴퓨터 네트워크] 로드 밸런싱 (Load Balancing)
    • [컴퓨터 네트워크] 대칭키 (Symmetric Key) & 공개키(Public Key)/비대칭키(Asymmetric Key)
    • [컴퓨터 네트워크] 라우팅 알고리즘 | RIP와 OSPF | 임시노드, 영구노드 작성
    • [컴퓨터 네트워크] TCP 혼잡 제어
    CHANGEL
    CHANGEL
    NOT GIVING UP | SOLID BASICS

    티스토리툴바