CS/OS

[OS] Process와 Thread의 차이, Time-sharing, Context Switching

Yeji Heo 2023. 2. 26. 15:03

Process란 운영체제가 프로그램을 실행하고 관리하는 단위, 개체를 의미한다. (Processor는 Cpu로, 헷갈리지 말 것ㅋㅋ!!)

Process는 프로그램 실행코드, 데이터 영역, 스택, process control block으로 구성되어 있다.

 

반면 Thread는 Process처럼 별도의 실행 개체로 관리되는 것이 아니라 Process 내부에서 동시 실행(concurrent)을 지원하는 방식이다.

해당 Process가 실행 중(Running)일 때 그 프로세스 내부의 Thread들을 스케줄링하는 방식으로 동시 실행을 제공한다.

Thread도 ready, running, blocked 상태를 가진다. 그러나 Thread에 suspend는 없다.

Thread가 포함된 Process가 종료되거나, suspend되면 그 Process의 모든 Thread도 종료되고, suspend된다.

한 Process 내부에서 동시 실행을 제공하므로 Process 내부의 공유 변수나 공유 자원에 대한 접근이 용이하다.

또한, Process에 비해서 생성, 관리, 종료가 용이하다.

Process는 '통신'의 과정을 거쳐야 하지만, Thread는 코딩 선에서 해결이 가능하다.

 

+ Process를 또 쪼개보면

예)워드에서 저장/작성/맞춤법검사 등 따로따로 돌아감.

Process 안에서 따로따로 돌아가는 애들을 Thread.

 

-Time sharing

한 작업이 끝나고 다음 걸 하는 것이 아니라, 가령 시간을 0.1씩 주면 10개의 작업을 하는 데 무조건 1초가 걸리도록 시간을 분배하여 작업하게 한 방식이다.

=> 활용률은 떨어질지라도 반응시간을 높이기 위해 사용한다.

 

 

- Context Switching

여러가지 일을 번갈아서 처리할 때

(A를 하다가 B를 하다가 A를 하다가 이런식으로 왔다갔다 할 때)

그 작업의 문맥을 파악해야 한다.

A과제를 할 때에는 A에 대한 내용을 머릿속에 기억하고 처리한다.

그러다 B를 하게 되면 B가 뭐였는지 등 문맥을 파악해야 한다.

그러다 다시 A를 하게되면 또 A의 문맥을 파악해야 한다.

이렇게 왔다갔다 하는 것이 Context Switching.

프로세스 상태를 저장했다가 복원하는 과정.