목차
컴퓨터 시스템의 계층도
컴퓨터 하드웨어의 구조
- 하드웨어 구성요소
버스 buses
입출력 장치 I/O devices
주기억장치 main memory
캐쉬 cache memory
중앙처리장치 CPU
버스 : 구성요소간의 정보교환 통로
- 종류 : 입출력버스, 시스템버스
프로세서
중앙처리장치 Central Processing Unit CPU
- 산술논리연산장치 : arithmetic and logic unit ALU
- 제어장치 : Control unit
- 레지스터
프로그램 카운터 PC
상태 레지스터
메모리 주소 레지스터
메모리 데이터 레지스터
명령 레지스터 instruction pointer IP
범용 레지스터 general-purpose register
CPU
- 주요 기능 : 기억장치로부터 명령/데이터 호출 및 저장
명령 해석 - 제어장치 / 명령 실행 - ALU / 입출력 연산 - I/O
- 명령 주기 Instruction cycle
인출 fetch : PC에 의거하여 명령어를 가져옴
해독 decode : 명령어를 해석하여 제어 신호 생성
실행 execution : 가져온 명령어를 실행
결과저장 store : 실행 결과 저장
운영체제 Operating System : 응용프로그램이 하드웨어를 효율적으로 사용할 수 있도록 도와주는 프로그램
- 목적 : 하드웨어 추상화, 시스템 인터페이스 추상화
- 운영체제의 관리대상 : 프로세스, 메모리, 입출력장치, 소프트웨어 자원(파일시스템, 라이브러리, 유틸리티)
hello.c 컴파일 과정 (unix -> gcc -o hello hello.c)
#include <stdio.h>
int main()
{
printf("hello, world\n");
}
컴파일 과정을 이해하는 것의 중요성
- 프로그램이 컴퓨터 내부에서 어떻게 처리되는지 이해할 수 있다
- 대규모 프로그램 개발 과정을 이해할 수 있다
- 프로그램 성능을 개선할 수 있다
- 링크시에 발생하는 에러를 이해할 수 있다
변환된 프로그램 실행
cesl-linux> ./hello
hello, world
cesl-linux>
리눅스 쉘에서 실행파일 이름을 치면 실행됨
- 쉘이 여러분이 입력한 파일 이름을 찾아서, 그것이 실행파일이면 프로그램을 로드하여 실행함
- hello 프로그램이 실행되면서 결과가 화면에 출력됨.
- 쉘이 다음 명령을 기다리고 있음
컴퓨터의 구조
hello 명령의 인식
hello 프로그램의 로딩
hello 프로그램의 실행