CS
[CS] 동기 / 비동기, 블로킹 / 논블로킹
[CS] 동기 / 비동기, 블로킹 / 논블로킹
2024.05.18A 함수(호출자)가 B 함수(피호출자)를 호출하는 상황이라고 가정❶ 동기/비동기: 호출자(A)가 피호출자(B)의 처리 결과를 기다리는지 여부동기: 피호출자의 처리 결과를 받아서 다음 작업 수행 → 호출자/피호출자 순차적 수행A는 B 작업이 끝날 때까지 다른 작업을 수행하지 않고 B의 반환값을 기다림 비동기: 피호출자의 처리 결과를 기다리지 않고 다음 작업 수행 → 호출자/피호출자 동시 수행B가 작업을 완료하면 콜백 함수 호출 (혹은 프로미스 활용) ❷ 블로킹/논블로킹: 호출자(A)가 피호출자(B)에게 제어권 전달 여부블로킹: 피호출자에게 제어권 전달 → 피호출자가 작업을 완료할 때까지 대기A가 B를 호출하여 제어권 전달 후, B의 작업 완료를 기다림 논블로킹: 피호출자에게 제어권 전달 안함 → 호출자는 ..
[CS] 오버헤드 / 프로세스 / 스레드
[CS] 오버헤드 / 프로세스 / 스레드
2024.05.18오버헤드오버헤드는 특정 작업을 수행하기 위해 간접 혹은 추가적으로 필요한 작업이나 비용을 의미한다. 여기서 비용은 컴퓨터의 처리 시간, 메모리 등을 말한다. 예를 들어 처리시간 10초가 필요한 A 기능에 안전성을 위한 부가기능 B를 추가한 결과 총 15초가 소요됐다면, 오버헤드는 5초가 된다. 오버헤드는 현실 세계에서 마트에 장보러 가는 것에 비유하면 더 쉽게 이해할 수 있다. 10만 원어치 물건을 구매하기(메인 작업 A) 위해 마트까지 가는 일(부가 작업 B)은 장보기에서 큰 부분을 차지하지 않는다. 하지만 껌 하나만 사기 위해(작업 A) 마트까지 간다면, 마트까지 이동하는 일(부가 작업 B)은 장보기에서 상대적으로 큰 부분을 차지한다. 이때 껌을 사기 위해 마트까지 가는 건 오버헤드가 너무 크다고 말..