프로세스와 쓰레드에 대해서.

2022. 11. 10. 13:07면접준비

 UIKit 클래스들을 다룰 때 꼭 처리해야하는 애플리케이션 쓰레드 이름은 무엇인가?
 - main 스레드
 
 쓰레드와 프로세스 차이
 - 프로그램에 한개의 프로세스고 프로세스의 일을 쓰레드를 나누어서 진행한다.
 - 쓰레드끼리는 데이터, 코드, 힙 영역의 내용을 공유한다. (스택내용은 공유안함)
 - 프로세스끼리는 공유하지 않는다.

 

 

프로세스와 쓰레드의 차이 를 설명해주세요.

 

의도: 잘못된 프로세스, 스레드의 사용은 심각한 오류를 발생할 수 있다.

또한 디버깅이나 오류 해결의 어려움이 크다.

프로세스, 쓰레드 정의에 대해서 정확히 알고 있는지 확인해야 한다. 잘못 알고 있는 부분이 없는지 확인해야 한다.

 

 

프로세스와 쓰레드의 차이를 설명해 보세요

프로세스는 운영체제로 부터 자원을 할당받는 작업의 단위이다.

스레드는 할당 받은 자원을 이용하는 실행의 단위이고 프로세스 내에 여러개 생길 수 있다.

어플리케이션 하나가 프로세스이고, 그 안에서의 분기 처리가 스레드가 되는 셈이다.

 

ex: 하나의 프로세스안에 여러개의 스레드가 움직여 동작한다?

 

멀티 프로세스 & 멀티 쓰레드

 

multi process는 하나의 프로그램을 여러개의 프로세스로 구성하여  각 프로세스가 하나의 작업(task)를 처리한다.

멀티 프로세스

장점 - 하나의 프로세스가 잘못 되어도 프로그램은 동작한다.

단점 - context switching 비용 발생

 

Multi thread 는 프로그램을 여러개의 쓰레드로 구성하고 각 쓰레드가 작업(task)를 처리하는 것

멀티 쓰레드

-장점: 시스템 자원 소모 감소, 처리 비용 감소(실행 속도 향상), 쓰레드간 자원 공유(stack을 제외한 영역)

-단점: 디버깅 어려움, 동기화 이슈 발생, 하나의 쓰레드의 오류로 전체 프로세스에 문제 발생

 

thread Safe란?

thread Safe란 것은 여러 thread가 동시에 사용 되어도 안전 하단 것을 뜻한다.

특정 함수 a와 변수 aa가 여러 스레드에서 호출되어도 하나의 스레드에서 호출했을 때와 같은 결과가 보장 되어야 한다는 의미

함수가 전역 변수를 참조하게 된다면 그 함수는 thread safe 하지 않은 결과가 나올 수 있다.

 

( thread Safe 하지 않는 조건을 만드는 방법의 예를 들어보라고 한다던가, thread Safe 하지 않은 환경을

thread Safe 하게 변경하는 방법등을 물어볼 수 있다.)

프로세스와 다르게 쓰레드간에 자원을 공유하고 있고 없고 이 때 무엇을 조심해야 하는지를 묻는 질문이다.

 

context switching 이란?

CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는데 이 과정을 context switching 이라고 한다.

동작중인 프로세스가 대기를 하면서 해당 프로세스의 상태(Context)를 보관하고 대기 하고 있다가 다시 실행시 복구하는 비용(시간)을 말한다.

 

프로세스와 쓰레드에 대한 간단한 질문으로 비동기 프로그래밍을 하는지 비동기 프로그래밍이 무엇인지를 연속적으로 물어볼 있을 것이다.