공부기록/CS

프로세스

Jenner 2023. 10. 30. 00:02

프로세스란? 

실행중인 프로그램 

 

프로그램이란? 

특정 작업을 수행하는 명령어들의 모음

 

스레드란? 

프로세스 안에서 실행되는 흐름 단위

프로세스에는 하나 이상의 스레드가 존재

 

프로세스 vs 스레드 차이

프로세스는 독립적인 메모리를 할당받음 

스레드는 프로세스 속에 있는 것이라서 프로세스가 받은 메모리 공유

 

 

프로세스 구조

 

 

코드영역 

컴파일되어 읽기전용 영역

 

컴파일 : 컴퓨터가 이해할 수 있는 기계어로 변환해 주는 것 (컴파일러가 이 것을 수행해주는 프로그램)

 

 

정적할당과 동적할당 

정적할당 : 실행전에 미리 메모리를 할당. 할당받을 크기가 미리 정해져 있음

동적할당 : 실행도중에 메모리를 할당. 실행도중에 할당받을 크기가 변할 수 있음

 

 

정적할당 예시:

미리 최대 학생 수를 정해두고 메모리 할당.

학생 수에 비해 많은 메모리 필요

할당받고 사용하지 않는 메모리 발생

예상보다 많은 학생이 있다면 코드 수정

실행중 할당받는 과정이 없기 때문에 속도가 빠름

 

동적할당 예시: 

실행도중 학생 수에 따라 메모리 할당받음 

정확하게 필요한 만큼 메모리 사용

학생 수가 늘어나도 추가 할당 받을 수 있음

추가로 메모리 할당받는 과정으로 처리가 지연될 수 있음 

메모리 부족한 경우 프로그램이 멈출 수 있음

 

 

데이터 영역 

전역변수와 정적 변수들을 위한 공간 

프로그램의 시작과 함께 할당 프로그램 종료되면 소멸 

프로그램 시작되는 시점부터 종료 시점까지 추가되거나 사라지지 않는 공간

 

 

힙영역

동적 메모리 할당을 위해 사용되는 영역

사용자가 직접 관리할 수 있는 메모리 영역

상대적으로 느리며 관리를 못할 경우 메모리 누수 발생

 

 

메모리 누수: 동적으로 할당된 메모리를 해제하지 않은 채로 

사용하지 않는 상태로 남겨두는 현상 

프로그램의 성능저하와 안정성 문제를 유발할 수 있음

 

 

스택 

데이터를 저장하는 선형 자료구조 

 

자료를 넣는 것은  push, 빼는 것은 pop

후입선출 (LIFO)

 

함수의 호출과 관련된 지역변수와 매개변수 저장 

함수의 호출과 함께 할당, 호출 완료되면 소멸 

프로세스별로 크기가 제한 됨 

 

 

 

프로세스 상태

 

생성 

준비 상태로의 승인을 기다리는 단계

아직 메모리에 로드되지 않은 상태 

대부분 바로 준비상태로 승인되지만, 리소스가 부족하면 이 상태에서 오래 대기할 수 있음 

 

준비

프로세스가 CPU를 사용하고 있지 않지만, 언제든 실행될 수 있도록 대기하는 상태 

운영체제는 우선순위가 높은 순서대로 CPU를 할당해서 실행상태로 전이함 

 

실행

CPU가 할당되어 프로세스의 명령어들을 처리해주는 단계

동시에 다른 프로세스들을 처리하기 위해서 일정시간 이후 다시 Ready상태로 전이함 

 

대기

프로세스가 특정 자원이나 이벤트를 기다리는 상태

입출력 완료 등 특정 이벤트를 기다리는 상태

이벤트가 완료되면  Ready상태로 옮겨와서 계속해서 실행

 

종료

모든 명령어가 완료된 상태

부모 프로세스가 상태를 확인하기 위해서 바로 삭제되지 않고 이 상태에서 대기

이 상태가 끝나면 프로세스가 메모리에서 삭제됨

 

멀티프로세싱

동시에 여러가지 일을 처리하기 (여러개 프로세스를 조금씩)

 

멀티 스레드

한 프로세스 내에서 자원을 공유하면서 여러 작업을 처리

새로 프로세스를 생성하고 리소스를 할당 받는 과정이 없어서 더 빠르게 처리가 가능

하나의 스레드가 문제가 생기면 프로세스 전체가 종료될 수 있음

 

프로세스간 통신(Inter Process Communication, IPC)

다른 프로세스의 리소스는 절대 침범하면 안됨

운영체제가 허용하는 방법 내에서 데이터를 주고받는 방법들

 

메시지큐

공용우편함에 넣어두기 

데이터를 넣어두고 다른 프로세스들이 사용할 수 있게 하는 방법

운영체제에서 관리하는 메시지 큐를 통해 통신하는 방법

데이터를 메시지 큐에 넣어두면 다른 프로세스가 데이터를 찾아서 다룰 수 있음 

공유 메모리 

현관문 열어두기 

프로세스의 메모리 일부를 공유 메모리로 만들어 다른 프로세스와 공유하는 방법

데이터를 복사하는 과정들이 생략되어 상대적으로 빠르게 동작 

리소스를 공유하기 때문에 충돌할 위험이 있음

 

 

 

 

 

소켓 

택배로 접시 보내기

소켓을 생성하여 다른 양방향 통신을 통해 데이터를 전달

다른 네트워크에 있는 프로세스와도 통신할 수 있는 소켓 통신을 이용

통신 규약에 따라 통신하며, 데이터를 주고 받는 양방향 통신

 

 

프로세스 스케줄링