[면접공부하기]

suye 22·2023년 2월 24일

기술면접 준비하기

목록 보기
3/16

Parameter와 Argument의 차이에 대해 설명해주세요.
프로세스와 스레드의 차이에 대해 설명해 주세요

Parameter와 Argument 차이점?

  • 프로그램이란, 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태를 말한다.

Parameter

  • parameter란 매개변수 라고 부르며 함수를 정의할 때(선언할 때) 사용한다.
  • 기본형 매개변수와 참조형 매개변수가 있다.
    기본형 매개변수 - 변수의 값을 읽기만 할 수 있다.
    참조형 매개변수 - 값이 저장된 곳의 주소를 알 수 있기 때문에 변수의 값을 읽고 변경할 수 있다.
int sum(int a, int b){
return a+b;
}

int a와 int b를 매개변수라고 한다.

Argument

  • argument란 전달인자 라고 부르며, 함수가 호출되었을 때 함수의 파라미터로 전달된 실제 값을 말한다.
result = sum(1,2)

1,2를 argument라고 한다

프로세스와 스레드의 차이점?

프로세스란 메모리 상에서 실행중인 프로그램을 말하며,
스레드는 실행중인 프로그램 안에서 독립적으로 실행되는 각각의 작업 단위를 말한다.

프로세스실행?
카카오를 샐행하는 것, 워드를 실행하는 것 등

스레드?
인텔리제이에서 테스트를 돌리면 스레드가 하나 만들어지고, 또 테스트를 돌리면서 코드를 수정하면 코드를 수정하는 스레드가 생겨나는 것

프로세스의 메모리구조(프로세스 하나당 하나씩 존재)

  • 프로세스는 각각 독립된 메모리영역을 할당 받는다.
  • Code - 프로그램을 실행시키는 실행 파일 내의 명령어들이 올라간다.
  • Data - 코드에서 선언한 전역변수와 정적변수가 저장되는 영역이다.
  • Heap - 관리가 가능한 데이터 이외의 다른 형태의 데이터를 관리하기 위한 자유 공간이다.
  • Stack - 함수 안에서 선언된 지역변수와, 매개변수, 리턴값 등이 저장된다. 함수 호출시 기록되고 종료되면 제거된다

스레드는 프로세스 내에서 각각 Stack만 따로 할당받고 Code, Data, Heap영역은 공유한다.

각 프로세스는 독립적이다. 다른 프로세스와 작업을 공유하지 않는다. 하지만 스레드는 하나의 프로세스가 처리해야 하는 일을 메모리를 공유하면서 나눠서 할 수 있다. 만약 한 프로세스를 실행하다가 오류가 발생해서 프로세스가 강제로 종료 된다면, 공유하고 있는 파일을 손상 시키는 경우가 아니라면 아무런 영향을 주지 않는다. 하지만 스레드의 경우는 Code,Data,Heap 메모리영역의 내용을 공유하기때문에 어떤 스레드가 하나에서 오류가 발생한다면 같은 프로세스 내의 다른 스레드 모두가 강제로 종료된다!

멀티프로세스

  • 하나의 프로그램을 여러개 실행하는 것을 멀티 프로세스라고 한다.

멀티스레드

  • 하나의 응용프로그램을 여러 개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것이다.
  • 하지만 멀티 스레드(multi thread)란 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 의미한다.

Context Switching? 문맥교환

  • CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는 과정을 말한다.
  • 동작중인 프로세스가 대기를 하면서 해당 프로세스의 상태를 보관하고 대기 하고 있다가 다시 실행 시 복구하는 비용(시간)을 말한다.

참조
https://velog.io/@raejoonee/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9D%98-%EC%B0%A8%EC%9D%B4
https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
https://jungkeung.tistory.com/69

0개의 댓글