Performance를 책정하는 방법
- Algorithm
- 얼마나 많은 operation을 실행했는가?
- Programming language, compiler, architecture
- 하나의 operation마다 얼마나 많은 기계어가 있는가?
- Processor and memory system
- instruction이 얼마나 빠르게 실행되는가?
- I/O system ( OS 포함 )
- I/O operation이 얼마나 빠르게 실행되는가?
프로그램 내부
Application software
HLL(High Level Language)로 작성된 소프트웨어를 말한다.
보통 우리가 사용하는 개발 언어를 사용하여 만든 프로그램을 일컫는다.
System software
- Compiler
- HLL로 작성된 코드를 기계어로 번역해주는 역할
- OS
- I/O operation 핸들링
- 메모리, 저장공간 관리
- task, sharing resource 스케쥴링
Hardware
Processor, memory, I/O controllers
Levels of Program Code
위에서 아래의 순으로 언어를 얻을 수 있다.
- High-level language
- 프로그램의 목적에 따라 언어를 선택한다.
productivity
와 portability를 제공한다.- 인간이 읽고 쓸 수 있으며 CPU / OS와 상관없이 사용 가능하다.
- 프로그래머가 보다
자연스러운 언어로 생각
할 수 있게 지원한다. - 프로그램의
유지보수성
을 향상시킨다. - 프로그램이 어디에서 개발되었는지 상관 없이
독립적
으로 사용될 수 있다.
- Assembly language
- HLL을 compile하여 얻을 수 있는 언어
- 문자로 명령들을 담고 있음
- Binary Machine Language
- assemble 과정을 통해 얻을 수 있는 언어
- 하드웨어가 이해할 수 있는 표현
- 즉 인간이 읽을 수 없다
- 이진수(1 / 0)로 표현됨
- instructions, data가 인코딩 되어있음
컴퓨터의 Components
User-interface devices | - Display
- keyboard
- mouse |
Storage devices | - Hard disk
- CD / DVD
- flash |
Network adapters | 다른 컴퓨터와 소통을 위함 |
Abstractions ( 추상화 )
- Abstraction은 더 유연할 수 있도록 도와준다.
- low-level의 디테일한 부분을 숨긴다.
- Instruction set architecture ( ISA )
- hareware / software interface
- Application binary interface
- ISA + system software 인터페이스
- 구현
- 기초적인 세부사항과 인터페이스
Computer Architecture란?
- 다양한 레벨의 추상화를 조정한 것
- 가장 중요한 추상화 중 하나는 hardware ↔ 낮은 레벨의 software 사이의 interface
- 그것을
instruction set architecture
이라 한다.