본문 바로가기

OS

[질문] 프로세스, 쓰레드

728x90

프로세스 및 쓰레드 관련 질문

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

프로세스는 컴퓨터에서 실행 중인 프로그램을 말하고 고유한 공간과 자원을 할당 받아서 사용한다.

반면에 쓰레드는 프로세스 안에서 실행되는 여러 흐름의 단위로 프로세스 내의 자원을 공유하고 고유한 스택만을 각자 할당 받는다. 

 

 

스택을 스레드마다 독립적으로 할당하는 이유는 무엇인가요? (= 스레드가 스택만 공유하지 않는 이유는 무엇인가요?)

스택은 함수 호출시 전달되는 인자, 복귀 주소값 및 함수 내에서 선언하는 변수 등을 저장하기 위해 사용되는 메모리 공간이다.

스택 메모리 공간이 독립적이라는 것은 독립적인 함수 호출이 가능함을 의미하고 이는 독립적인 실행 흐름이 추가된다는 것을 의미한다. 

그리고 쓰레드는 프로세스 내의 흐름의 단위, 작업의 단위를 의미하므로 독립적인 실행 흐름을 위한  최소 조건으로 독립된 스택을 할당하는 것이다. 

 

 

멀티 프로세스 대신 멀티 쓰레드를 사용하는 이유는?

  • 프로그램을 여러 개 키는 것보다 하나의 프로그램 안에서 여러 작업을 해결하는 것이 더욱 효율적이기 때문이다.
  • 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다. 
  • Context Switching시, 캐시 메모리를 비울 필요가 없기 때문에 비용이 적고 더 빠르다. -> 스레드는 Stack 영역만 초기화하면 되기 때문이다.
  • 스레드는 프로세스 내의 메모리를 공유하기 때문에 데이터 전달이 간단하므로 IPC에 비해 비용이 적고 더 빠르다. -> 스레드는 프로세스의 Stack 영역을 제외한 모든 메모리를 공유하기 때문이다.

 

사용자 수준의 스레드와 커널 수준의 스레드 차이는?

커널 수준 스레드

  • 스레드를 생성하고 스케줄링하는 주체가 커널
  • 장점 : 커널이 직접 제공해주므로 안정성과 다양한 기능 제공
  • 단점 : 유저 모드에서 커널 모드로의 전환이 빈번함

사용자 수준 스레드

  • 스레드 기능을 제공하는 라이브러리를 이용하므로 커널에 의존하지 않음
  • 장점 : 커널이 스레드를 모르기때문에 모드 간의 전환이 없고 성능 이득 발생
  • 단점 : 하나의 스레드가 커널에 블로킹되면 프로세스 전체가 블로킹됨

 

 

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

 

 

 

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

  • 코드 : 실행할 명령어 저장
  • 데이터 : 프로그램에 필요한 전역변수나 정적변수 저장
  • 스택 : 함수 호출에 필요한 스택 프레임 저장
  • 힙 : 사용자가 관리하는 공간으로 메모리가 동적으로 할당되고 해제된다. 

 

기타 질문

인터럽트란?

프로세스 실행 도중에 예외 상황이 생겨서 처리가 필요한 경우 CPU에게 알려서 처리할 수 있도록 하는 것을 말한다.

(또 다른 방식으로 폴링 방식이 있는데, 이는 시스템이 주기적으로 감시하면서 상황이 발생하면 해당 루틴을 처리하는 과정을 말한다.)

 

두 가지 종류로 나뉘는데, 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉜다.

인터럽트를 요청하는 주체에 따라서 나뉘는 것으로 소프트웨어 인터럽트는 예외처리, 시스템 콜이 발생하는 것을 말한다. (소프트웨어 인터럽트는 Trap이라고도 말한다.)

 

시스템 콜이란?

사용자 또는 응용 프로그램이 커널에서 제공하는 기능을 사용하기 위한 인터페이스이다.

운영체제는 커널이 제공하는 서비스를 시스템 콜을 이용해서 제한함으로서 컴퓨터 자원을 보호한다.

 

 

PC 레지스터를 쓰레드마다 독립적으로 할당하는 이유?

Process Counter 값은 쓰레드가 명령어의 어디까지 수행했는지를 말한다.

쓰레드는 CPU를 할당 받았다가 스케줄러에 의해 다시 선점 당한다. 그러므로 명령어가 연속적으로 수행되지 못하고 어느 부분까지 수행했는지 기억할 필요가 있다. 따라서 PC 레지스터를 독립적으로 할당한다. 

 

 

문맥 교환의 과정 (컨텍스트 스위칭 과정)

 

 

가상메모리란?

메모리에 로드된 실행 중인 프로세스가 메모리가 아닌 가상의 공간을 참조해 마치 커다란 물리 메모리 공간을 갖는 것처럼 사용할 수 있게 해주는 기법을 의미 

 

 

DMA란?

CPU를 대신해서 I/O 장치와 메모리 사이의 데이터 전송을 담당하는 장치

주변장치들이 메모리에 직접 접근해서 읽거나 쓰도록 하는 기능으로 CPU의 개입 없이 I/O 장치와 기억장치 사이의 데이터를 전송할 수 있다.

DMA로 인터럽트의 발생 횟수를 줄여 성능을 높인다.

 

 

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

레지스터 -캐시 - 주기억장치 - 보조기억장치 

CPU는 프로그램 실행 시 가장 먼저 레지스터에 필요한 데이터가 있는지를 확인하고,

레지스터에 필요한 데이터가 존재하지 않는다면 캐시를, 캐시에도 없다면 주기억장치를, 주기억장치에도 없다면 보조기억장치를 확인해서 필요한 데이터를 적재한다.

  • 레지스터 : CPU 내에 존재하는 메모리로 작고 빠르다.
  • 캐시 : CPU와 주기억장치 사이에서 중간 저장소 역할을 한다.
  • 주기억장치 : 현재 수행되는 프로그램과 데이터를 저장한다.
  • 보조기억장치 : 용량이 크지만 느리다. 

 

프로세스 및 쓰레드 관련 개념 

인터럽트

 

시스템 콜

 

모드비트

 

문맥 교환

 

메모리 

 

 

 

_

빈 부분은 곧 채우겠음요 ..

'OS' 카테고리의 다른 글

CPU 스케줄링  (0) 2022.09.05
프로세스 스케줄링  (0) 2022.09.05
시스템 콜과 인터럽트  (0) 2022.08.29
프로세스 - 상태  (0) 2022.08.29
쓰레드  (0) 2022.08.29