프로세스, 스레드

DD·2021년 1월 22일
0

프로그래밍 이론

목록 보기
8/12

프로그램 Program

프로그램이란, 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태를 말한다.

정적 데이터와 명령어로 구성되어 있는 코드 덩어리

프로세스 Process

HDD, SSD와 같은 보조 기억장치에 있는 프로그램이 메모리에 적재되어 운영체제가 관리하는 상태가 되는 것.

실행중인 프로그램을 의미함.

구성

  • PID : 프로세스 식별 번호 (Process IDentification)

  • 프로세스 상태 : ready, waiting, runnig, determinated

  • 프로그램 카운터 : CPU가 다음으로 실행할 명령어를 가리키는 값

  • 스케줄링 우선순위 : 운영체제가 결정한 CPU에서 실행되는 프로세스의 순서.

  • 권한 : 프로세스가 접근할 수 있는 자원을 결정하는 정보.

  • 부모, 자식 프로세스 : 최초로 생성되는 init 프로세스를 제외하고,
    모든 프로세스는 부모 프로세스를 복제해서 생성된다.
    각 프로세스는 부모, 자식 프로세스 정보를 갖고 있다.

  • 메모리에 적재된 프로그램(데이터, 명령어) 위치 값 포인터

  • 프로세스에 할당된 자원들을 가리키는 포인터

  • 실행문맥 : 프로세스가 이전에 마지막으로 실행한 프로세서의 레지스터 내용.
    운영체제에 의해 계속 교체되고 다시 자기 차례가 되었을 때 이어받아서 멈춘적 없는 것처럼 동작한다

멀티 프로세스

사실 프로세스가 '동시에' 여러개 동작 되는 것이 아니다.

정말 빠른 속도 (ex 20ms)로 실행, 중지, 다음 프로세스 실행, 중지 ...를 반복해서 마치 동시에 동작하는 것처럼 보일 뿐이다.

이처럼 프로세스간, 쓰레드간의 전환을 컨텍스트 스위칭(context switching)이라고 한다.

스레드 Thread

경량 프로세스 Light Weight Process. 프로세스에서 실행 제어만 분리해서 처리하는 단위

싱글 vs 멀티 스레드

모든 프로세스는 기본적으로 하나의 메인 스레드를 가지고 있다.

두 가지 작업을 하는 경우에

하나의 작업을 끝내고 나머지 작업을 실행하는 싱글 스레드와

두 작업을 번갈아가며(컨텍스트 스위치) 실행하는 멀티 스레드의 경우

멀티 스레드가 컨텍스트 스위치로 인한 시간이 추가되어 더 오래걸린다.

그렇다면 멀티 스레드가 안 좋은 것일까?

그렇지 않다! 멀티 스레드는 조금 느리더라도 동시에(사실 동시는 아니지만) 여러 작업을 하는 이점이 있다.

멀티 프로세스는 유튜브를 틀어놓으며 pc카톡을 하는 것처럼, 여러 프로그램을 사용할 수 있다.

이처럼 멀티 스레드도 유튜브를 재생하면서 댓글을 달고, 좋아요 버튼을 누르며 동영상 다운로드를 하는 등 한 프로그램 안에서 여러 동작을 할 수 있다.

싱글 스레드라면 영상을 다운 받는 동안 아무것도 할 수 없고, 영상이 재생되는 동안 아무것도 할 수 없다.

멀티 스레드 프로세스는 싱글 스레드 프로세스보다 느릴까?

이건 또 그렇지 않다. 오히려 멀티 스레드가 더 빠르다.

왜냐면 cpu가 '스레드 갯수 만큼 할당'되기 때문이다.

이처럼 스레드가 많으면 많을수록 프로세스 자체는 더 빠르고 큰 메모리를 차지하지만, 일정 수치가 넘으면 오히려 느려지기도 한다.

참고

[운영체제] 프로세스가 뭐지?

profile
기억보단 기록을 / TIL 전용 => https://velog.io/@jjuny546

0개의 댓글