멀티태스킹
- 컴퓨터가 여러 작업을 동시에 수행하는 것처럼 보이게 하는 운영체제의 기술
멀티태스킹 구현 방식
1. 시분할 멀티태스킹
- 하나의 CPU가 작업을 빠르게 전환 처리, 사용자에게 동시에 실행되는 것처럼 보이게 함
- CPU가 매우 빠르게 전환하여 작업이 병렬로 실행되는 것처럼 느껴짐
2. 병렬 멀티태스킹
- 여러 CPU나 코어를 활용하여 작업을 실제로 동시에 처리
- 작업 간 충돌을 최소화, 처리 속도 향상
멀티태스킹의 한계
초기 운영체제와 시분할 방식의 문제점
- 초기 운영체제는 단일 CPU로 작동, 시분할 멀티태스킹 방식 주로 사용
문제점
1. CPU 자원의 한계
- 작업이 많아질수록 모든 프로세스가 CPU를 할당받을 기회가 줄어듦
2. 컨텍스트 스위칭 비용
- 프로세스 전환 시, 레지스터 값과 메모리 상태를 저장하고 복원하는 작업(컨텍스트 스위칭)이 필요
- 무겁고 복잡하여 성능 저하 유발
3. 프로세스 간 데이터 공유의 어려움
- 각 프로세스는 독립적인 메모리 공간을 사용하므로 데이터 교환 시, IPC 기법 사용
- IPC상대적으로 구현이 복잡하고 느리며, 추가적인 프로그래밍 필요
멀티프로세싱 시스템
- 멀티태스킹의 한계를 극복하기 위해 멀티프로세싱 시스템 도입
- 하나의 프로세스뿐만 아니라 여러 프로세스를 처리할 수 있도록 여러 CPU(코어)를 사용하는 방식
장점
1. CPU 할당 기회의 증가
- 여러 CPU가 동시에 작동하기 대문에 작업이 많아져도 각 프로세스가 더 자주 CPU 할당받음
2. 병렬 처리
- 여러 CPU를 사용해 작업을 나누어 실행할 수 있어 수행 속도가 크게 향상
단점
1. 복잡한 작업 비효율성
- 새로운 프로세스를 생성할 때 메모리와 상태 정보를 모두 복제해야함
> 메모리 낭비 및 오버헤드 커짐
2. 프로세스간 통신의 문제 여전히 존재
- 여전히 독립적인 메모리 공간을 갖기 때문에, 프로세스 간 데이터 공유 어려움
- IPC의 복잡성과 성능문제 여전히 존재
스레드의 등장
스레드?
- 하나의 프로세스 내에서 실행되는 경량화된 실행 단위
- 기존 fork()방식의 비효율성을 해결하기 위해 도입
스레드의 주요 특징
1. 메모리 공유
- 스레드는 같은 프로세스 내에서 코드, 데이터, 힙 메모리 공유
- 스레드마다 독립적인 스택과 레지스터 값만 관리 > 메모리 낭비 감소
2. 컨텍스트 스위칭 비용 감소
- 프로세스 내의 실행 단위이기에 프로세스보다 가볍고, 전환 시 필요한 데이터가 적음
fork()?
- 운영체제에서 새로운 프로세스 생성하는 시스템
- 부모 프로세스의 메모리, 상태, 파일 디스크립터 등을 복사하여 자식 프로세스 생성
동작방식
- 부모 프로세스. --복제--> 자식 프로세스
- 부모와 동일한 데이터, 코드를 가지고 실행
- 부모와 자식 프로세스는 독립적으로 실행
문제점
- 메모리낭비
- 컨텍스트 스위칭 비용
- 프로세스간 데이터 공유 어려움
'운영체제' 카테고리의 다른 글
동시성 처리 (1) | 2024.12.28 |
---|---|
프로세스와 운영체제의 이해 (1) | 2024.12.15 |
운영체제의 역할과 구조 (2) | 2024.12.14 |
컴퓨터의 구성과 동작원리 (0) | 2024.12.11 |