Process

์ตœ์ œ์›ยท2024๋…„ 7์›” 21์ผ

์šด์˜์ฒด์ œ

๋ชฉ๋ก ๋ณด๊ธฐ
1/2

๐Ÿ’ก Process

์‹คํ–‰ํŒŒ์ผ(program)์ด memory์— ์ ์žฌ๋˜์–ด CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ process๋ผ๊ณ  ํ•œ๋‹ค

  1. ์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผ์„ ํ•˜๊ฒŒ ๋˜๋ฉด HDD์— ์ ์žฌ๋˜๊ฒŒ ๋œ๋‹ค (program)
  2. program์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด ram ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹นํ•˜๊ฒŒ ๋œ๋‹ค (CPU๋Š” HDD์— ์ €์žฅ๋œ ํ”„๋กœ๊ทธ๋žจ์„ ์ฝ์„์ˆ˜ ์—†๋‹ค)

์ฆ‰, ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋œ ์ดํ›„ CPUํ• ๋‹น์„ ๋ฐ›๊ฒŒ ๋˜๋ฉด process๊ฐ€ ๋œ๋‹ค

Memory Structure


// ์˜ˆ์ œ ์ฝ”๋“œ ์ถœ์ฒ˜: ๊ธฐ์ถœ๋กœ ๋Œ€๋น„ํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์ „๊ณต๋ฉด์ ‘(inflearn)
#include <stdio.h>
#include <stdlib.h>

int size = 5; // ์ „์—ญ๋ณ€์ˆ˜

int func1(int size){
	int num = 3 // ์ง€์—ญ๋ณ€์ˆ˜
    int *arr = malloc(sizeof(int) * size); // ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น
    
    for (int i=0; i<size; i++) arr[i] = i*num;
    
    int output = arr[4];
 	free(arr);
    return output;
}

int main() {
	printf("%d", func1(size)); // ๋งค๊ฐœ๋ณ€์ˆ˜
    return 0;
}

๐Ÿ’ก Process

ํ”„๋กœ์„ธ์Šค(process)๋ž€ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์„ ๋œปํ•œ๋‹ค.
์ฆ‰, ์‹คํ–‰ํŒŒ์ผ ํ˜•ํƒœ๋กœ ์กด์žฌํ•˜๋˜ program์ด memory์— ์ ์žฌ๋˜์–ด CPU์— ์˜ํ•ด ์‹คํ–‰(์—ฐ์‚ฐ)๋˜๋Š”๊ฒƒ์„ Process๋ผ๊ณ  ํ•œ๋‹ค

0๊ฐœ์˜ ๋Œ“๊ธ€