Search
⛩️

기술 면접 - 운영체제

태그
기술 면접

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

프로세스는 실행중인 프로그램을 말합니다.
한 프로세스 안에는 여러개의 스레드가 생성될 수 있는데요
프로세스를 자원과 제어로 구분할 수 있는데 스레드는 실행 제어만 분리한것을 말합니다.
프로세스는의 코드/데이터/힙 영역을 스레드끼리 공유하기 때문에 더 효율적으로 통신할 수 있습니다.
또한 컨텍스트 스위칭도 캐시 메모리를 비우지 않아도 되는 스레드쪽이 빠릅니다.
하지만 스레드는 자원공유로 인해 문제가 발생할 수 있으니 이를 염두해 둔 프로그래밍을 해야합니다.

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

여러 작업을 번갈아가며 실행해서 동시에 처리될 수 있도록하는 방법입니다.
인터럽트가 발생하면 현재 프로세스 상태를 PCB에 저장하고 새로운 프로세스의 상태를 레지스터에 저장하는 방식으로 동작합니다.

3. 동기와 비동기의 차이/ 장단점에 대해 설명해보세요

동기은 요청과 결과가 동시에 일어나는 방식입니다.
요청을하면 시간이 얼마나 걸리던지 그 자리에서 결과를 받습니다.
설계가 매우 간단하고 직관적이지만 결과가 주어질때까지 대기를 하고있어야한다는 단점이 있습니다.
비동기는 요청과 결과가 동시에 일어나지 않는 방식입니다.
요청을 하면 시간이 얼마나 걸리던지 다른 작업을 할 수 있습니다.
결과가 올때까지 다른 작업을 할 수 있다는 장점이 있지만 설계가 동기보다는 복잡합니다.

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

하나의 프로세스에 여러개의 스레드가 만들어 자원의 생성과 관리를 하는 것이 멀티스레드 프로그래밍입니다.
멀티 프로세스에 비해 메모리 자원소모가 줄어들며 컨텍스트 스위칭이 빠릅니다.
하지만 힙 영역에 있는 자원을 사용할 때는 동기화를 해야합니다.
동기화를 위해 락을 과도하게 사용하면 성능이 저하될 수 있습니다.
또한 하나의 스레드가 비정상적으로 동작하면 다른 스레드도 종료될 수 있습니다.

5. Thread-safe 하다는 의미와 설계하는 법은

두 개 이상의 스레드가 같은 객체에 동시에 접근해도 연산결과의 정합성이 보장될 수 있도록 메모리 가시성이 확보된 상태를 의미합니다.
java.util.concurrent 패키지의 하위 클래스를 사용
인스턴스 변수를 두지 않음(stack 영역에 존재하는 인스턴스 변수)
동기화 블럭에서 연산을 수행

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

프로세스 스레드 간 공유자원에 대한 일치한 정보를 갖는것

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

8. 세마포어와 뮤텍스의 차이에 대해 설명해보세요

9. 가상 메모리에 대해 설명해보세요

10. 캐시의 지역성에 대해 설명해보세요

11. 프로세스 관련 용어