개발자면접질문 110

개발자 면접 질문 - 페이지 폴트(Page Fault) 정의

1. 페이지 폴트 (Page Fault) - 프로그램이 자신의 주소 공간(가상 메모리 공간)에는 존재하지만 시스템의 RAM에는 현재 없는 데이터나 코드에 접근을 시도했을 때 발생하는 현상 - 페이지 폴트가 발생하면 운영체제는 그 데이터를 메모리로 가져와서 마치 페이지 폴트가 전혀 발생하지 않은 것 처럼 프로그램이 계속적으로 동작하게 해준다.

개발자 면접 질문 - 페이지 교체 알고리즘

1. FIFO (First In First Out) - 페이지가 주기억장치에 적재된 시간을 기준으로 교체될 페이지를 선정하는 기법 - 단점 : 중요한 페이지가 오랫동안 있었다는 이유만으로 교체되는 불합리 2. LFU (Least Frequently Used) - 주기억장치에 적재되어 있는 페이지들이 참조된 횟수를 기준으로 교체할 페이지를 선정하는 기법 - 단점 : 참조될 가능성이 많아도 횟수에 의한 방법이므로 최근에 사용된 프로그램을 교체 시킬 가능성이 있다. 3. LRU(Least Recently Used) - 최근에 가장 오랫동안 참조되지 않은 페이지를 교체하는 기법 - 단점 : 프로세스가 주기억장치에 접근할 때마다 참조된 페이지에 대한 시간을 기록해야함

개발자 면접 질문 - 멀티 프로세스와 멀티 쓰레드 차이

1. 멀티 프로세스 - 하나의 응용 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하는 것 - 여러 개의 자식 프로세스 중 하나에 문제가 발생하면 그 자식 프로세스만 죽어 다른 영향이 확산되지 않음 2. 멀티 쓰레드 - 하나의 응용 프로그램을 여러 개의 쓰레드로 구성하고 각 쓰레드가 하나의 작업을 처리하는 것 - 시스템 자원 소모 감소 - 시스템 처리량 증가 - 다른 프로세스에서 쓰레드를 제어할 수 없다. * 멀티 프로세스 대신 멀티 쓰레드를 사용하는 이유 - 자원의 효율성 증대 : 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어서 자원 관리가 효율적 - 처리 비용 감소 및 응답 시간 단축 : 프로세스 간의 통신 보다 쓰레드 간의 통신 비용이 적다.

개발자 면접 질문 - 프로세스와 쓰레드의 차이

1. 프로세스 - OS가 메모리 등의 자원을 할당해 준 실행중인 프로그램 - 프로세스는 메모리 영역을 공유하지 않고 각각 독립적으로 사용 2. 쓰레드 - 프로세스 내에서 프로세스의 자원을 갖고 실제로 일하는 일꾼 - 프로세스 내에서 실행되는 여러 흐름의 단위 - 스택 영역은 독립적으로 사용하며 메서드 영역, 힙 영역은 공유한다.

개발자 면접 질문 - 트랜잭션 병행 처리시 문제점

1. 트랜잭션 병행 처리시 문제점 - 갱신 내용 손실 : 동시에 하나의 데이터가 갱신될 때 하나의 갱신이 누락되는 경우 - 현황 파악 오류 : 하나의 데이터 갱신이 끝나지 않은 시점에서 다른 트랜잭션이 해당 데이터를 조회하는 경우 - 모순성 : 두 트랜잭션이 동시에 실행될 때 데이터베이스가 일관성이 없는 모순된 상태로 남는 문제 - 연쇄 복귀 : 두 트랜잭션이 하나의 레코드를 갱신할 때 하나의 트랜잭션이 롤백하면 다른 하나의 트랜잭션도 롤백되는 문제 2. 병행 처리 문제 방지 방법 - 로킹 제어 기법을 사용한다. (Locking) - 어떤 트랜잭션이 특정 DB의 데이터를 사용할 때 DB의 일정 부분을 Lock 시키고 트랜잭션이 완료될때 해당 부분을 Unlock 시키는 방법 3. 로킹 단위를 크게했을 때와..