기술면접

기술면접 : 운영체제(1/2)

더덕2 2023. 4. 12. 13:14

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

프로세스는 컴퓨터에서 연속적으로 실행되고있는 하나의 프로그램이라고 하고

스레드는 프로세스 내에서 실행되는 여러 흐름의 단위 입니다. 프로세스는 운영체제로 부터 자원을 할당받고

스레드는 프로세스에서 자원을 할당받습니다.

 


2.컨텍스트 스위칭에 대해 설명해보세요.

컨텍스트 스위칭은 하나의 작업으로 실행되는게 아니라 여러작업을 번갈아가면서 실행하여 동시에

처리할 수 있도록 하는 방식입니다.

현재 프로세스 상태를 PCB에 저장하게되고 새로운 프로세스의 상태를 레지스터에 저장하는 방식입니다.

스위칭이 될 때 CPU는 아무일이 일어나지않기 때문에 잦은 사용은 성능저하를 일으킵니다.

스레드의 컨텍스트 스위칭은 프로세스의 컨텍스트 스위칭보다 빠릅니다.


3.동기와 비동기의 차이(블로킹, 넌블로킹) / 장단점에 대해 설명해보세요.

동기는 여러개의 기능이 실행될 때 하나의 기능만 실행되는것을 말하고

비동기는 여러개의 기능이 실행될 때 동시에 기능이 실행되는것을 말합니다.

동기의 장점으로는 하나의 기능이 실행이 끝나게 되면 다른기능이 실행되기 때문에 데이터 일관성을 보장할 수 있고

디버깅과 예외처리를 쉽게 할 수 있습니다.

단점은 여러개의 작업을 동시에 처리할 수 없기 때문에 시간이 오래걸리는 작업을 수행할 시 시스템 성능이 저하됩니다. 

비동기의 장점으로는 여러개의 작업을 동시에 처리하기 때문에 전체적인 성능이 상향됩니다.

단점은 데이터 일관성을 유지하기위한 코드가 추가되어야하기 때문에 코드가 복잡해지며 디버깅과 예외처리가 어렵습니다. 각각 장단점이 있기 때문에 상황에 맞게 적적한 방식을 선택해서 사용해야합니다.

 


4.멀티스레드 프로그래밍에 대해 설명해보세요.

멀티스레드는 한 프로세스 내에 여러개의 스레드를 만들어 동시에 처리하는 작업을 수행하는 프로그래밍 기법입니다.

장점으로는 

- 스레드가 여러개이기 때문에 여러작업을 동시에 처리할 수 있기에 성능이 좋아진다.

- 스레드들 사이에서 자원을 공유하여 효율적으로 자원을 관리 할 수 있다.

단점으로는

- 여러개의 스레드가 동시에 자원을 사용하기 때문에 동기화 문제가 있다. 데이터의 일관성을 보장하기 어려움.

- 여러개의 스레드가 동시에 같은 자원에 접근하게 되면 경합 상태 문제가 발생할 수 있다.

 

5.Thread-safe 하다는 의미와 설계하는 법을 설명해보세요.

 


6.프로세스 동기화에 대해 설명해보세요.

다중 프로세스 환경에서 데이터 일관성을 유지하기 위하여 자원등에 하나의 프로세스만 접근가능하도록 하는 것을 말합니다.

 


7.교착상태와 기아상태의 해결방법에 대해 설명해보세요.

하나의 자원에 서로 다른 프로세스가 자원의 반납을 대기하고 있는상태를 교착상태라고 합니다.

교착상태를 해결하기 위한 대표적인 방법은

1.예방:교착상태가 일어나는 조건중 하나를 미리 제거하여 방지하는 방법

2.회피:교착상태가 발생할 가능성을 파악하여 발생하지 않도록 자원할당을 제어하는 방법(교착상태가 발생한다면 자원할당 X)

3.탐지:교착상태가 발생하면 감지하여 해제하는방법 주기적으로 자원할당 그래프를 검사하여 상태가발생되면 해제하는방법

4.회복: 교착상태를 해제하는 방법 교착상태가 발생한 경우 자원을 선점하여 교착상태 해제

 

기아상태는 부족한 자원을 프로세스가 점유하기위해 경쟁할 때 특정 프로세스가 영원히 자원할당이 되지않는 경우를 말합니다.

해결방법은 Queue를 적용하여 오래기다린 프로세스를 우선순위를 높여줄 수 있습니다.