분류 전체보기

[CSAPP] 7.6 Symbol Resolutions(심볼 해석)
학습 주제 정리한 내용 심볼 해석은 링커가 입력으로 들어오는 재배치 가능 오브젝트 파일들의 심볼 테이블 정보를 바탕으로 각각의 심볼 참조를 정확하게 하나의 심볼 정의에 연결시키는 작업을 뜻한다. 심볼 정의란 곧 해당 심볼을 정의하는 심볼 테이블 엔트리를 의미하며, 심볼 참조란 코드 상에서 해당 심볼을 참조하는 부분을 의미한다. 링커는 자신의 입력 재배치 가능 목적파일들의 심볼 테이블로부터 정확히 한 개의 심볼 정의에 각 참조를 연결시켜 심볼 참조를 해석한다. 지역 심볼의 경우 컴파일러는 모듈당 단 하나의 지역 심볼 정의만을 허용한다. 지역 링커 심볼들을 갖게 되는 정적 지역 변수들이 유일한 이름을 갖도록 보장 전역 심볼의 경우, 컴파일러가 현재 모듈에 정의되지 않은 심볼을 만나면, 이 심볼이 다른 모듈에..

[운동 기록] 2023-02-20(가슴,등,팔)
자세 교정 및 다이어트 기간(2월 말까지) - 구력 2년~3년 - 중량 낮춰서 자세 교정 중 - 천천히 자극에 집중하며 수행 - 2분할 진행 중 2023-02-20 운동 기록(1시간 30분) 가슴 - 딥스10reps x 6set - 벤치프레스 50kg x 10reps x 2set, 60kg x 10reps x 2set, 65kg x 10reps x 2set - 버터플라이 25kg x 15reps x 6set 등 - 풀업 10reps x 6set - 티바로우 35kg x 10reps x 4set, 37.5kg x 10reps x 2set - 머신 미들로우 65kg x 10reps x 2set, 75kg x 10reps x 1set, 70kg x 10reps x 3set 팔 - 바벨 컬 30kg x 10re..

[CSAPP] 7.12 Position-Independent Code (PIC)(위치 독립성 코드)
7.12 Position-Independent Code (PIC)(위치 독립성 코드) 공유 라이브러리의 주요 목적은 실행 중인 여러 프로세스가 메모리에서 동일한 라이브러리 코드를 공유하여 귀중한 메모리 공간을 절약할 수 있도록 하는 것이다. 그렇다면 어떻게 여러 프로세스가 프로그램의 단일 복사본을 공유할 수 있을까? 한 가지 접근 방법은 사전에 각 공유 라이브러리에 대한 주소 공간의 특정 chunk를 할당한 다음에 loader가 항상 해당 주소에서 라이브러리를 load하도록 요구하는 것이다. 간단하지만 이 접근 방식은 몇 가지 심각한 문제를 야기한다. 프로세스가 라이브러리를 사용하지 않더라도 공간의 일부가 할당되기 때문에 주소 공간을 비효율적으로 활용한다. 주소 공간을 관리하기도 어렵게 된다. 라이브러리..

[CSAPP] 7.11 Loading and Linking Shared Libraries from Applications (응용 프로그램으로부터 공유 라이브러리를 로드하고 링크하기)
7.11 Loading and Linking Shared Libraries from Applications (응용 프로그램으로부터 공유 라이브러리를 로드하고 링크하기) 지금까지는 응용 프로그램이 로드될 때 , 실행 직전에 dynamic linker가 공유 라이브러리를 load하고 link하는 과정에 대해 설명했다. 그러나 compile-time에 해당 라이브러리에 대해 응용 프로그램을 링크할 필요 없이. 응용 프로그램이 실행되는 동안 Dynamic linker에 임의 공유 라이브러리를 load하고 link하도록 요청할 수 있다. 이에 대한 세 가지 예시는 아래와 같다. 소프트웨어 배포(distributing software): MS 응용 프로그램 개발자는 공유 라이브러리를 자주 사용하여 소프트웨어 업데이..

[CSAPP] 7.10 Dynamic Linking with Shared Libraries(공유 라이브러리 동적 링크)
7.10 Dynamic Linking with Shared Libraries(공유 라이브러리 동적 링크) 정적 라이브러리(static library) 단점 정적 라이브러리는 주기적으로 유지 관리하고 업데이트해야 한다. 최신 버전 정적 라이브러리를 이용하고 싶으면 프로그래머가 프로그램을 업데이트된 라이브러리를 다시 link 해줘야한다. C언어에서 printf, scanf와 같이 표준I/O는 run-time 동안 실행 중인 각 프로세스의 text segement에 복사된다. 이는 수백 개의 프로세스를 실행하는 일반적인 시스템에서 자원의 상당한 낭비를 야기한다. 공유 라이브러리(shared library) 공유 라이브러리(shared library)는 정적 라이브러리의 위와 같은 단점을 해결하는 혁신적인 최신..