프로세스와 스레드

심서현·2022년 11월 18일

정적 프로그램 (static program)

정적 프로그램은 아직 실행되지 않은 컴퓨터에서 실행 할 수 있는 파일이다.
window 기준으로 exe파일이라고 생각할 수 있다.


이런 정적 프로그램을 실행시켜 동적 프로그램이 될 때, 동적 프로그램이 작동되는 공간이 프로세스이다.




프로세스 (Process)

프로세스는 프로그램을 실행시켜 동적으로 변할 때, 프로그램이 돌아가고 있는 상태를 의미한다.

  • 컴퓨터는 프로세스마다 자원을 분할시켜 할당한다.
  • 인터넷 쇼핑을 하면서 유튜브 뮤직을 들을 수 있는 곳은 운영체제가 여러개의 프로세스를 동시에 돌리기 때문이다. 이는 멀티테스킹을 의미한다.

프로세스는 크게 2가지의 특성을 보인다.

동시성 (Concurrency)

프로세스 하나가 여러 작업을 돌아가면서 수행하는 것을 동시성이라고 한다.

이 작업을 Context Switching 이라고 한다.
이 과정은 너무 빠르게 진행되어, 사용자 눈에는 마치 동시 진행으로 느껴지기에 동시성으로 구분된다.


병렬성 (Parallenlism)

프로세스 하나에 코어 여러 개가 달려 각각 동시에 작업들을 수행하는 것을 병렬성이라고 한다.

듀얼코어, 쿼드코어, 옥타코어 등의 명칭이 붙는 컴퓨터에서 가능한 방식이다.




스레드 (Thread)

스레드는 하나의 프로세스에서 동시에 진행되는 작업들을 의미한다.
유튜브 영상의 데이터를 받으며 받아진 데이터로 영상을 실행하는 예시로 생각하면 될 것 같다.

  • 프로세스의 하위작업이다.
  • 하나의 스레드가 발생한다고 해서 그것만을 위한 작업공간을 제공하지 않는다.




정리

  • 프로젝트를 위한 깃허브 저장공간은 프로세스이다.
  • 프로젝트를 위한 하위작업인 commit은 스레드이다.
  • 같은 파일을 여러명이 동시변경하여 comit하면 conflict가 발생하는 것은 프로세스 안에서 공유되는 특정 변수를 스레드 여러개가 손대면 에러를 발생하는 것과 같다고 생각하면 된다.
profile
안녕하세요?

0개의 댓글