둠치킨
코딩하는 둠치킨
둠치킨

블로그 메뉴

  • 홈
  • 분류 전체보기 (218)
    • BOJ (171)
      • 스택 (14)
      • 큐 (5)
      • 덱 (4)
      • 그래프 (30)
      • 배열 (8)
      • 재귀 (12)
      • 브루트 포스 (2)
      • 그리디 알고리즘 (7)
      • 다이내믹 프로그래밍 (13)
      • 백트래킹 (24)
      • 기하학 (4)
      • 트리 (4)
      • 구현 (14)
      • 수학 (3)
      • 맵 (1)
      • 다익스트라 (2)
      • 누적합 (5)
    • 자료구조 (14)
      • 스택 (3)
      • 큐 (5)
      • 덱 (2)
      • 그래프 (1)
      • 트리 (1)
      • 힙 (1)
      • 정렬 (1)
    • C++ (11)
      • 모두의코드 (2)
      • Effective C++ (3)
      • C++ STL (6)
    • 컴파일러 (1)
    • OS (17)
    • 컴퓨터 구조 (2)
    • Unreal Engine 5 (2)

공지사항

전체 방문자
오늘
어제

인기 글

최근 글

태그

  • BFS
  • boj
  • Bruteforce
  • C
  • C++
  • C++ STL
  • Cache Memory
  • deadlock
  • DFS
  • Effective C++
  • java
  • Mutex
  • next_permutation
  • os
  • Process
  • rotate
  • semaphore
  • spin lock
  • STL
  • STL C++
hELLO · Designed By 정상우.
둠치킨

코딩하는 둠치킨

동기 vs 비동기 & 블로킹 vs 논블로킹
OS

동기 vs 비동기 & 블로킹 vs 논블로킹

2025. 6. 25. 17:28

동기(Synchronous)와 비동기(Asynchronous)

  • 동기는 호출한 함수가 작업이 끝날 때까지 기다리는 방식.
    즉, 요청을 보내고 결과가 반환될 때까지 아무 일도 하지 않고 기다린다는 의미.
  • 비동기는 호출한 함수가 작업이 끝날 때까지 기다리지 않고 바로 다음 작업을 수행하는 방식.
    결과는 나중에 콜백이나 이벤트를 통해 알려줌

즉, 동기냐 비동기냐는 ‘작업 완료 여부를 누가 신경 쓰는가’에 대한 관심.

  • 동기: 호출한 쪽이 작업 완료를 신경 씀
  • 비동기: 호출당한 쪽이 작업 완료를 신경 씀 (콜백 등으로 알려줌)

블로킹(Blocking)과 논블로킹(Non-blocking)

  • 블로킹은 함수 호출 시, 작업이 끝날 때까지 현재 스레드를 멈추게 함. 즉, 함수가 끝날 때까지 다른 작업을 못함
  • 논블로킹은 함수가 바로 리턴되고, 작업이 끝나지 않았더라도 스레드가 다른 일을 할 수 있게 함.

즉, 블로킹/논블로킹은 ‘호출한 함수가 바로 제어권을 되돌려받는가’에 대한 관심.

  • 블로킹: 작업이 끝날 때까지 제어권을 안 줌
  • 논블로킹: 작업 상태와 관계없이 제어권을 바로 줌

요약

  • 동기: 작업 끝났는지 내가 확인
  • 비동기: 끝났는지 신경 안 씀, 나중에 결과만 받음
  • 블로킹: 스레드가 멈춰서 기다림
  • 논블로킹: 스레드는 다른 일 하면서 대기

네 가지 조합과 예시

  1. 동기 + 블로킹
    • 가장 전통적인 방식
    • 함수 호출 → 작업 완료될 때까지 기다림 → 결과 반환
    • 예시: 전화를 걸고 상대가 받을 때까지 기다림. 직접 기다리고 직접 응답을 확인함.
  2. 비동기 + 논블로킹
    • 현대적인 비동기 처리 방식
    • 함수 호출 → 바로 리턴 → 결과는 콜백이나 이벤트로 알려줌
    • 예시: 문자를 보내고, 다른 일을 하다가 나중에 답장이 옴. 요청만 하고 기다리진 않음.
  3. 동기 + 논블로킹
    • 함수가 바로 리턴하지만, 호출한 쪽에서 반복적으로 상태를 확인해야 함 (폴링)
    • 예시: 계속 전화를 시도하다가 상대가 받을 때까지 반복. 스스로 응답 여부를 확인하고 기다림.
  4. 비동기 + 블로킹
    • 드문 조합. 내부적으로는 블로킹이지만, 결과 처리는 비동기적으로 콜백을 통해 함
    • 예시: 전화를 걸었는데, 상대가 받을 때까지 멈춰 있음. 응답은 나중에 상대가 전화로 알려줌. (기다리긴 하지만, 결과는 내가 처리 안 함)
저작자표시 (새창열림)

'OS' 카테고리의 다른 글

컨텍스트 스위칭(Context Switching)이란?  (0) 2025.06.25
캐시 메모리란?  (0) 2025.06.25
프로그램은 어떻게 실행되는가  (0) 2025.06.24
스핀락(Spin Lock)  (3) 2025.06.24
세마포어(Semaphore)  (0) 2025.06.24
    'OS' 카테고리의 다른 글
    • 컨텍스트 스위칭(Context Switching)이란?
    • 캐시 메모리란?
    • 프로그램은 어떻게 실행되는가
    • 스핀락(Spin Lock)
    둠치킨
    둠치킨
    코딩 공부를 위한 코딩 블로그 기록 일기

    티스토리툴바