Computer Science

    [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)는 정적 라이브러리의 위와 같은 단점을 해결하는 혁신적인 최신..

    [CSAPP] 7.5 Symbols and Symbol Tables(심볼과 심볼테이블)

    학습 주제 symbol과 symbol table, 그리고 항목은 어떤 타입으로 되어 있고, 어떻게 저장되는지를 학습했다. 정리한 내용 7.5 Symbols and Symbol Tables(심볼과 심볼테이블) 각 relocatable object module m은 m에 의해 정의되고 참조되는 symbol들에 대한 정보를 가지는 symbol table이 있다. linker의 입장에서 봤을 때, 이들은 3가지 종류로 나뉜다. 3가지 종류의 symbol global symbols - module m에서 정의되었고, 다른 모듈에서 참조 가능한 것 non-static 함수나 non-static 전역 변수를 말한다. global symbols - 다른 모듈에서 정의되었고, 모듈 m에서 참조되는 것 externals라..

    [CSAPP] 7.4 Relocatable Object Files(재배치 가능 목적 파일)

    학습 주제 Relocatable Object file에 대한 ELF 형식에서 어떠한 내용들이 담겨있는지를 학습했다. 정리한 내용 7.4 Relocatable Object Files(재배치 가능 목적 파일) 전형적인 ELF relocatable object file을 보여주고 있다. 이 그림을 통해 Relocatable object file에 무엇이 있는지를 살펴보자. 1. ELF header object file은 16-byte의 ELF header를 통해 시작하고 있다. 16-byte sequence가 담는 정보 : 현재 system의 word size와 byte-ordering(endian관련)에 대한 정보가 담겨 있다. 헤더의 나머지 부분 : linker가 이 object file을 parsing하..

    [CSAPP] 7.3 Object Files(목적 파일)

    학습 주제 Object File의 3가지 종류와 여러 system에 따른 Object file format에 대해 학습했다. 정리한 내용 7.3 Object Files(목적 파일) 위에서 언급되왔던 object file에 대해서 알아볼 것이다. 세가지 형식의 object files Relocatable object file binary code와 data를 포함 executable object file을 생성하기 위해, compile time때 다른 relocatable object file과 결합될 수 있는 형식이다. Executable object file binary code와 data를 포함 memory에 바로 복사될 수 있다. 실행 가능하다. shared object file relocatabl..

    [CSAPP] 7.2 Static Linking(정적연결)

    학습 주제 linking 중 static linking이라는 것을 학습했다. 정리한 내용 7.2 Static Linking(정적연결) static linking이란? relocatable object file들과 command-line에서의 인자들을 입력으로 받아서, 완전히 link된 object file들을 생성하는 것을 말한다. 그럼 지금까지 나온 relocatable object file 이란 뭘까? → 이건 바로 아래 7.3에서 살펴볼 것이다. 여기서는 실행 가능한 file로 build하기 위해서 linker가 수행해야 하는 두가지 작업에 대해 알아보자. Step1. Symbol resolution object file들은 여러 symbol들을 정의하고 또한 참조하기도 한다. 여기서의 symbol..