❗️ 프로세스 처리방법을 이해할 수 있다.
👉 하나 끝내고 다음으로 넘어가는 방식
작업을 한 번에 하나씩, 순서대로 처리하는 것. CPU가 하나의 명령어만 처리.
집안일 비유 :
세탁 → 청소 → 설거지
세탁이 다 끝나야 청소 시작, 청소 끝나야 설거지 시작.
📝 장점: 단순, 관리 쉬움
📝 단점: 속도 느림, 여러 작업이 겹치면 오래 걸림
👉 동시에 진행되는 것처럼 보이지만 사실은 번갈아가며 조금씩 처리
CPU가 여러 작업을 빠르게 교체(시분할)해서 처리해서, 동시에 실행되는 것처럼 보이는 것. (실제로는 "동시성")
집안일 비유 :
한사람이 세탁기를 돌려놓고(자동), 기다리는 동안 청소 시작 → 청소 중에 잠깐 멈추고 설거지도 조금 함 → 다시 청소 마무리.
즉, 작업을 쪼개서 번갈아가며 진행하는 느낌.
📝 장점: 자원 효율적 활용 (CPU 놀리지 않음)
📝 단점: 실제 병렬은 아니므로 작업 속도 자체가 빨라지는 건 아님
👉 여러 작업을 진짜 동시에 처리하는 것 (멀티코어/멀티프로세서)
여러 개의 CPU(또는 코어)가 있어서 동시에 다른 작업을 처리.
집안일 비유 :
내가 청소하는 동안, 동생이 설거지하고, 세탁기는 자동으로 빨래 돌리는 상황.
진짜 물리적으로 동시에 여러 일이 진행되는 것.
📝 장점: 속도 향상, 진짜로 동시 실행 가능
📝 단점: 하드웨어 비용 증가, 동기화 문제 발생 가능
구분 | 처리 방식 | 집안일 비유 | 특징 |
---|---|---|---|
순차처리 | 하나 끝내고 다음 | 세탁 → 청소 → 설거지 | 단순하지만 느림 |
병행처리 | 번갈아가며 조금씩 | 세탁기 돌리는 동안 청소/설거지를 조금씩 교체 | 동시에 보이지만 실제로는 시분할 |
병렬처리 | 진짜 동시에 | 내가 청소, 동생은 설거지, 세탁기는 자동 | 속도 빠름, 하드웨어 자원 필요 |
운영체제가 실행 중인 프로세스/스레드를 다른 프로세스로 바꾸는 것
💡 덕분에 CPU는 하나인데도 여러 프로그램이 동시에 실행되는 것처럼 보인다. (멀티태스킹 illusion)
Context(문맥) = 프로세스(또는 스레드)가 실행되던 당시의 상태 정보
👉 즉, 작업 중 Bookmark(책갈피) 같은 것.
👉 즉, 병행 처리(Concurrency)를 구현하기 위해 Context Switching이 필요함.
❗️병렬 처리에서도 Context Switching이 필요할까?
- 멀티코어 환경(병렬 처리)에서도 한 코어당 여러 프로세스를 번갈아 실행해야 할 때가 있음 → 이때도 Context Switching 발생
- 단, 병렬 환경에서는 여러 코어가 있어서 동시에 실행이 가능하니까 Context Switching의 빈도가 상대적으로 적을 수도 있음