프로세스에 대해 설명해주세요.
프로세스는 스케줄링의 단위이며, 소유하고 있는 자원에 대한 보호를 이루어지는 Protection domain으로 볼 수 있습니다.
프로세스 간의 메모리는 독립적이며, 서로의 영역에 접근이 어렵습니다.
프로세스는 하나의 실행 흐름을 가지고 실행 중인 프로그램입니다.
단점으로는 스위칭 비용이 상대적으로 큽니다.
쓰레드의 동기가 무엇일까요??
프로세스의 한계 때문입니다.
하나의 프로세스에는 하나의 컨트롤만이 존재하기 때문에, 프로세스는 한 번에 하나의 일만 처리할 수 있습니다.
프로세스에서 할 작업을 여러 개로 나눈 후에, 각각을 쓰레드화 한다면 병렬적으로 작업을 완수할 수 있을 것입니다.
쓰레드는 무엇인데요??
프로세스와 마찬가지로 스케줄링의 단위입니다. 프로세스 보다 작은 단위입니다.
Protection domain을 제공하는 프로세스와 달리 쓰레드는 제공하지 않습니다. 코드,데이터은 쓰레드 간에 공유되기 때문입니다. 이러한 점으로 인해, 쓰레드끼리는 IPC 없이 통신이 가능합니다.
프로세스 내의 하나의 실행 흐름을 의미합니다. 하나의 프로세스 안에 여러 개의 쓰레드가 존재할 수 있습니다.
쓰레들은 같은 메모리 영역을 사용하므로, 쓰레드 간의 스위치 비용이 상대적으로 적습니다.
여러 개의 쓰레드와 여러 개의 협력하는 프로세스의 차이점이 무엇일까요??
협력하는 프로세스 간에 통신을 하기 위해서는 프로세스 간 통신(IPC)가 필요하며, IPC는 비용이 많이 듭니다.
프로세스 간의 컨텍스트 스위칭도 비용이 듭니다.
프로세스 내에서 협력하는 쓰레드로 만든다면, 프로세스 보다 적은 비용으로 협력하는 프로세스가 하는일을 동일하게 수행할 수 있습니다.
쓰레드와 CPU 이용률의 관계는 아시나요??
쓰레드의 수가 증가할수록 CPU 이용률이 증가합니다.
쓰레드 스위칭 때문에 임계 값을 넘어가게 되면 CPU 이용률은 다시 감소합니다.
CPU의 수가 많은 시스템일수록 쓰레드를 이용하는게 유리하나요??
멀티 프로세싱환경에서 한 프로세스의 여러 쓰레드를 병력적으로 실행할수 있기 때문입니다.
쓰레드의 구성 요소는 어떻게 되나요??
TCB가 존재합니다.
쓰레드는 하나의 실행이므로 실행에 관련된 자료 구조가 필요합니다.
프로세스보다 쓰레드 고유의 정보 수가 적기 때문에 쓰레드 스위칭 비용이 적습니다.
쓰레드 식별자, 스택 포인터, 프로그램 카운터, 쓰레드의 상태, 쓰레드 레지스터 값들.., 스레드가 있는 프로세스의 PCB에 대한 포인터이 존재합니다.
즉, 하나의 프로세스에 속한 서로 다른 쓰레드들은 PCB를 공유하면서 TCB는 각자 따로 만들어 관리합니다.
쓰레드가 서로 공유하는 것은 무엇인가요??
PCB와 프로그램의 코드 영역, 프로세스의 데이터 영역, 프로세스에서 open한 파일을 공유합니다.
여기서 데이터 영역은 동기화 기법이 필요합니다.
'운영체제' 카테고리의 다른 글
CPU 스케줄링 (0) | 2021.08.09 |
---|---|
쓰레드(2) (0) | 2021.08.08 |
프로세스 간 통신(IPC) (2) | 2021.08.08 |
프로세스의 이해 (0) | 2021.08.06 |
운영체제의 개념과 구조 (0) | 2021.08.06 |