운영체제 OS에서 프로세스는 태스크(task)와 쓰레드(thread)라는 두 특성으로 분리되어 관리된다.
Why use? -> 컴퓨터시스템 자원을 효율적으로 사용하고 응용 프로그램의 성능을 향상 시키기 위해서!!
1. 태스크(Task)는 무엇인가?
- 자원 컨테이너(Resource Container) : 사용자 정보와 시스템 정보등을 저장합니다.
- 멀티태스킹 : 하나의 프로세스는 여러개의 태스크를 포함할 수 있다.
2. 쓰레드(Thread)란 무엇인가?
- 코드를 실행하는 단위이다. 실행에 필요한 정보들을 포함한다.
- 멀티태스킹 : 하나의 프로세스 내에 여러 개의 쓰레드가 동시에 실행될 수 있다. -> 처리속도 향상
*멀티태스킹이란 한 번에 2가지 이상의 일을 동시에 처리하는 것으로 다중작업이라고 이해하면 편하다! 멀티태스킹이 가능한 프로세스의 쓰레드 들은 그 프로세스의 자원들을 공유한다!
단일 쓰레딩과 멀티쓰레딩
- 단일프로세스 단일쓰레드
- 한 번에 하나의 작업만 처리할 수 있고, 멀티태스킹 지원이 안된다.
- CPU 사용률이 낮고, 메모리 사용량도 적다.
- 단일프로세스 다수의 쓰레드
- 하나의 프로세스내에 여러개의 쓰레드를 가지고 있어 멀티태스킹이 가능하다.
- 멀티태스킹이 가능하므로 여러 작업을 동시에 처리할 수 있다.
- 다수의 프로세스 프로세스당 하나의 쓰레드
- 각 프로세스는 하나의 쓰레드만 가지고 있어 프로세스 간 데이터 공유가 어렵다.
- 여러 프로세스를 사용하여 작업을 병렬 처리할 수 있고 따라서 성능이 향상된다.
- 각 프로세스가 독립적으로 실행되어 안전하지만 프로세스 간 통신이 어려울 수 있다.
- 다수의 프로세스 프로세스 당 다수의 쓰레드
- 가장 높은 수준의 병렬처리와 멀티태스킹 성능을 제공한다.
- CPU사용률을 극대화하여 시스템 성능이 매우 높다.
단일 쓰레드와 멀티 쓰레드
멀티 쓰레드 환경에서 코드, 데이터, 파일은 모든 스레드가 공유하는 반면, 레지스터와 스택은 각 쓰레드마다 독립적으로 존재한다.
스택 : 함수 호출 시에 전달죄는 인자이다. 작업 후 되돌아갈 주소값 및 함수 내에서 선언하는 변수 등을 저장하기 위해 사용되는 메모리 공간이다.
레지스터 : 쓰레드가 명령어의 어디가지 수행했는지에 대한 정보가 들어간다.
'컴퓨터과학 > 운영체제' 카테고리의 다른 글
메모리 관리 (1) | 2024.05.31 |
---|---|
병행성 : 교착상태와 기아 (0) | 2024.05.31 |
운영체제 병행성 : 상호배제와 동기화 (0) | 2024.05.14 |
프로세스를 생성하는 fork()함수를 알아보자 (1) | 2024.05.06 |
운영체제가 뭔데? 이름부터 어려운게 거부감 드는데? (0) | 2024.05.03 |