CSAPP 1.3~ 1.4

hodeethelion·2023년 3월 21일
0

CSAPP

목록 보기
3/6

1.3 어떻게 컴파일 시스템이 동작하는 지 알아야 하는 이유

프로그램 성능 최적화하기

컴파일러가 어떻게 C 문장들을 기계어 코드로 번역하는가?

  • switch문은 if else 문을 연속해서 사용하는 것보다 얼마나 효율적?
  • 오버헤드는 얼마나 되는가? 부가적인 B처리
  • while루프가 for 보다 얼마나 효율적인가?
  • 포인터 참조가 왜 인덱스보다 효율적인가?
  • 합계를 지역변수 저장보다 참조형태로 받은 것 보다 왜 빨리 실행 되는가?
  • 괄호 재배치만 해도 왜 더 빨리 실행 되는가?

링크 에러 이해하기

  • 큰 규모의 소프트웨어 시스템을 빌드 할려는 경우
  • 링커가 참조를 풀어낼 수 없다? 무슨 뜻인가?
  • 정적변수와 전역변수의 차이는 ?
  • 다른 파일에 동일한 이름의 전역변수를 정의하면 무슨 일 ?
  • 정적 라이브러리, 동적 라이브러리의 차이는?

보안 약점 피하기

  • 버퍼 오버플로우 취약성, 신뢰할 수 없는 곳에서 데이터의 양과 형태를 깊게 제한해야한다
  • 프로그램 스택에 데이터와 제어정보가 저장 되는 방식 때문에 생기는 영향

1.4 프로세서는 메모리에 저장된 인스트럭션을 읽고 해석한다

쉘에 인터프리터로 프롬프트를 출력 --> 명령어 라인 입력 --> 명령 실행

1.4.1 시스템의 하드웨어 조직

  • 버스: 전기적 배선군을 버스, 바이트 정보를 전송! 일반적으로 워드 크기 단위를 즉 16bit 엇 근데 이것은 시스템마다 다르기 때문에 4바이트 32bit 혹은 8 바이트 64bit 가 대부분이다.

  • 입출력 장치: 입력용키보드 /마우스 /출력용 디스플레이/ 디스크 드라이브
    컨트롤러나 어댑터를 통해서 연결 --> 패키징차이 이다

컨트롤러: 디바이스 자체가 칩셋, 머더보드에 장착
어댑터: 머더보드 슬롯에 장착되는 카드

  • 메인 메모리: 프로그램 실행중 데이터, 프로그램을 저장하는 임시 저장장치
    DRAM 칩, 연속적인 바이트 배열 0부터 시작해서 각자 고유의 주소가 있다

  • 프로세서: 메인 메모리에 저장된 인스트럭션을 해독. 워드 크기의 저장장치인 PC가 존재한다.

  1. 메인 메모리에 hello 파일을 로딩
  2. DMA라는 접근은 디스크에서 메인 메모리로 직접 이동
  3. main 루틴의 기계어 인스트럭션을 실행
profile
가슴을 따라가자

0개의 댓글

관련 채용 정보