Computer Structure 9

컴퓨터 시스템에서의 정보 이동

컴퓨터 시스템은 정보의 이동에 많은 시간을 소비 그러므로 컴퓨터 시스템에서 이들 이동(복사) 과정을 빠르게 처리하는 것이 중요하다. 레지스터와 메모리 - 프로세서의 레지스터는 작은 용량(수백 바이트)를 저장하지만 메인 메모리보다 100배 이상 빠름 - 메인 메모리는 많은 용량(GB급)을 저장하지만 느림 - 프로세서와 메모리 간의 속도 격차는 지속적으로 증가 프로세서-메모리 간의 격차에 대응하기 위해 작고 빠른 캐시메모리를 고안하여 프로세서가 단기간에 사용할 가능성이 높은 정보를 저장 프로그램이 특정 영역의 코드와 데이터를 참조하는 경향인 지역성을 활용하여 메모리 계층 구조를 설계 - 자주 참조할 가능성이 높은 데이터나 코드를 작고 빠른 저장장치(캐시)에 저장하여 접근

컴퓨터 시스템 하드웨어 구성(p.26쪽 그림과 함께 참고)

1. 버스 - 하드웨어 구성 요소들 간의 정보를 전달하는 배선 - 일반적으로 워드(word) 단위라는 고정된 크기의 바이트들 단위로 전송 2. 입출력 장치 - 컴퓨터 시스템과 외부 장치와의 연결을 담당 - 키보드, 디스플레이, 디스크 드라이브 등과 연결 - 입출력 장치는 입출력 버스, 컨트롤러(controller), 어댑터(adaptor)등을 통해 연결 cf.디스크 드라이브란? 디스크에 자료를 기록하고, 기록된 자료를 읽어들이는 장치이다. 디스크 기억장치(disk storage)라고도 한다. 하드 디스크, 플로피 디스크를 예로 들 수 있다. 3. 메인 메모리(Main Memory) - 실행되는 프로그램의 데이터와 프로그램이 저장 - 물리적으로 DRAM 칩으로 구성되고, 논리적으로는 연속된 바이트의 배열로..

컴파일 시스템 동작 이해

프로그램 성능 최적화하기 - 성능이 최적화된 효율적인 프로그램 작성을 위해 기계어 수준 코드에 대한 기본적인 이해 필요 링크 에러 이해하기 - 대규모 소프트웨어 시스템 빌드 시 발생하는 링커의 동작과 관련된 프로그래밍 에러 이해 보안 약점 피하기 - 안전한 프로그래밍을 위해 스택에 데이터와 제어 정보가 저장되는 방식의 이해가 필요

컴파일 시스템(Compile System)

전처리(preprocess)단계 - 전처리기(cpp)는 소스 C 프로그램의 #지시어(directive)에 따라 처리 - hello.c의 #include 지시어는 전처리기에게 시스템 헤더파일 stdio.h의 삽입을 지시 - 삽입된 처리 결과는 hello.i로 생성 컴파일(compile) 단계 - 컴파일러(cc1)는 hello.i를 어셈블리어 프로그램으로 변환하여 hello.s 를 생성 - 아래에서 각 줄이 한 개의 저수준 어셈블리 명령어를 텍스트 형태로 표시 어셈블리(assembly) 단계 - 어셈블러(as)가 어셈블리 명령어를 기계어 명령어(코드)로 변환 - 메모리에 재배치 가능한 프로그램(relocatable program) 형태의 hello.o 의 목적 파일 생성 - main 함수의 기게어 명령어를 ..

기계어 변환

C소스 프로그램은 컴파일러에 의해 기계명령어(Machine Instruction)으로 변환되어 실행 - 변환된 프로그램은 실행 가능한 목적 프로그램(object program, 또는 목적파일)로 디스크 파일에 저장 - 컴파일러는 소스파일을 실행가능한 목적 파일로 번역 리눅스의 GCC컴파일러 란? GNU컴파일러 모음(GNU Compiler Collection 줄여서 gcc)는 GNU 프로젝트의 일환으로 개발되어 널리 쓰이고 있는 컴파일러이다. 자유 소프트웨어 중에 가장 잘 알려진 것들 중 하나인 GCC는 원래 C만을 지원했던 컴파일러로 이름도 "GNU C컴파일러"였다. 이러한 까닭에 현재에도 GCC는 GNU컴파일러 모음의 일부인 GNU C컴파일러의 줄임말로 쓰이기도 한다. GCC컴파일 시스템은 네단계 수행..

소스 프로그램

프로그래머가 작성한 소스 프로그램(또는 소스 파일)은 텍스트 파일(text file)로 저장 1. 텍스트 문자는 아스키코드로 저장 - 컴퓨터는 1,0 만을 저장하므로 문자는 미리 정의된 2진 비트(코드)로 표현 2. 한글의 경우는 유니코드로 저장 컴퓨터 시스템 내부의 정보 (디스크 파일, 메모리상의 데이터)는 모두 동일하게 비트로 표시 - 해석하는 내용(context)에 의해 구분 - 정수, 부동소수, 문자열 ASCII코드 - American Standard Code for Information Interchange - 미국에서 표준화한 정보교환용 7비트 부호체계 - 000부터 127까지 총 128개의 부호가 사용 - 1영문/숫자 1글자는 1바이트 - 컴퓨터 초창기부터 사용되어 왔기에, 호환성이 아주 좋..

Processor VS Process

프로세서는 : 하드웨어 측면에서 "컴퓨터 내에서 프로그램을 수행하는 하드웨어 유닛"이다. 이는 중앙처리장치(Central Processing Unit)을 뜻하며 폰노이만 아키텍쳐에 의해 만들어졌다면 적어도 하나 이상의 ALU(Arithmetic Logic Unit)와 레지스터를 내장하고 있어야 한다. cf. 중앙처리장치 : 또는 CPU(Central Process Unit)는 컴퓨터 시스템을 통제하고 프로그램의 연산을 실행하는 가장 핵심적인 컴퓨터의 제어 장치, 혹은 그 기능을 내장한 칩을 말한다. 컴퓨터 안의 중앙처리 장치는 외부에서 정보를 입력받고, 기억하고, 컴퓨터 프로그램의 명령어를 해석하여 연산하고, 외부로 출력하는 역할을 한다. 따라서 중앙처리장치는 컴퓨터 부부품과 정보를 교환하면서 컴퓨터 시..