영원히 흘러가는 강

신입 웹개발자 기술면접(운영체제) 본문

기술면접

신입 웹개발자 기술면접(운영체제)

double_R_one_G 2020. 12. 9. 18:00
728x90

20/12/09

면접 관련 질문들 하나하나 답변 달아가며 다시 배워보는 기회가 될 것이다.


20/12/10 추가


운영체제

프로세스

  • 프로세스와 스레드의 차이는 무엇인가요?

       

        ㄴ> 간단히 정리한다면 이와 같다.

 

              프로세스: 운영체제로부터 자원을 할당받은 작업의 단위.


              스레드: 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위.

 

 

  • 교착상태란 무엇이며, 교착상태가 발생하기 위해서는 어떤 조건이 있어야 하나요?

         

         ㄴ> 교착상태란 상호 배제에 의해 나타나는 문제점으로 

 

               교착상태 발생 조건 -> 4가지 조건이 모두 충족 시에 발생

 

                1. 상호 배제 -> 한 자원에 대한 여러 프로세스 동시 접근 불가

 

                2. 점유와 대기 -> 자원을 가지고 있는 상태에서 다른 프로세스가 사용하고 있는 자원의 반납을                                                      기다리는 것.

 

                3. 비선점 -> 다른 프로세스의 자원을 강제로 가져올 수 없음.

 

                4. 환형 대기 -> 각 프로세스가 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있는 것

 

  • 교착상태의 해결법은 무엇인가요?

               

               ㄴ>  위의 조건이 다 충족해야 하므로 예방법은 네 가지 조건을 아예 발생치 않도록 예방

 

                        위를 비롯해 회피 기법(은행원 알고리즘), 회복(프로세스 중단, 자원 선점)

 

  • 뮤텍스와 세마포어에 대해서 설명해 보시오.

               

                 ㄴ> 세마포어(Semaphore) :공유된 자원의 데이터를 여러 프로세스가 접근하는 것을 막는 것                                                                         (lock 키 여러 가지)

 

                      뮤텍스(Mutex) : 공유된 자원의 데이터를 여러 스레드가 접근하는 것을 막는 것 (lock 키 하나)

 

  • 컨텍스트 스위칭이란 무엇인가요?

               

              ㄴ> 멀티 프로세서 환경에서 cpu가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 

                 

                     다음 우선순위 프로세스가 실행되어야 할 때 기존 프로세스의 상태 또는 레지스터의 값 저장하고, 

 

                     다음 프로세스를 실행하도록 새로운 프로세스의 상태 또는 레지스터의 값을 교체하는 작업

 

  • 경쟁 상태란 무엇인가요?

             

                ㄴ> 둘 이상의 조작이나 입력이 동시에 일어나 의도하지 않은 결과인 경우

 

                     프로세스 간의 하나의 자원을 갖기 위해 싸우는 것 => 하나의 자원을 동시에 요청

                     

  • 프로세스 혹은 스레드의 동기화란 무엇인가요?

               

            ㄴ> 동기화란 병렬적으로 수행되는 작업들에 대해 자원의 접근에 대한 순서 정하는 과정

 

                       일관성 보장

 

  • 사용자 수준의 스레드와 커널 수준의 스레드의 차이는 무엇인가요?

               

                     ㄴ> 사용자 수준의 스레드:

 

                            1. 스레드와 관련된 모든 행위를 사용자 영역에서 한다.

 

                            2. 스레드 라이브러리를 이용하여 작동하는 형태

 

                            3. 단일 프로세서에서 작동한다.

 

                            ※다수의 사용자 레벨 스레드가 커널 레벨 스레드 한 개에 매핑 => N:1 매핑           

 

                    커널 수준의 스레드:

 

                            1. 커널이 스레드와 관련된 모든 작업을 관리함.(커널에 종속적)

 

                            2. 멀티 스레드 프로세스 환경에서 동작한다.

 

                            ※ 커널이 각 스레드를 개별적으로 관리한다. => 1:1 매핑

                             

                      1. 사용자 스레드는 커널 위에서 지원되며 커널과는 관계없이 완전한 사용자 수준의 패키지를 가지고,                           커널 스레드는 os가 직접 지원하며 커널에 의해 내부적으로 필요한 경우에 생성&소멸될 수 있으며                           특정 함수를 수행할 책임이 있다.

 

                     2.  사용자 수준의 스레드는 고유의 사용자 스택, 레지스터 문맥, 기타 상태 정보를 보유하지만 커널 스                           레드는 자신의 커널 스택을 보유하고 커널의 텍스트, 전역 데이터를 공유한다.

 

 

                     + 혼합형 스레드 : 사용자 수준 스레드+커널 수준 스레드=> N:M 매핑

 

  • CPU 스케줄링이란 무엇인가요?

         

          ㄴ> 다수의 프로세스가 준비 상태일때 cpu가 어느 프로세스를 먼저 효율적으로 처리 할것인가를 

               결정하기 위한 사항

 

  • CPU 스케줄링 방법에는 대표적으로 어떤 것들이 있나요?

         

       ㄴ> 크게 두가지 선점, 비선점으로 나눌수 있다.

 

              선점 스케줄링 :

 

                    SRT(Shortest Remaining Time) : 짧은 시간 순서대로 프로젝트 수행

 

                    라운드 로빈(Round-Robin) : 시간 할당량 만큼만 실행후 완료되지 않으면 다음 프로세스에게

                                                         cpu 양보하고 준비상태 큐의 가장 뒤로 배치

 

                    다단계큐 : Ready큐를 여러 개 사용하는 기법. 

 

             비선점 스케줄링:

 

                      HRN(Hightst response ratio next) : 수행시간의 길이와 대기 시간을 모두 고려해 우선순위를 정한다.

                      SJF(Shortest job first) 큐 안에 있는 프로세스 중 수행시간이 짧은것을 먼저 수행

 

                      우선순위 : 프로세스에게 우선순위를 정적,동적으로 부여하여 우선순위 높은 순대로 처리

                                      동적일 경우 구현 복잡하고 오버헤드 많다는 단점

  

                      기한부 :   작업을 명시된 시간이나 기한 내에 완료하도록 계획

 

                       FIFO : Ready큐에 도착한 순서대로 cpu 할당

 

  • 동기와 비동기, 블로킹과 넌블로킹의 차이는 무엇인가요?

           

             ㄴ> 동기란 ?   요청과 결과가 동시에 일어난다는 뜻이며 함수 결과를 호출한 쪽에서 처리

 

                   비동기란  요청과 결과가 동시에 일어나지 않으며, 함수의 결과를 호출한쪽에서 처리하지 않는다.

 

                   블로킹: 기본적인  I/O 모델로, 리눅스에서 모든 소켓 통신은 기본 블로킹으로 동작

                                          I/O 작업 진행되는 동안 자신의 작업을 중단한 채 대기(자원 낭비)

 

                   논블로킹: I/O 작업 진행동안 프로세스 작업 중단하지 않음

                                데이터가 입력에 상관없이 결과 반환 

                                반복적 시스템 호출 발생하기 때문에 이 경우 역시 자원 낭비

메모리

 

  • 프로세스에 할당되는 메모리의 각 영역에 대해서 설명해 주세요.

       

         ㄴ> 크게 5대 영역으로 나누어진다.

 

               컴파일시에 메모리가 정해지는 CODE, DATA, BSS(Blocked Stated Symbol) 

 

               실행중에 메모리 할당되는 Heap , stack

 

                Code 영역:  실행 파일을 구성하는 명령어들이 적재되는 메모리 영역 (함수,제어문,상수)

 

                Data 영역& BSS : 전역변수와 static 변수 지정되는 영역 초기화 안된 전역변수 BSS 나머지 DATA

 

                Heap 영역: 동적으로 메모리 할당

 

                stack 영역 : 지역변수 할당되는 영역 ,함수 호출시 변수 할당 ,함수 종료시 반납 

 

  • 메모리 구조의 순서가 어떻게 되는가? CPU에서 가까운 순으로 말해보시오.

       

          ㄴ> 레지스터 -> cpu캐시 -> 메인 메모리 -> 보조 기억장치 -> 외부 기억장치 순

 

               cpu에 가까울수록 데이터 접근 빠르고 멀수록 저장 용량 높음

 

  • 페이징과 세그멘테이션에 대해서 설명해 보시오.

       

        ㄴ> 페이징: 고정된 영역인 페이지로 분할 (내부 단편화)

 

              세그멘테이션 : 가변적인 영역인 세그먼트로 분할 (외부 단편화)

 

  • 외부 단편화란? 내부 단편화란?

       

       ㄴ> 내부 단편화 : 메모리 할당시 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 

                                사용하는 메모리 공간이 낭비 되는 현상

 

             외부 단편화 : 메모리가 할당 및 해제 작업의 반복으로 작은 메모리가 중간중간 존재 

                               중간중간 빈 메모리를 다 합치면 매우 크지만 실제로는 할당x

 

  • First Fit, Best Fit, Worst Fit에 대해서 설명해 보시오.

      

       ㄴ> 빈 저장공간이 있다고 할때

 

             first fit은 빈 저장공간중 맨처음에 할당

 

             best fit은 메모리 크기에 가장 잘 맞게 할당

 

            worst fit 은 빈 저장공간에 비해 할당하고도 크게 남은 저장 공간 

 

  • 페이지 교체 알고리즘 종류에는 어떤 것들이 있나요?

       

       ㄴ> FIFO ,최적페이지 교체 ,LRU(Least Recently Used) ,LFU(Last Frequently Used), NUR

 

             FIFO는 말 그대로 먼저 들어온 페이지를 제거하는 기법

 

             최적 페이지 교체 : 앞으로 가장 오랫동안 사용되지 않을 페이지 교체 (구현 불가능 알고리즘)

 

             LRU :최근에 가장 오랫동안 사용하지 않은 페이지 교체하는 기법

 

             LFU : 사용 빈도가 가장 적은 페이지 교체 

 

             NUR : LRU 와 비슷한 방식 (참조비트/변형비트 사용)

 

 

 

 

참고자료 :velog.io/@hygoogi/기술-면접-질문-모음

728x90
Comments