CS/OS11 프로세스와 컴파일 과정 프로세스와 컴파일 과정 이번 포스팅에서는 소스코드가 어떠한 과정을 거쳐 프로세스, 즉 실행가능한 파일이 되는지 설명해 보겠습니다. 컴파일 과정 전처리 첫 번째로 소스코드는 전처리 과정을 통해 주석들이 제거되고 헤더파일을 병합합니다. C언어에서 주로 사용하는 #include 같은 전처리문은 stdio.h 헤더파일을 선언한 소스코드 파일에 포함시킨다는 의미입니다. #include를 말고도 다양한 전처리문을 처리해주는 과정입니다. 컴파일러 오류 처리, 코드 최적화 작업을 하며 중간코드인 어셈블리어로 변환합니다 어셈블러 어셈블리어로 이루어진 코드를 .obj 형태에 목적코드로 변환합니다. 링커 마지막 단계입니다. 프로그램 내에 있는 라이브러리 함수 또는 다른 파일들과 목적 코드를 결합하여 실행 파일을 만듭니다. .. 2023. 2. 25. 메모리 할당 메모리 할당 메모리에 프로그램을 할당할 때 어떤 방법으로 할당되는지 알아보겠습니다. 연속 할당 고정 분할 방식 메모리를 미리 나누어 관리합니다. 내부 단편화, 외부 단편화가 발생합니다. 가변 분할 방식 매 시점 프로그램의 크기에 맞게 동적으로 메모리를 할당합니다. 외부 단편화가 발생합니다. 불연속 할당 페이징 동일한 크기의 페이지 단위로 나누어 메모리의 서로 다른 위치에 프로세스를 할당합니다. 메모리의 크기가 페이지로 딱 나누어지지 않기에 메모리의 마지막 영역에 내부 단편화가 발생합니다. 세그멘테이션 페이지 단위가 아닌 의미 단위인 세그먼트로 나눕니다. 의미는 코드와 데이터 등으로 나눌 수 있으며 함수 단위로 나눌 수도 있습니다. 중요한 부분과 중요하지 않은 부분을 분리하여 저장할 수 있어 보안 측면에서.. 2023. 2. 13. 가상 메모리 - 페이지 교체 알고리즘 페이지 교체 알고리즘 가상 메모리란 프로세스를 실행할 때 실행에 필요한 일부(페이지)만 메모리에 로드하고 나머지는 디스크에 둠으로써 컴퓨터가 실제로 이용 가능한 메모리 자원을 매우 큰 메모리로 보이게 만드는 기법입니다. https://kdgdev.tistory.com/18 자세한 내용은 위 링크에 있습니다. 핵심은 프로세스의 전부를 메모리에 올려 두는 게 아닌 프로세스를 페이지로 나누어 필요한 페이지만 메모리에 올려놓는 것입니다. 여기서 사용하지 않는 페이지는 보조기억장치에 보관해 두었다가 필요할 때 주기억장치에 올려놓는 것이 가상메모리가 사용하는 '스와핑'이란 기법입니다. 자, 그런데 여기서 가상메모리에서 '스와핑'은 많이 일어나서는 안됩니다. CPU에서 필요한 페이지 요청 -> TLB확인 -> 주기억.. 2023. 2. 12. 가상 메모리 가상 메모리 가상 메모리란 프로세스를 실행할 때 실행에 필요한 일부(페이지)만 메모리에 로드하고 나머지는 디스크에 둠으로써 컴퓨터가 실제로 이용 가능한 메모리 자원을 매우 큰 메모리로 보이게 만드는 기법입니다. 가상 메모리는 TLB와 Page Table를 통해 필요한 페이지에 접근합니다. TLB은 가장 최근에 접근한 페이지의 가상주소와 물리주소, 페이지 테이블은 각각의 프로세스마다 프로세스가 가진 모든 페이지의 가상주소와 물리주소가 존재합니다. TLB(Translation Lookaside Buffer) 메모리와 CPU 사이에 있는 주소 변환을 위한 캐시입니다. Page Table에 있는 리스트 중 일부를 보관하며 CPU가 페이지 테이블까지 가지 않도록 해 속도를 향상할 수 있는 캐시 계층입니다. Pag.. 2023. 2. 11. 이전 1 2 3 다음