Malloc-lab 메모리 구조 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(load)되어야 한다. 또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요하다. 코드(code) 영역 메모리의 코드(code) 영역은 실행할 프로그램의 코드가 저장되는 영역이다. CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리한다. 데이터(data) 영역 메모리의 데이터(data) 영역은 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역이다. 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다. 스택(stack) 영역 메모리의 스택(stack) 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영
0. 서론 컴퓨터는 데이터를 처리하고, 메모리를 관리하고, 저장장치에 데이터를 읽거나 쓰고, 네트워크를 통해 통신하는 등의 하위 동작들을 인코딩한 연속된 바이트인 기계어 코드를 실행한다. 컴파일러는 프로그램 언어의 규칙, 대상 컴퓨터의 인스트럭션 집합, 운영체제의 관례 등에 따라 기계어 코드를 생성한다. 어셈블러 코드로 프로그램을 짤 때는 프로그래머가 계산을 하기 위해 사용해야 하는 저급 인스트럭션들을 명시해야 한다. 기계어 코드를 배우면 컴파일러의 최적화 성능을 알 수 있으며, 코드에 내제된 비효율성을 분석할 수 있다. 이 장은 X86-64에 기초하고 있다. 1. 역사적 관점 x86이라고 불리는 Intel 프로세서 라인은 긴 발전적인 개발이 있었다. 높은 성능과 더 발전된 운영체제를 지원하기 위한 요구에 맞게 기술적인 향상에 이점을 띄었다. 무어의 법칙(Moore's Law) 반도체칩 기술의 발전속도에 관한 것으로, 반
1.7 운영체제는 하드웨어를 관리한다 앞에서 보았던 hello.c 코드이다. 쉘 프로그램이 hello 프로그램을 로드하고 실행했을 때와 hello 프로그램이 메시지를 출력할 때, 프로그램이 키보드나 디스플레이, 디스크나 메인 메모리를 직접 엑세스하지 않았다. 오히려 운영체제가 제공하는 서비스를 활용한다. 응용프로그램이 하드웨어를 제어하려면 언제나 운영체제를 통해서 해야 한다. 1.7.1 Processes hello 프로그램이 현대 시스템에서 작동하면, 운영체제는 프로그램이 실행되는 유일한 프로그램이라는 착각을 불러 일으킨다. 프로그램의 코드와 데이터는 시스템 메모리에 유일한 오브젝트가 있는 것처럼 보인다. 이러한
0. 서론 컴퓨터 시스템은 하드웨어와 시스템 소프트웨어로 구성되며, 이들이 함께 작동하여 응용프로그램을 실행한다. 1. 컴퓨터 시스템 소개 1.1 정보는 비트와 컨텍스트로 이루어진다 hello 프로그램은 프로그래머가 에디터로 작성한 소스 프로그램(또는 소스파일)으로 생명을 시작하며, hello.c라는 텍스트 파일로 저장된다. 소스 프로그램은 0 또는 1로 표시되는 비트들의 연속이며, 바이트라는 8비트 단위로 구성된다. 각 바이트는 프로그램의 텍스트 문자를 나타낸다. 대부분의 컴퓨터 시스템은 텍스트 문자를 아스키(ASCII) 표준을 사용하여 표시한다. hello.c처럼 오로지 아스키 문자들로만 이루어진 파일들은 텍스트 파일이라고 부른다. 다른 모든 파일들은 바이너리 파일이라고 한다. 1.2 프로그램은 다른
Computer Systems (Programmer's Perspective 3 Edition) - Randal E. Bryant 앞으로의 컴퓨터 시스템, 이하 CSAPP 정리글은 위의 책으로 진행한다.