-
Question : OS : ProcessComputer Science/OS 2021. 4. 6. 16:49728x90
Process와 Thread의 차이점은 무엇인가요?
1.
프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이고, 스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위이다.
2.
프로그램이라고 하는 실행 파일이 있을 때, 이는 메모리에 올라가지 않은 정적인 상태이다.
이를 실행하는 순간, 해당 파일은 메모리에 올라가 동적인 상태가 된다.
이러한 상태의 프로그램을 프로세스라고 하고, 이 후 여러 프로세스를 동작시키는 데에서 발생되는 데이터 공유, 안정성 등의 문제를 해결하기 위해 더욱 작은 단위가 필요하였고, 그래서 탄생한 개념이 스레드이다.
스레드는 프로세스와 다르게 스레드 간 data, code, heap 영역을 공유하기 때문에 프로세스 개념에서의 데이터 공유에서 발생되는 문제점을 해결할 수 있다.
하지만, 스레드들은 일정 영역을 공유하기 때문에, 동기화 측면에 대해 고려해야 한다는 주의사항이 필요로 하다.
교착상태와 발생 조건에 대해 설명하세요
1.
교착상태란, 두 개 이상의 작업이 서로 상대방의 작업이 끝나기를 무한히 기다리며, 결국 아무것도 완료하지 못하는 상태를 말한다.
2.
상호배제에 의해 나타나는 문제점이다.
상호배제는, 공유 불가능한 자원에 대한 동시 사용을 피하기 위해 사용되는 알고리즘이다.
3.
발생 조건은 4가지로, [상호 배제, 점유와 대기, 비선점, 순환대기]가 있다.
상호배제는, 공유 불가능한 자원에 대한 동시 사용을 막는 것이고,
점유와 대기는, 자원을 가지고 있는 프로세스에 대해 자원을 반납하기를 기다리는 것이고,
비선점은, 자원을 가지고 있는 프로세스의 자원을 강제로 가져올 수 없음을 말하는 것이고,
순환대기는, 각 프로세스가 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있는 것이다.
4.
교착상태를 해결하는 방법은 4가지로, [예방, 회피, 탐지, 복구]가 있는데,
예방과 회피는 적용 시, 교착상태가 발생했는지를 끊임없이 check하는 등 자원을 효율적으로 사용하지 못하기 때문에,
탐지와 복구를 주로 사용한다.
뮤텍스와 세마포어란 무엇인가요?
1.
뮤텍스는 오직 1개의 스레드만 공유 자원에 접근 가능하고, 세마포어는 세마포어 변수만큼의 스레드가 공유 자원에 접근 가능하다.
2.
뮤텍스는 locking 매커니즘으로 lock을 건 스레드만 lock을 해제할 수 있고, 세마포어는 signaling 매커니즘으로 lock을 걸지 않은 스레드도 signal을 통해 lock을 해제할 수 있다.
context switching의 의미와 이유를 설명하세요
1.
컴퓨터가 한 번에 하나의 task(=process, thread)만 수행한다면 매우 비효율적일 것이다.
때문에 multi-tasking 개념이 등장했고, CPU는 복수 개의 task를 번갈아가며 수행한다.
이 때 현재 상태의 task의 정보를 저장하고, 다음 task의 상태를 불러오는 등의 과정이 필요한데 이를 context switching이라고 한다.
2.
context switching 시 대부분의 정보는 register에 저장되고 PCB(TCB) 형태로 관리된다.
경쟁상태와 임계영역은 무엇인지 설명하세요
1.
경쟁상태란, 여러 프로세스가 공유 자원에 동시에 접근할 때, 프로세스의 실행 순서에 따라 결과가 달라지는 것을 말한다.
예를 들어, 은행 계좌에 10,000원이 있고, 프로세스A는 20,000원 인출을, 프로세스B는 10,000원 입금을 실행한다고 했을 때,
프로세스A, B의 실행 순서에 따라 결과적으로 계좌의 잔액이 달라지는 상황이 발생한다.
2.
임계영역이란, 여러 프로세스가 동시에 접근하면 안되는 공유 자원의 특정 영역을 말한다.
임계영역은 어느 한 프로세스에 의해 독점될 수 없다.
임계영역에는 하나의 프로세스 또는 허용된 개수의 프로세스만 접근이 가능하고, 이를 뮤텍스 또는 세마포어를 통해 통제할 수 있다.
Multi-Thread에 대해 설명하세요
0.
Multi-Thread Programming의 가장 큰 목적과 등장 이유는, 컴퓨터의 놀고 있는 자원들을 최대한 활용하기 위함이다.
I/O를 기다리게 하지 않고, 다른 작업을 수행하거나, 놀고 있는 여분의 CPU 코어들을 최대한 활용하기 위함이다.
1.
하나의 process를 다수의 실행 단위로 구분하여, 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것을 말한다.
2.
multi-thread의 구조를 가지는 프로그램의 경우, 해당 PC가 multi-core일 때 thread : core = 1 : 1로 할당되어 '병렬처리'가 가능하다.
single-thread의 구조를 가지는 프로그램의 경우, 해당 PC가 multi-core여도 1개의 core만 사용하여 처리한다.
3.
process의 경우 IPC라는 상대적으로 무거운 비용의 통신 기법을 사용하는 데에 반면, thread는 code, data, heap 영역을 공유하기 때문에 상대적으로 비용이 가볍다. 대신 동기화 작업이 필요하다.
Concurrency와 Parallelism에 대해 설명해주세요
1.
Concurrency : 병행성
Parallelism : 병렬성
2.
Concurrency는 '프로그램'의 성질이고, Parallelism은 '기계'의 성질이다.
3.
Concurrency는 동시에 실행되는 것처럼 보이게 하는 것이다.
Logical Level에 속하는 개념이다.
Single-Core의 경우, 시분할 기법을 통해 사용자로 하여금 동시에 실행되는 것처럼 보인다.
Multi-Core의 경우, 물리적으로 동시에 실행된다.
4.
Parralelism은 실제로 동시에 실행되는 것이다.
Physical Level에 속하는 개념이다.
Single-Core에서는 불가능하고, 오직 Multi-Core에서만 가능하다.
728x90'Computer Science > OS' 카테고리의 다른 글
Question : OS : Kernel (0) 2021.04.11 Question : OS : Memory (0) 2021.04.06 CS : OS : Memory (0) 2021.03.25 CS : OS : Kernel (0) 2021.03.25 CS : OS : Process (0) 2021.03.25