CS 16

최성원·2022년 2월 7일
0

CS

목록 보기
16/16

Day-16

5장 컴퓨터 아키텍처와 운영체제

-컴퓨터는 어떻게 프로그램과 메모리를 관 리할까

8. 메모리상의 데이터 배치

  • 메모리에는 명령어와 데이터가 존재한다.
  • 데이터는 정적 데이터와 동적 데이터로 구분할 수 있다.
  • 정적데이터는 프로그램 만들 때 크기를 알 수 있는 데이터들이고 동적 데이터는 프로그램 실행
    전까지는 크기를 알 수 없는 데이터이다.

크기 고정
text 섹션: 실행 코드
data: 전역변수

동적으로 크기 변경
heap: 프로그램 실행중 동적으로 할당되는 메모리
stack: 함수를 호출할 때 임시 데이터 저장 장소(함수 매개변수, 복귀 주소 및 지역 변수)

  • 진입점: 프로그램의 첫 번째 명령어가 위치한 주소.
  • 런타임 라이브러리: 메모리 설정을 책임지는 라이브러리로 프로그램의 스택과 힙영역을 설정하고 정적 데이터의 초깃값도 설정한다.
    프로그램 메모리의 여러가지 환경설정을 하는 라이브러리로 이해하면 된다.
    프로그램이 하나로 합쳐질때 자동으로 추가된다.
  • 실제 프로그램이 실행될 때는 가장 먼저 실행되는 명령어가 런타임 라이브러리의 명령어이고
    그 다음으로 진입점의 명령어가 실행된다.
  • 힙과 스택을 서로 충돌하지 않게 하는 것이 중요하다.

9. 프로그램 실행

  • 어떤 함수는 여러 프로그램에서 쓸 만큼 유용한 경우가 존재한다.

  • 이런 함수를 프로그램 만들 때마다 매번 새로 작성하기 보다는 관련 함수를 한데 모아서
    라이브러리로 만들면 프로그램 작성시 편하다.

  • 또한 프로그램을 전부 한 파일에 저장하기 보다는 여러 파일로 나누는 것이
    동시개발을 가능하게 해줘 편하다.

  • 링커: 여러 조각으로 나눠진 프로그램 조각들을 하나로 엮는 프로그램.

  • 정적 링크: 라이브러리를 파일로 간주하여 프로그램에서 함수를 사용할때마다
    각자 직접 연결해 실행파일을 만드는 링크방식.

  • 이러한 정적링크 방식은 같은 라이브러리 코드가 여러 실행 파일(프로그램)에 반복적으로
    들어가서 귀중한 메모리를 낭비한다는 단점이 존재한다.

  • 동적 링크: 공유 라이브러리를 사용하는 링크방식으로 MMU(메모리 관리 장치)가
    여러 프로그램이 같은 라이브러리를 공유할 수 있도록 한다.

10. 메모리 전력 소비

  • 데이터를 메모리에서 이리저리 옮기려면 전력이 소비된다.
  • 전력 소비와 성능 사이의 균형을 잡는 일은 아주 어렵지만 중요한 작업이다.
profile
각성구

0개의 댓글