yooniiverse
개발 블로그
yooniiverse
전체 방문자
오늘
어제
  • 분류 전체보기
    • 운영체제
    • 네트워크
    • ~2023.02
      • 외부교육
      • 대외활동
      • 스터디
      • 동아리
      • TIL
      • IT지식
      • 기타
      • 트러블 슈팅
      • 프로그래밍
      • Python
      • Java
      • JS
      • DB(SQL)
      • JSP
      • Spring
      • 기술면접
      • 자바
      • 코딩테스트
      • 자료구조
      • 알고리즘
      • 백준 문제풀이
      • 인공지능
      • 머신러닝
      • 프로젝트
      • 안드로이드 앱개발
      • 웹개발
      • 웹 서비스
      • 웹퍼블리싱
      • Node.js 백엔드 개발
      • CS
      • 1일 1CS지식
      • 운영체제
      • 네트워크
      • 데이터베이스
      • 정보처리기사
      • 도서 리뷰
      • 개발 관련 도서
      • 기타 도서

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
yooniiverse

개발 블로그

~2023.02/1일 1CS지식

동기와 비동기, 블로킹과 논-블로킹이란?

2022. 7. 15. 22:20

I/O 작업은 user space에서 직접 수행할 수 없기 때문에 user process가 kernel에 I/O 작업을 요청하고 응답을 받는 구조이다.

응답을 어떤 순서로 받는지, 어떤 타이밍에 받는지에 따라 여러 모델로 분류되는 것이다.

 

동기 프로그래밍과 비동기 프로그래밍?

동기 작업이란 한 번에 하나씩 수행되는 것을 의미한다.

즉, 해당 작업이 끝나기 전까지는 현재 진행중인 작업 외의 다른 작업을 수행하지 못함을 의미한다.

(HTTP 요청은 요청을 하면 무조건 응답을 받는다. 이것이 동기적이라고 할 수 있다.)

다른 말로는 모든 I/O 요청-응답 작업이 일련의 순서를 따르는 것이다. 즉, 작업의 순서가 보장된다.

 

비동기 작업이란 한 번에 하나 이상이 수행될 수 있음을 의미한다.

즉, 현재 작업을 진행중이더라도 다른 작업을 수행할 수 있다. 또한 작업에 대한 결과를 바로 원하지 않는다.

(내가 이메일을 보내는 작업은 상대방이 바로 답장하기를 원해서 보내는 작업은 아니다.)

 

블로킹과 논-블로킹?

블로킹은 자신이 waiting(blocking)된 것을 의미한다.

thread가 blocking이 된다는 것은 cpu가 점유되어 실행되지 못함을 의미한다.

 

논블로킹은 블로킹의 반대로, wait하지 않고 그냥 수행된다.

자신이 호출되었을 때, 다시 말해서 system call을 받았을 때 제어권을 바로 자신을 호출한 쪽으로 넘기며

자신을 호출한 쪽에서 다른 작업을 할 수 있도록 하는 것을 의미한다.

자신은 그대로 작업을 이어 나간다. thread가 waiting 하지 않으므로 cpu 제어는 그대로이다.

 

 

출처: (A)Synchronous 그리고 (Non)-Blocking (tistory.com)

'~2023.02 > 1일 1CS지식' 카테고리의 다른 글

컴파일러와 인터프리터의 차이는 무엇일까?  (0) 2022.07.18
DNS와 DHCP란?  (0) 2022.07.16
대표적인 SQL의 종류 3가지와 종류별 명령어는?  (0) 2022.07.14
http의 문제점은 무엇일까?  (0) 2022.07.13
AVL 트리란?  (0) 2022.07.12
    '~2023.02/1일 1CS지식' 카테고리의 다른 글
    • 컴파일러와 인터프리터의 차이는 무엇일까?
    • DNS와 DHCP란?
    • 대표적인 SQL의 종류 3가지와 종류별 명령어는?
    • http의 문제점은 무엇일까?
    yooniiverse
    yooniiverse

    티스토리툴바