농담곰담곰이의곰담농

CSAP ch 1 컴퓨터 시스템으로의 여행 1 . 1 ~ 1 . 3

by 브이담곰

1.1 정보는 비트와 컨텍스트로 이루어진다.

1.1 정보는 비트와 컨텍스트로 이루어진다.

 

소스 프로그램 : 0 또는 1로 표시되는 비트들의 연속. ( 바이트 = 8비트 단위로 구성 )

각 바이트는 프로그램의 텍스트 문자를 나타낸다.

 

text file(텍스트 파일) 아스키 문자들로 이루어진 파일
binary file(바이너리 파일) 다른 모든 파일들

 

모든 시스템의 정보는 비트들로 표시 된다.

👉 서로 다른 객체들을 구별하는 방법 = 컨텍스트에 의한 구분

 

C 프로그래밍 언어의 기원
1. 유닉스를 위한 시스템 프로그래밍 언어로 개발
2. 작고 간단한 언어
3. 실용적 목적으로 설계
4. 시스템 수준 프로그래밍을 위해 선택된 언어

1.2 프로그램은 다른 프로그램에 의해 다른 형태로 번역된다.

1.2 프로그램은 다른 프로그램에 의해 다른 형태로 번역된다.

1. 전처리 단계

   - # 문자로 시작하는 directive에 따라 수정.

    #include<stdio.h> : 전처리기에게 시스템 헤더파일인 stdio.h를 프로그램 문장에 직접 삽입 지시

 

2. 컴파일 단계

    - hello.i 를 hello.s 로 변역.

    - 어셈블리어 프로그램이 저장됨. -> 기계어 명령어텍스트 형태로 나타냄

어셈블리어 : 여러 고급 언어의 컴파일러들을 위한 공통 출력 언어 제공.

 

3. 어셈블리 단계

   - hello.s -> hello.o

   - 이전 단계( 파일에 어셈블리어 프로그램 저장 )에 추가된 어셈블러(as)가 hello.s를 기계어로 이루어진 명령어로 번역.

   - 재배치 가능한 목적 프로그램 형태로 묶은 후 hello.o 목적 파일에 결과 저장.

hello.o = binary file

 

4. 링크 단계

    - 다른 목적파일들과 라이브러리들을 링커 프로그램이 통합함.

    - hello.o 는 실행가능 목적파일(실행 파일)로 메모리에 적재 후 시스템에 의해 실행.

 

1.3 컴파일 시스템이 어떻게 동작하는지 이해하는 것은 중요하다.

1.3 컴파일 시스템이 어떻게 동작하는지 이해하는 것은 중요하다.

 

1. 프로그램 성능 최적화 하기

while vs for

switch vs if else

2. 링크 에러 이해하기

정적 변수 vs 전역 변수

3. 보안 약점 피하기

버퍼 오버 플로우 문제 

블로그의 정보

농담곰담곰이의곰담농

브이담곰

활동하기