쓰레드와 프로세스의 차이는 무엇인가?
인터럽트(interrupt)에 대해 설명하시오.

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

쓰레드는 할당받은 자원을 이용하는 실행의 단위이고 프로세스 내에 여러개가 생길 수 있다.

- 프로그램을 실행하는 순간 파일은 컴퓨터 메모리에 올라가게 되고, 이 상태를 동적 상태라고 이야기 하며 이 상태의 프로그램을 프로세스라고 한다. 따라서 실행중인 프로그램을 프로세스라고 생각하면 된다.

그런데, 프로그램들이 점차 복잡해지기 시작하면서 하나의 프로세스만으로는 벅차게 되었다. 이때 가장 먼저 생각나는 해결책은 프로세스를 여러개 만드는 것이겠지만, 운영체제는 안정성을 위하여 자신에게 할당된 메모리 내역 정보에만 접근 할 수 있도록 제약을 두고 있고 이를 벗어나는 정보에 접근하면 오류가 나기에 불가능했다. 

이러한 문제를 해결하기 위해서 쓰레드가 나왔다. 쓰레드는 프로세스와 다르게 쓰레드 간 메모리를 공유하며 작동한다. 쓰레드는 프로세스의 코드에 정의된 절차에 따라 실행되는 특정한 수행 경로다.

프로세스와 쓰레드의 작동 방식 차이

프로세스들이 운영체제로부터 별도의 메모리 영역을 할당받은 모습 (이미지 출처:  Heee's Development Blog )

 

스레드들이 프로세스의 Code/Data/Heap 메모리 영역을 공유하는 모습 (이미지 출처:  Heee's Development Blog )

 

여기서도 차이가 나는데, 프로세스를 실행중에 크래쉬가 나면, 다른 프로세스에 영향을 주지 않는다.

하지만, 한 쓰레드에 오류가 난다면, 같은 프로세스 내의 모든 쓰레드가 강제로 종료된다.

CPU가 작업을 할때는 쓰레드를 최소 단위로, 운영체제가 작업을 할때는 프로세스가 최소 단위로 삼아져서 작업이 된다.

하나의 프로세스는 하나 이상의 쓰레드를 갖게된다.

 

 

 

 

주변 장치와 입출력 장치는 CPU나 메모리와 달리 interrup라는 메커니즘을 통해 관리된다. 입출력 연산이 CPU 명령 수행속도보다 현저히 느리기 때문이다.

인터럽트의 정의는 CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외상황이 발생하여 처리가 필요할 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것이다.

즉, CPU의 처리 속도가 입출력장치속도보다 빨라서 다른 업무를 먼저 수행하고 있다가, 입출력장치가 일을 끝내고 CPU에게 이를 알리면 CPU는 다시 관련된 업무를 진행하는 과정으로 진행이 된다. 이 과정에서 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

 

프로세스와 스레드의 차이

프로세스와 스레드의 차이는 프로세스와 스레드, 그리고 프로그램이 작동하는 방식에 대해서 잘 이해하고 있는지 확인하기 위해 기술면접에서 단골 질문 사항으로 나온다.

velog.io

https://velog.io/@adam2/%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8

 

[OS기초] 인터럽트 제대로 이해하기

주변장치와 입출력 장치는 CPU나 메모리와 달리 인터럽트라는 메커니즘을 통해 관리된다. 그래서 인터럽트, 왜 하는거요? 그 이유는 입출력 연산이 CPU 명령 수행속도보다 현저히 느리기 때문이

velog.io

 

'스터디 관련' 카테고리의 다른 글

CS 스터디 04회차, ~ 7월 7일(목)  (0) 2022.07.07
CS스터디 02회차, ~06월 09일(목)  (0) 2022.06.09
CS스터디 01회차, ~06월 02일(목)  (0) 2022.06.02
2/3(수) 과제  (0) 2021.02.03
1/6일 스터디 과제  (0) 2021.01.06

+ Recent posts