[ 면접 ] 프로세스와 스레드의 차이를 설명해보세요.

신범철·2022년 9월 30일
0

면접스터디

목록 보기
4/5

Q : 프로세스란?

A : 정적 데이터묶음인 프로그램이 메모리에 올라온 동적인 상태를 프로세스라고 합니다. 그와 동시에 PCB를 생성합니다.


Q : 스레드란?

A : 프로세스 내에서 실행하는 단위입니다. 좀 더 자세히 말하면 CPU 스케줄러가 CPU에 전달하는 일 한 개가 스레드입니다.


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

A : 우선 프로세스는 우리가 사용하는 프로그램이 운영체제의 의해 메모리에 올라가고 PCB를 생성한 동적인 상태를 말합니다. 그 안에서 스레드가 CPU 스케줄링에 따라 프로세스에 자원을 공유하며 코드를 실행합니다. 스레드는 프로세스의 코드/데이터/힙 영역을 공유하여 사용하여 프로세스를 여러개 사용하는 것보다 스레드를 사용하는 것이 더 효율적입니다. 하지만 자원을 공유한다는 것은 병목현상을 발생 시킬수 있기 때문에 락을 통한 동기화 작업을 신경써야 합니다.


Q : 멀터프로세싱과 멀티스레딩에 대해 설명해주세요.

A : 멀티프로세싱은 1개 이상의 프로세스가 동시적으로 실행가능하다는 것을 의미합니다. 멀티스레딩은 하나의 프로세스 안에 여러 개의 스레드가 동시적으로 실행가능하다는 것을 의미합니다.
멀티프로세싱은 프로세스가 독립적으로 동작하기 때문에 시스템의 안정성이 높습니다. 멀티스레딩은 코드/데이터/힙 영역을 공유하기 때문에 자원을 효율적으로 사용가능합니다. 작업의 독립적인 상황을 보장해야한다면 멀티프로세싱, 그렇지 않다면 멀티스레딩이 좋다.


Q : Context switching에 대해 설명해주세요.

A : 문맥교환이란 하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태를 보관하고 새로운 프로세스의 상태를 적재하는 작업을 말합니다. 문맥교환은 CPU 스케줄링에서 발생하는데 dispatch, timeout, I/O System call과 같은 인터럽트가 발생하면 사용자 모드에서 커널 모드로 전환 후 현재 실행중인 PCB를 저장합니다. 그리고 PCB에 있는 다음 실행 프로세스의 상태 정보를 복구한 뒤 사용자모드로 전환합니다.


Q : 말씀하신 프로세스 메모리 구조의 스택, 힙, 데이터, 코드영역에는 각 어떤 요소들이 저장되나요?

A : 스택에는 함수 호출과 로컬 변수가 저장됩니다. 힙에는 코드에서 동적으로 생성되는 데이터가 저장됩니다. 데이터에는 전역 변수가 저장됩니다. 코드영역에는 컴파일된 소스코드가 저장됩니다.


Q : 자바에서 메모리 구조는 어떻게 되나요?

A : 자바의 메모리 구조는 메소드 영역, 힙 영역, 스택 영역으로 나눌 수 있습니다. 메소드 영역에는 Class 정보, 전역변수 정보, Static 변수 정보가 저장됩니다. 그리고 힙 영역에는 모든 인스턴스 변수가 저장됩니다. new 키워드로 생성된 객체를 생각하시면 됩니다. 스택영역에는 지역 변수와 매개 변수를 스택 영역에 저장합니다.

참고문헌

내 깃헙

면접 질문 모음집

Today-I-Learn

profile
https://github.com/beombu

0개의 댓글