본문 바로가기

728x90

Solution/면접

(14)
[개발자 면접] 참조의 지역성이란? 가상메모리란? Q. 메모리 계층 구조의 목적과 참조의 지역성에 대해 설명해보세요. cpu의 속도가 메모리의 속도를 다라가지 못해 계층적으로 구성했고, 캐시메모리를 사용한다. 참조의 지역성이란 코드나 데이터 등이 짧은시간내에 재사용되는 프로그램의 특성이다. 이를 통해 메모리 계층구조가 성공할 수 있었다. Q. 가상메모리에 대해서 설명해보세요. 메인 메모리의 크기가 한정되어 있어 물리적인 메모리크기보다 큰 프로세스를 시행시킬수 없어 가상메모리를 사용한다. 프로세스에서 사용하는 메모리 주소와 실제 물리적 메모리 주소는 다를 수 있다. 메모리 부족해서 가상메모리를 사용하는 것은 맞지만, 가상메모리를 쓴다해서 실제 메모리처럼 사용하는 것은 아니다. 실제 메모리 안의 공간이 부족하면 현재 사용하고 있지 않는 데이터를 빼내어 가상..
[개발자 면접] 교착상태란 무엇인지? 교착상태의 4가지 조건에 대해서 실제로 면접 2군데에서 물어본 질문임. Q. 교착 상태(데드락)에 대해서 설명하고 4가지 조건에 대해서 설명하세요. 교착 상태란 자원을 소유한 스레드 사이에서, 각 스레드가 다른 스레드가 소유한 자원을 요청하여 모든 스레드가 무한정 대기하는 현상을 말한다. 교착상태의 4가지 조건은 다음과 같다. 상호배제, 점유대기, 비선점, 순환대기 상호배제 : 프로세스들이 필요로 하는 자원에 대해 배타적 통제권을 요구함 점유대기 : 프로세스가 할당된 자원을 가진 상태에서 다른 자원 기다림 비선점 : 프로세스가 어떤 자원의 사용을 끝날 때까지 그 자원을 뺏을 수 없음 순환대기 : 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 갖고 있음 이 4가지 조건 중 하나라도 만족하지 않으면 교착상태는 발생하지 않는다. ..
[개발자 면접] 페이징과 세그먼테이션이란? Q. 메모리 관리 기법과 페이징, 세그먼테이션에 대해서 설명? 다중 프로그램 시스템에서 여러 프로세스를 수용하기 위해 주기억 장치를동적 분할하는 메모리 관리작업이 필요하여 페이징, 세그먼테이션 기법을 사용한다. 메모리관리 기법은 연속메모리 일경우와 불연속 메모리인지에 따라 다른 기법을 쓴다. 먼저 연속메모리인 경우 프로그램 전체가 하나의 큰 공간에 연속적으로 할당되어야 하며, 고정 분할기법과 동적 분할기법 2가지로 사용된다. 고정 분할기법은 주기억장치가 고정된 파티션으로 분할되어 내부 단편화가 발생한다. 동적 분할기법은 파티션들이 동적생성되어 자신의 크기와 같은 파티션에 적재 되어 외부 단편화가 발생한다. 두번째로 불연속 메모리 관리는 프로그램의 일부가 서로 다른 주소 공간에 할당 될 수 있는 관리 기법..
[개발자 면접] 선점형 스케줄링과 비선점 스케줄링의 차이 Q. 선점형 스케줄링과 비선점형 스케줄링의 차이 선점형 스케줄링이란 실행중인 프로세스나 스레드를 강제로 중단시키고 다른 프로세스를 실행시키는 것이다. 비선점형 스케줄링은 그렇지 않은 것이다. 현대 운영체제는 선점형 스케줄링을 사용한다. 비선점형 스케줄링은 컨텍스트 스위칭이 적어 오버헤드가 적다는 장점이 있지만 간단한 작업에서 오래 기다릴 수도 있는 문제가 잇다. 예시) FCFS : 큐에 도착한 순서대로 실행시키는 비선점 스케줄링 기법 RR : 일정시간 간격으로 번갈아 사용하는 선점 스케줄링 기법, 기아 현상이 없다. 컨텍스트 스위칭 오버헤드가 크다.
[개발자 면접] 프로세스와 스레드의 차이점 Q. 프로세스와 스레드의 차이점은? 프로세스는 메모리 상에서 실행중인 프로그램을 말하며, 스레드는 이 프로세스 안에서 실행되는 흐름 단위를 말한다. 프로세스는 최소 하나의 스레드를 보유하고 있으며, 각각 별도의 주소공간을 독립적으로 할당 받는다.(code, heap, stack) 스레드는 이중에 stack만 따로 할당받고 나머지 영역은 스레드끼리 서로 공유한다. # 요약 프로세스 : 자신만의 고유 공간과 자원을 할당받아 사용 스레드 : 다른 스레드와 공간과 자원을 공유하면서 사용 Q. 프로세스의 문제점은? - 프로세스 생성에 큰 오버헤드가 있다. ( 프로세스를 생성할때 많은 시간이 소요됨0 - 프로세스 컨텍스트 스위칭의 비효율성, 오버헤드가큼 - 프로세스 사이에 통신이 어렵다는점 (IPC사용해야함) Q...
[개발자 면접] 프로세스간 통신(IPC)이란? Q. IPC란 무엇이고 무엇이 있는가? 프로세스들이 주소공간이 완전히 분리되어 있어 두 프로세스 사이에서 코드를 제외한 메모리 공간이 공유되지 않아 프로세스가 다른 프로세스의 메모리 접근이 불가능합니다. 따라서 프로세스들이 서로 통신 할 수 있도록 운영체제 커널에서 IPC를 지원합니다. 대표적인 IPC는 공유메모리, 신호, 파이프 세가지 정도가 있습니다.
[개발자 면접] 사용자 모드와 커널 모드의 차이 Q. 사용자 주소 공간과 커널 주소공간에 대해서 분리하는 이유는? 운영체제는 컴퓨터 전체 메모리를 사용자 공간과 커널 공간으로 나누는데 사용자 공간은 응용프로그램이 탑재되고 사용되는 공간이며, 커널 공간은 디바이스 드라이버를 포함하여 커널 코드가 탑재된다. 커널 공간에 있는 코드와 데이터를 보호하기 위해 분리한다. # 커널 공간에 있는 코드와 데이터를 보호하기 위해 분리 Q. 사용자 모드, 커널 모드에 대해서 설명하면? 사용자모드 -> 응용프로그램 코드가 실행되고, 커널모드 -> 커널 코드가 실행된다. 둘을 나누어 데이터 접근에 어려운을 만드는 것. 응용프로그램에서 오류를 발생시키더라도 시스템을 중단시키는 수준은 발생하지 않게 막아줌. 모든 프로세스의 주소공간에서 사용자 공간은 분리되지만 커널 공간은 공..
[개발자 면접] RESTful이 무엇인지 요약 Q. RESTful이 무엇이며, 이것에 대해서 아는대로 설명해보세요. HTTP URI를 통해 자원을 표시하고 HTTP Method를 통해 자원에 대한 처리를 표현합니다. 사람이 읽을 수 있는 API라는 것이 특징입니다. HTTP를 사용하기 때문에 HTTP의 특성을 그대로 반영합니다. 또한 별도의 인프라 구축이 필요없습니다. 단점으로는 RESTful 한 것에 대한 명확한 표준이 존재하지 않는다는 점과 RESTful을 완전히 만족하는 API를 만들기는 매우 까다롭다는 점, 그리고 REST API가 분산환경에 적합하지 않다는 점이 있습니다. 모든 관련된 동작을 URI를 통해 알려주는 HAPEOAS로 동적인 API제공도 가능하다. 이를 클라이언트가 API의 변화에 일일이 대응하지 않아도 되는 장점을 갖는 방법도..

728x90