기술 면접 준비 4

Jiwontwopunch·2022년 1월 8일
0

스터디

목록 보기
5/16
post-thumbnail

프로세스process와 스레드Thread의 차이

  • process
    컴퓨터에서 연속적으로 즉, 동적인 개념으로 실행되고 있는 프로그램으로 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체)를 말한다. 프로세스는 각각 독립된 메모리 영역인 Code, Data, Stack, Heap을 할당받고 각 프로세스는 별도의 주소 공간에서 실행되며, 프로세스끼리 변수나 자료구조에 접근할 수 없다. 접근하기 위해서는 파이프, 파일과 같은 IPC(Inter-Process-Communication)통신 방법을 이용해야 한다.
  • thread
    프로세스 내에서 실행되는 특정한 수행 경로, 프로세스가 할당받은 자원을 이용하는 실행의 단위를 말한다. 스레드는 프로세스 내에서 각각 Stack만 따로 할당받고 Code, Data, Heap 영역은 서로 공유한다.

정리하자면 같은 프로세스 안에 있는 여러 스레드들은 같은 힙 공간을 공유하며 서로 읽고 쓸 수 있지만 프로세스는 다른 프로세스의 메모리에 직접 접근할 수 없다.

멀티 스레드

하나의 프로그램에 동시에 여러개의 일을 수행할 수 있도록 해주는 것

  • 장점 : 프로세스로 동시에 처리하던 일을 멀티스레드로 구현할 경우 시스템 처리량이 향상되어 시스템 자원소모가 줄어들고 통신이 필요한 경우에도 별도의 자원을 이용하는 것이 아니라 Heap영역을 이용하기 때문에 메모리 공간도 줄어든다.
  • 단점 : 서로 다른 스레드가 Data와 Heap영역을 공유하기 때문에 어떤 스레드가 다른 스레드의 값을 읽어오거나 수정할 수 있기 때문에 동기화 작업이 필요하다. 하지만 과도한 컨트롤로 병목 현상이 발생할 수 있으므로 주의해야 한다.
  • 멀티스레드 : 멀티프로세스보다 적은 메모리 공간을 차지한다는 장점이 있지만 오류로 인해 하나의 스레드가 종료되면 전체 스레드가 종료될 수 있다는 점과 동기화의 문제가 있다.
  • 멀티프로세스 : 하나의 프로세스가 죽더라도 다른 프로세스에 영향을 주지 않는다. 하지만 멀티 스레드보다 많은 메모리 공간과 CPU 시간을 차지한다.

스케줄러(Scheduler)

한정적인 메모리를 여러 프로세스가 효율적으로 사용할 수 있도록 다음 실행 시간에 실행할 수 있는 프로세스 중에 하나를 선택하는 역할로 세 가지의 종류가 있는데 메모리와 디스크사이의 스케줄링을 담당하는 장기스케줄러와, CPU와 메모리사이의 스케줄링을 담당하는 단기스케줄러, 현 시스템에서 메모리에 너무 많은 프로그램이 동시에 올라가는 것을 조절하는 중기스케줄러가 있습니다.

CPU 스케줄러

  • FCFS(First Come First Served) : 먼저 온 순서대로 처리
  • SJF(Shortest-Job-First) : CPU가 일을 수행하는 시간이 짧은 프로세스에게 선 할당
  • SRTF(Shortest Remaining Time First) : 새로운 프로세스가 도착할 때마다 새로운 스케줄링이 이루어진다.
  • Priority Scheduling : 우선순위가 가장 높은 프로세스에게 CPU 를 할당하는 스케줄링이다. 우선순위란 정수로 표현하게 되고 작은 숫자가 우선순위가 높다.
  • Round Robin : 각 프로세스는 동일한 크기의 할당 시간을 갖게 된다

동기와 비동기의 차이

동기는 순차적으로 일을 수행하기때문에 요청과 결과가 한 자리에서 동시에 일어나지만 비동기는 병렬적으로 일을 수행하기에 요청한 그 자리에서 결과가 주어지지 않는다.

0개의 댓글