📌 - fork()? - 함수를 호출한 프로세스를 복사하는 기능 - 원래 진행되던 프로세스는 부모, 복사된 프로세스를 자식이라고 한다. - fork() 함수는 프로세스 id, 즉 pid를 반환하는데 자식이라면 0이 반환 된다. 1️⃣ - 예시 1 - fork가 자식프로세스에서는 0을 반환하기 때문에 x=2를 출력하고 종료 #include #include #include int main(){ pid_t pid; int x = 1; pid = fork(); if(pid == 0){ /*Child*/ printf("child: x=%d\n", ++x); exit(0); } /*Parent*/ printf("parent: x=%d\n", --x); exit(0); } 2️⃣ - 예시 2 - 중첩 fork() i..
📌 - 가상메모리(VM)란? 실제 메모리 크기와 관계없이 메모리를 이용할 수 있도록 가상의 메모리 주소를 사용하는 방법 - 가상메모리는 한 개의 깔끔한 메커니즘을 사용해서 세 개의 중요한 기능을 제공한다. 메인 메모리 내 활성화 영역만 유지하고, 데이터를 디스크와 메모리 간의 필요에 따라 전송하는 방법을 사용 각 프로세스에 통일된 주소공간을 제공함으로 메모리를 단순화 각 프로세스의 주소공간을 다른 프로세스에 의한 손상으로부터 보호 📌 - 왜 알아야 하는가?? 현재 프로그래머들이 가상메모리에 대해 개입하지 않아도 조용하고 자동으로 잘 동작하는데, 왜 이것을 이해해야 하는 것일까?? 1 ) 가상메모리가 중심이다. - 가상메모리는 모든 컴퓨터 수준에 스며들어 있으며, 어셈블러, 링커, 로더, 공유 객체, 파일..
📌 - 동적 메모리 할당 메모리를 할당하는 방법에는 정적으로 할당하는 정적 할당과 동적으로 할당하는 동적 할당이 있다. 정적할당은 이때까지 계속 사용해왔던 int arr[100]과 같은 고정된 크기의 배열을 정적할당이라고 한다. 그렇다면, 잘 사용하고 있는 배열을 사용하지 않고 동적할당을 사용하는 이유가 무엇일까?? 👉 - 정적배열은 처음 생성할 때 크기가 고정되어 있으며, 이러한 문제 때문에 고정된 크기보다 더 큰 입력이 들어오게 된다면 index 에러가 나타나게 되고, 더 작은 입력이 들어오게 되면 남는 만큼 메모리를 사용하지 않아 메모리 낭비로 이어지게 된다. 이런 문제를 해결하기 위해서 동적할당이란 개념을 사용한다. 동적 할당이란? 실행 시간동안 사용할 공간을 동적으로 할당하는 것 사용이 끝난 뒤..