가상 메모리가 사용된 뒷 배경을 먼저 보자. 주된 내용은 메모리 공유에 있어 어려움을 겪었다는 것이다.여러 프로세스가 CPU와 메모리를 공유했고, CPU는 수유가 증가해도 점진적으로 느려지지만 메모리는 한계가 명확했다.메모리가 부족하면 일부 프로세스는 실행을 할 수 없다.마구 우겨넣겠다고 되는것도 아니지. 한 프로세스가 다른 프로세스의 메모리를 침범하면 원하는 작동도 안되는데다가, 그 결과는 예측 할 수가 없다. 가상 메모리의 주요 기능 3가지는 이와 같다.효율성 : 물리 메모리를 디스크에 있는 주소 공간의 캐시처럼 사용한다. 필요한 데이터만 메모리에 유지한다.단순성 : 각 프로세스에 균일한 주소 공간을 제공한다. → 즉, 이것은 메모리 관리가 쉬워지게 한다.보호 : 각 프로세스의 주소 공간은 다른 프로..
Exceptional Control Flow : 예외적인 제어흐름프로그램의 각 명령어는 메모리의 특정 주소에 위치하며, 이러한 전이를 control transfer, 제어 이동이라고 한다.이러한 제어 이동의 연속이 바로 제어 흐름이다.가장 단순한 경우는 지금 하는 명령어와 다음 해야 할 것이 메모리 상에서 인접해있는 부드러운(smooth) 흐름이다.일반적으로 이러한 부드러운 흐름에서 벗어나 바로 다음이 해야 할 일이 아닌 jump, call, return과 같은 익숙한 명령어들로 인해 발생한다.이러한 명령어들은 프로그램 내 변수로 표현되는 내부 상태 변화에 대응 할 수 있도록 프로그램이 반응하게 해주는 필수적 메커니즘이다.하지만 시스템은 내부 프로그램 변수로 포착되지 않거나, 프로그램 실행과 직접적으로 ..
이거는 글을 좀 분할을 해야겠다.. [2025년 5월 1일 작성]링커!!링커는 소프트웨어 개발하는데 있어 구성요소를 분리 할 수 있게 해준다.즉, 한 소스 코드에 모든 것을 배치하는 것과 달리 여러 개의 소스로 나눌 수 있다.이것은 간접적으로든 직접적으로든 관리에 유용함을 가져다 준다.뭐 어떻게 좋냐고모듈화, 각 다른 역할을 수행하는 소스 파일로 분리 할 수 있다.큰 프로그램을 모듈 단위로 나누면 독립적으로 배치된다. 링커 직전의 변환 단계에서 .o 파일들만 만들고, 링커는 최종적으로 이걸 합치면서 실행 파일을 만들게 된다.빌드 시간 최적화, 변경된 모듈만 컴파일하면 된다.링커는 변경된 부분만 반영하면서 전체 프로그램을 다시 만드는 역할을 한다.코드 재사용성, 유지보수앞이랑 좀 겹치긴 하는데, 수정이 필..