상세 컨텐츠

본문 제목

76일차 TIL( 기술 면접 / cs - study / st - Component나누기)

TILs

by API284 2023. 9. 12. 17:30

본문

프로세스와 쓰레드

 

  • 질문 : 프로세스만으로 작업을 처리할 때 발생하는 문제점에 대해 설명해 주세요.
    • 답변 : 프로세스 자체를 생성하는데 많은 시간이 소요되며 프로세스 컨텍스트 스위칭의 비효율성과 오버헤드가 크다, 프로세스 간 통신이 어렵다. 비용이 비싼 IPC를 사용해서 통신한다
    • 꼬리질문 : 쓰레드에 대해 설명해 주세요.
      • 답변 : 여러 쓰레드와 공간과 자원을 공유하며 사용한다, 프로세스 안에서 작업을 처리하는 주체이며, 자원 중에서 stack만 따로 할당 받고 나머지 영역은 쓰레드끼리 공유한다.
      • 꼬리질문 : 마지막으로 프로스세와 쓰레드의 차이점을 설명해 주세요.
        • 답변 : 각 독립된 메모리의 영역을 할당해 주기 때문에 프로세스는 다른 프로세스의 변수나 자료에 접근할 수 없다. 이와는 달리 스레드는 메모리를 서로 공유할 수 있다.

프로세스와 쓰레드의 주소공간

 

  • 질문 : 프로세스의 특징에 5가지에 대해 설명해 주세요 !
  • 답변 : 각각의 독립된 메모리 영역을 할당 받으며, 프로그래머가 작성한 프로그램이 저장되는 영역인 코드영역, 코드가 실행되며 사용한 환경이나 파일들의 각종 데이터들이 모여있는 데이터 영역, 호출한 함수가 종료되면 되돋아올 메모리의 주소나 지역 변수등이 저장되는 스택영역, 동적으로 할당되는 데이터를 위해 존재하는 힌 영역이 존재한다. 최소 1개 이상의 메인 스레드를 가지고 있으며 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간 IPC를 사용해야 한다
  • 꼬리질문 : 그렇다면 스레드의 사전적 정의에 대해 설명해 주세요 !
  • 답변 : 프로세스 내에서 실행되는 여러 흐름의 단위, 프로세스의 특정한 수행 경로, 할당받은 자원을 이용하는 최소 실행 단위
    • 꼬리질문 : 마지막으로 스레드의 특징에 대해 설명해 주세요 !
    • 답변 : 프로세스 내에서 각 필요한 STACK만 할당받고 CODE DATA HEAP 영역은 공유해서 각 스레드가 공유한다 프로세스 하나만을 사용해서 프로그램을 실행하기에는 메모리의 낭비가 발생한다.

중요 키워드를 선정하고, 이것을 정리하는 질문, 꼬리질문 2가지, 답변을 정리해주세요.

 

  • 질문 : 멀티 프로세스, 멀티 쓰레드의 정의을 설명하세요.
    • 답변 : 하나의 운영체제 안에서 여러 프로세스가 실행되는 것 / 하나의 프로세스가 여러 작업으 여러 쓰레드를 사용하여 동시에 처리하는 것
    • 꼬리질문 : 멀티 프로세스, 멀티 쓰레드의 특징을 설명하세요.
      • 답변 : 하나의 프로세스가 죽어도 다른 프로세스에는 영향을 끼치지 않으며 각 독립된 메모리 영역을 갖고 있어 작업량이 많을수록 오버헤드가 발생하고 문맥교한으로 인한 성능 저하를 유발한다, / 시스템 자원 고모 감소, 시스템 처리량 감소
      • 꼬리질문 :멀티 프로세스, 멀티 쓰레드의 장,단점 위주로 차이점을 설명하세요.
        • 답변 : 하나의 프로세스가 죽어도 다른 프로세스에는 영향을 끼치지 않으며 각 독립된 메모리 영역을 갖고 있어 작업량이 많을수록 오버헤드가 발생하고 문맥교한으로 인한 성능 저하를 유발한다, 특히 프로세스 간 통신이 복잡한 IPC를 사용한다. 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리 가능하다, 데이터를 주고 받는 것이 간단해진다. 문맥 교환이 빠르며 스시템 처리량이 중가 하지만 프로그램 디버깅이 까다롭다, 하나의 쓰레드가 이상이 생기면 전체 프로세스에 영향을 끼치며 동기화 문제도 발생한다. 단일 시스템에서 효과를 기대하기 어렵다. 다른 프로세스에서 쓰레드 제어가 불가능하다.

쓰레드 풀이란?
질문 : 쓰레드 풀? 은 무엇이며, 사용하는 이유는 무엇인가요?

  • 답변 : PC 프로그램에서 실행의 동시성을 달성하기 위한 소프트웨어의 디자인 패턴 !
  • 프로그램 성능 저하를 방지하고 다수의 사용자 요청을 처리하기 위해서
  • 꼬리질문 : 네 답변 감사합니다. 그렇다면 쓰레드 풀의 장단점은 무엇인가요?
    • 답변 : 쓰레드를 신규 생성 / 수거 하는데 비용이 들지 않는다
    • 생성시 OS가 메모리 공간을 확보해 주고 메모리를 쓰레드에게 할당해준다.
    • 미리 만들어 두기에 처음 생성하는 비용은 들지만 이전의 쓰레드를 재사용할 수 있으므로 시스템 자원을 줄일 수 있고 작업 요청 시 이미 쓰레드가 대기 상태이기 때문에 작업을 실행하는데 딜레이가 거의 발생하지 않는다.
    • 꼬리질문 : 좋습니다. 간단하게 동시성(Concurrency)과 병렬성(Parallelism)에 대하여 설명 해주세요.병렬성은 멀티 코어에서 멀티 스레드를 동작 시키는 방식으로 한 개 이상의 스레드를 포함하는 각 코어들이 동시에 실행되는 성질 !
    • 답변 : 동시성은 싱글코어 → 멀티 스레드를 동작시키기 위한 방식으로 멀티 태스킹을 위해 여러 개의 스레드가 번갈아가면서 실행되는 성질, 번갈아 가며 조금씩 실행된다
  • CS study 0912
  1. TCP/UDP에 대해서 설명해주세요.
    • 답변
      • 김우리신뢰성 : tcp - 데이터의 신뢰성을 보장하기 위해 재전송, 에러 검출/수정 매커니즘을 사용한다. 따라서 데이터 손실이나 손상을 최소화한다.헤더 오버헤드 :udp - 헤더가 간단하고 가벼워서 tcp보다 작은 오버헤드가 존재.
      • tcp는 연결을 설정하여 신뢰성 있는 데이터 전송을 보장하는 반면, udp를 빠른 전송을 중시하며 데이터의 신뢰성을 포기한다.
      • tcp - 더많은 오버헤드가 존재. 연결 설정 및 관리를 위한 정보를 포함하는 헤더가 크다.
      • udp - 데이터를 보내면 이에 대한 확인이나 재전송을 하지 않는다. 이에 따라 신속한 전솔이 중요한 경우에 사용되며, 손실이나 에러 등 보정을 제공하지는 않는다.
      • 이 둘은 PC 네트워크에서 데이터를 전송하기 위한 규칙(프로토콜)이다. 연결 지향성 vs 비연결 지향성 tcp - 연결지향성 프로토콜이며 데이터를 보내기 전 두 pc간 연결을 설정하고, 데이터 전송 후 연결을 해제, 이런 방식으로 인해 안전하게 전송 및 순서대로 도착할 수 있다. udp - 비연결 지향성 프로토콜이며 연결 설정과 해제 단계가 없으며 데이터를 그냥 보낸다 이는 데이터 송신이 빠르지만 이로인한 손실이나 순서 바뀜이 발생할 수 있다.

관련글 더보기