[OS]프로세스와 스레드(1)

yunlee·2023년 1월 11일
0

CS

목록 보기
1/1

프로그램

프로세스를 알아보기전에 프로그램이란 단어를 살펴보자. 프로그래머가 아니더라도 프로그램이란 단어는 일상생활에서 많이 쓰인다. 프로그램을 정확하게 정의하는 내용이 분명 있겠지만 대부분의 사람들은 추상적으로 의미만 알고있을것이다. 여기서도 이해를 돕기위해 프로그램을 컴퓨터가 실행 가능한 파일이라고만 하겠다. 기본적으로 컴퓨터에 깔려있거나 우리가 사용하기 위해 다운로드받은 파일들이 프로그램이다 (메모장, 크롬, 게임 등등).

프로세스

프로세스는 컴퓨터에서 현재 실행중인 프로그램을 뜻한다. 즉, 내가 메모장(프로그램)을 사용 하기위해 실행시킨다면 메모장은 프로세스가 된다.

스레드

스레드는 프로세스안에서의 실행되는 작업의 단위를 뜻한다. 프로그램이 실행되면서 진행되는 작업들에 대한 묶음 단위라고 생각하면된다. 카카오톡이라는 프로그램에서 채팅을 보내거나 친구를 추가하거나 프로필을 변경하는등에 작업들을 흐름에 따라 단위로 나누어 스레드 안에서 처리하는것이다. 하나의 프로세스는 하나 이상의 스레드를 갖는다.

  • 프로그램 - 실행 가능하도록 만들어진 파일
  • 프로세스 - 현재 실행중인 파일
  • 스레드 - 프로세스의 작업단위

멀티태스킹

위 설명에서 프로그램을 실행시키면 프로세스라고 설명하였다. 프로그램을 실행시키는 장치를 프로세서라고 하는데 컴퓨터에서 프로세서는 CPU(중앙 처리 장치)를 뜻한다.
CPU는 한번에 한개의 프로세스만 작업 할 수 있다. 따라서 원칙대로라면 컴퓨터는 한번에 한개의 프로세스만 처리할 수 있다(실제로 옛날에 그랬다). 하지만 지금은 게임을 하면서 노래를 들을수도 있고 동영상을 보면서 카톡을 보낼 수 있듯이 여러 프로세스가 동시에 처리 된다. 놀라운것은 CPU가 한번에 한개의 프로세스만 처리 할 수 있는것에는 변함이 없다.

어떻게?

컴퓨터 프로세스가 동시에 처리되는 것처럼 보이는 이유는 멀티태스킹 때문이다. 기존의 프로세스 처리 방식은 한 작업이 다 끝나면 다음 작업을 시작했지만, 멀티태스킹은 프로세서가 여러 프로세스를 빠르게 번갈아가며 작업을 한다. 따라서 각각의 프로세스는 끊어서 작업되지만 그 시간이 매우 짧기 때문에 끊김없이 여러 프로세스가 동시에 처리되는것처럼 보일 뿐이다.

멀티 태스킹에서 작업하는 프로세스가 바뀌는 동작은 다음과 같다.
먼저 스케쥴링을 통해 모든 프로세스의 작업 순서를 정한다. 그 후 프로세스가 순서대로 처리되어 지는데, 실행상태는 현재 작업중인 프로세스이고 준비상태는 다음 순서에 작업되어질 프로세스이다. 프로세스가 실행될때는 프로세스의 정보를 담고있는 PCB와 작업에 필요한 코드들이 메모리에 올라가게 된다. 각각의 프로세스는 독립적이기 때문에 PCB가 전부 다르다. 따라서 준비상태의 프로세스가 실행상태로 바뀌기 위해선 현재 실행중인 프로세스의 PCB를 내리고, 다음 프로세스의 PCB를 올리는 과정이 필요하다. 이 과정을 "컨텍스트 스위칭"이라고 한다.

컨텍스트 스위칭이 발생하는 동안 CPU는 작업을 중단하기때문에 컨텍스트 스위칭이 자주 일어나면 시간적인 손해가 발생한다.

멀티태스킹은 멀티프로세스와 멀티스레드를 설명하기 위해 미리 설명한 내용이다. 다음 글에서는 프로세스와 스레드의 세부적인 정보와 멀티프로세스, 멀티스레드에 대한 내용을 설명하겠다.

해당 글은 제가 직접 자료들을 찾아보고 공부한 것을 바탕으로 작성되었으며 내용이 틀릴시에는 댓글을 남겨주시면 감사하겠습니다.😀(애초에 찾아본 자료들의 내용이 조금씩 달라서 혼자 취합한 내용입니다.)

profile
💻 욕심쟁이 yunlee의 개발 블로그

0개의 댓글