본문 바로가기
운영체제

스레드의 등장

by dsungc 2024. 12. 21.

멀티태스킹

- 컴퓨터가 여러 작업을 동시에 수행하는 것처럼 보이게 하는 운영체제의 기술

 

 

멀티태스킹 구현 방식

 

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()?

- 운영체제에서 새로운 프로세스 생성하는 시스템

- 부모 프로세스의 메모리, 상태, 파일 디스크립터 등을 복사하여 자식 프로세스 생성

동작방식

- 부모 프로세스.  --복제-->  자식 프로세스

- 부모와 동일한 데이터, 코드를 가지고 실행

- 부모와 자식 프로세스는 독립적으로 실행

문제점

- 메모리낭비

- 컨텍스트 스위칭 비용

- 프로세스간 데이터 공유 어려움

https://velog.io/@chappi/OS%EB%8A%94-%ED%95%A0%EA%BB%80%EB%8D%B0-%ED%95%B5%EC%8B%AC%EB%A7%8C-%ED%95%A9%EB%8B%88%EB%8B%A4.-3%ED%8E%B8-%EC%8A%A4%EB%A0%88%EB%93%9C-%EC%8A%A4%EB%A0%88%EB%93%9C%EC%99%80-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4

 

 

'운영체제' 카테고리의 다른 글

동시성 처리  (1) 2024.12.28
프로세스와 운영체제의 이해  (1) 2024.12.15
운영체제의 역할과 구조  (2) 2024.12.14
컴퓨터의 구성과 동작원리  (0) 2024.12.11