🧐 학습 계기
이번에 스터디를 진행하면서 운영체제-프로세스에 대해서 학습공유를 하게 되었다. 학습을 하다 보니 역시 파도파도 끝이 없다. 이 부분에서 학습공유에 정리하기 전에 내가 학습했던 과정들을 상세하게 기록하고 싶어서 이렇게 블로그 글을 작성하게 되었다. (너무 구구절절 발표할순 없으니까...)
🐥 프로세스에 대한 기초 지식
프로세스라고 하면 당연하게 연결되는 것이 프로그램과 프로세스의 차이이다.
📄 프로그램의 정의
[컴퓨터] 어떤 문제를 해결하기 위해 컴퓨터에게 주어지는 처리 방법과 순서를 기술한 일련의 명령문의 집합체. -옥스퍼드 사전
사전적 의미 그대로이다. 디스크에 저장된 처리 방법과 순서를 명령한 코드 뭉치 파일이라고 생각하면 될 것 같다.
프로그램의 범위...?
하지만 여기서 또 의문점이 생겼다. 아래의 사이트에서는 프로그램과 프로세스의 차이를 아래와 같이 설명했는데, Program에 Data가 포함이 되어있었다.
Program을 단순히 코드 뭉치 파일로 생각해야 할지, 아이콘, 이미지 등 그 프로그램에서 사용하는 리소스를 포함하는 것까지 Program인지에 대한 의문점이 생겼다. 흔히 코딩을 할 때 Resource, Source로 많이 구분을 하게 되는데... 단순하게 요약하면 아래와 같다.
1. Program == Source + Resource ???
2. Program == Source ???
GPT와 이부분에 대해서 열띤 토론을 해봤는데 큰 정답은 없는 것 같다. 하지만 CS관점에서 본다면 명령어 집합에 가깝게 보는 것이 맞다는 판단을 내렸다. 아이콘, 이미지, 사운드 등은 엄밀히 말해 프로그램 자체라기보다는 프로그램이 필요로 하는 리소스라고 생각하면 될 것 같다.
하지만 보통 프로그램이라고 사용자가 다운로드하는 것은 이러한 리소스들이 함께 포함되어 있고, 프로그램은 코드뿐만 아니라 실행에 필요한 리소스가 함께 제공되어야 동작하기 때문에 다양한 파일 Info.plist 같은 파일들도 애매해지기 때문에 실행에 필요한 모든 파일들이라고 생각해도 좋을 듯싶다.
📀 프로세스의 정의
공룡책(Operating system concepts)이라는 유명한 책에서 내린 정의를 가져와 봤다. 여기서 말한 것이라면 모두가 수긍할 것이라고 믿는다...!
Process, which is a program in execution.
A process is the unit of work in a modern computing system.
- Operation System Concepts, Chapter 9, 105 page
프로그램이 실행 단계에 있을 때를 프로세스라고 한다. 프로세스는 일(작업)의 단위로 볼 수 있다.
사실 이 정의는 너무 쉽다(?) 실행된 게 프로세스입니다!라고 하기에는 뭔가 아쉽다. 조금 더 CS적인... 무언가... 를 넣고 싶다. 위에서 첨부한 그림에서 보면 Disk, Memory가 눈에 띈다.
Disk와 Memory의 차이는 아래와 같다. 컴퓨터에서 저장장소는 아래와 같이 구분이 가능하고, 메모리에 대해 딥다이브는 나중에 하도록 하고... (아무튼 Disk는 하드디스크, Memory는 RAM에서 사용하는 용량이라고 생각을...)
🧑🎓 좀 더 디테일하게 프로세스 정의 내리기
디스크에 있는 코드 뭉치들을 빠르게 실행하기 위해서 메모리에 올렸구나! 로 위의 그림을 해석해 볼 수 있을 것 같다. 그렇다면 프로세스를 멋지게 정의 내려보자면... (면접 답변 예상..?)
🧑🏻💻: 프로그램의 정의는 뭘까요?
🐣: 어떠한 문제, 상황을 해결하기 위한 처리 방법, 순서가 기록되어 있는 파일입니다.
🧑🏻💻: 프로세스의 정의는 뭘까요?
🐣: 디스크에 있는 프로그램이 접근이 빠른 메모리에 로드되고 실행 단계에 있을 때를 프로세스라고 합니다. 프로세스는 운영체제 입장에서 일(작업)의 단위입니다.
📑 프로그램과 프로세스는 1:n
여기서 추가하고 싶은 내용은 항상 프로그램이 하나의 프로세스에 대응되는 것이 아니라는 점이다. 예를 들면 메모장, 크롬의 탭 등 하나의 프로그램이 여러개의 프로세스 상태로 갈 수 있다.
이제 겨우 정의를 내렸으니 조금더 디테일하게 내려가보고자 한다.
'→ Computer Science' 카테고리의 다른 글
[CS] 프로세스와 스레드 딥다이브 - 3. 실행, Context switch?? (0) | 2025.01.18 |
---|---|
[CS] 프로세스와 스레드 딥다이브 - 2. 프로세스의 구조?? (1) | 2025.01.18 |
[RTMP] RTMP 프로토콜 개요 (7) | 2024.11.08 |
[CS] TCP/UDP 전송계층 (0) | 2024.11.07 |
[CS] 소켓을 Swift로 알아보기 (0) | 2024.11.07 |