Reference :
- 컴퓨터 구조 및 설계 MIPS EDITION [6판] / David A. Patterson / 한빛에듀
- 건국대학교 컴퓨터구조 강의 / 박능수 교수님
- https://developbear.tistory.com/ (김베어의 개발일지)
응용 소프트웨어
상위 수준 언어로 적힌 소프트웨어
시스템 소프트웨어
응용 프로그램은 수백만 줄의 코드로 구성되지만, 컴퓨터 하드웨어는 단순한 저수준의 명령어만 실행 가능하다.
하드웨어와 응용 소프트웨어 사이에 일어나는 복잡한 과정을 추상화하기 위해
그 사이에는 여러 가지 시스템 소프트웨어가 존재하며, 그 종류로는 운영체제, 컴파일러, 로더, 어셈블러가 있다.
오늘날 모든 컴퓨터 시스템에서 중심이 되는 두 가지는 운영체제와 컴파일러이다.
- 컴파일러 (Compiler)
: 상위 수준 언어(high-level programming language)로 작성된 프로그램을 하드웨어가 실행할 수 있는 명령어, 어셈블리 언어(assembly language)로 번역하는 일을 한다.
컴파일러가 다르다면, 같은 상위 수준 언어에 대해서 다양한 기계어가 나올 수도 있다.
* 컴파일은 총 4가지의 과정을 거친다. (전처리 - 컴파일 - 어셈블 - 링크)
- 운영체제(OS, Operating System)
: 사용자 프로그램과 하드웨어 간의 인터페이스 역할
- 기본적 입출력 작업의 처리
- 보조기억장치 및 메모리 할당
- 컴퓨터를 동시에 사용하는 여러 응용들 간의 컴퓨터 공유 방법 제공
- 하드웨어 (가장 밑단)
프로세서, 메모리
상위 수준 언어에서 기계어까지
1. 상위 수준 언어 (High-level Language)
사람이 이해하기 쉽게 작성된 프로그래밍 언어로서, 저급(low-level)의 프로그래밍 언어보다 가독성이 높고 다루기 간단하다.
(ex. C, C++, Java)
컴파일러나 어셈블러는 상위 수준 언어 프로그램을 어떤 컴퓨터의 기계어로도 번역할 수 있기 때문에
프로그램을 개발한 기종과 상관없이 어느 컴퓨터에서든 실행이 가능하다. (machine non-dependent)
컴파일러(Compiler)가 상위 수준 언어를 어셈블리 언어로 번역하는데,
컴파일러의 종류는 다양하므로 상위 수준 언어와 어셈블리 언어와는 1 대 다 대응이다. (one-to-many)
2. 어셈블리 언어 (Assembly Language)
기계 명령어를 기호 형태로 표현한 것이다.
add A, B
컴퓨터가 수행할 명령어를 한 줄에 하나씩 작성해야 한다.
어셈블러(Assembler)가 어셈블리 언어를 기계어(이진 코드)로 번역한다.
같은 어셈블리어에는 같은 기계어가 만들어지며, 데이터 혹은 명령어로 해독된다.
3. 기계어 (Binary Machine Language)
이진수로 표현된 하드웨어 표현 방식의 언어이다.
1000110010100000
각 문자를 이진 자리 수(binary digit) 또는 비트(bit)라고 부른다.
명령어(instruction)는 컴퓨터 하드웨어가 이해하고 수행하는 명령이다.
위의 비트는 컴퓨터에게 두 숫자를 더하라는 명령이 된다.
저급 언어 컴퓨터 구조에 따라 사용하는 기계어가 달라진다. (machine dependent)
어셈블리 언어와 기계어는 1대 1 대응(one-to-one)이며, 기계어에 대응되어 만들어지는 어셈블리 언어도 각각 다르게 된다.
상위 수준 언어 (High-level language)의 장점
1. 프로그래머가 영어 단어와 수학 기호를 사용해서 자연스러운 언어로 생각할 수 있게되어 훨씬 읽기 좋은 모양이 된다
2. 프로그래머의 생산성을 높여 준다는 점이다
=> 어떤 아이디어를 표현하기 위해 필요한 문장 수가 적으므로 개발 기간이 단축됨 (간결성)
3. 프로그램을 개발한 기종과 상관없이 어느 컴퓨터에서는 실행이 가능하다는 점이다
=> 컴파일러나 어셈블러가 상위 수준 언어 프로그램을 어떤 컴퓨터의 기계어로도 번역할 수 있음
'컴퓨터 구조 > Ch1. 컴퓨터 추상화 및 관련 기술' 카테고리의 다른 글
6. 전력 장벽 (0) | 2023.03.28 |
---|---|
[Ch1. 컴퓨터 추상화 및 관련 기술] 5. 성능 *중요* (2) | 2023.03.15 |
[Ch1. 컴퓨터 추상화 및 관련 기술] 4. 케이스를 열고 (0) | 2023.03.15 |
[Ch1. 컴퓨터 추상화 및 관련 기술] 2. 컴퓨터 구조 분야의 일곱 가지 위대한 아이디어 (0) | 2023.03.15 |
[Ch1. 컴퓨터 추상화 및 관련 기술] 1. 서론 (0) | 2023.03.13 |