컴퓨터 시스템의 계층도
컴퓨터 시스템의 계층도는 위와 같습니다. 이에 대한 자세한 설명은 컴퓨터 구조에서 다루기 때문에 그냥 이런게 있구나 하고 넘어갑니다.
컴퓨터 하드웨어의 구조
컴퓨터 하드웨어의 구성요소는 아래와 같습니다.
-
Buses (버스)
-
I/O devices (입출력 장치)
-
Main Memory (주기억 장치)
-
Cache memory (캐쉬)
-
CPU (Central Processing Unit, 중앙처리장치)
※ 여기서 버스라는 것이 무엇이냐?
구성요소간의 정보교환 통로를 의미합니다
버스의 종류로는 입출력 버스가 있고 시스템 버스가 있는데 자세한 것은 생략하겠습니다...
프로세서
CPU의 본질은 계산입니다. 다음과 같은 요소로 구성되어 있습니다.
- ALU (Arithmetic and Logic Unit, 산술논리연산장치)
- Control Unit (제어장치)
- Register (레지스터)
- PC (Program Counter)
- 상태 레지스터
- 메모리 주소 레지스터
- 메모리 데이터 레지스터
- IP (Instruction Pointer, 명령 레지스터)
- General-Purpose Register (범용 레지스터)
각각의 자세한 설명 또한 컴퓨터 구조에서 다룹니다.
CPU의 주요기능은 다음과 같습니다.
- 기억장치로부터 명령/데이터 호출 및 저장
- 명령의 해석 (Control Unit)
- 명령의 실행 (ALU)
- 입출력 연산 (I/O)
Instruction Cycle (명령 주기)
1. fetch (인출): PC에 의거해 명령어를 가져옵니다.
2. decode (해독): 명령어를 해석해 제어 신호를 생성합니다.
3. execution (실행): 가져온 명령어를 실행합니다.
4. store (결과 저장): 실행 결과를 저장합니다.
Operating System
운영체제란?
- 응용 프로그램이 하드웨어를 효율적으로 사용할 수 있도록 도와주는 프로그램을 의미합니다.
목적
- 하드웨어의 추상화 (Hardware Abstraction)
- 시스템 인터페이스 추상화
운영체제의 관리대상
- Process
- Memory
- I/O devices
- 소프트웨어 자원 (파일 시스템, 라이브러리, 유틸리티)
컴파일 과정
부가설명 ))
Compiler에서는 소스코드를 기계어코드로 바꾸는 작업을 수행합니다.
Assembler의 처리 후 만들어진 "object 파일"은 실행이 불가능합니다.
Linker를 이용해 라이브러리 파일들을 가져와서 연결해야 비로소 실행이 가능한 프로그램이 되는 것입니다.
컴파일 과정을 이해하는 것은 매우 중요하다!
- 프로그램이 컴퓨터 내부에서 어떻게 처리되는지 이해할 수 있고
- 대규모 프로그램 개발 과정을 이해할 수 있고
- 프로그램 성능을 개선할 수 있고
- 링크시에 발생하는 에러를 이해할 수 있습니다.
변환된 프로그램의 실행
- linux shell에서 실행파일 이름을 치면 실행이 됩니다.
- 쉘은 우리가 입력한 파일 이름을 찾아 그것이 실행파일이면 프로그램을 로드해 실행합니다
- hello 프로그램이 실행되면서 결과가 화면에 출력되고
- 쉘은 다음 명령을 기다립니다.
컴퓨터의 구조
명령의 인식
프로그램의 로딩
여기서, I/O bridge에서 Memory bus를 통해 메인 메모리로 향하는 것을 DMA(Direct Memory Access)라고 부릅니다.
프로그램의 실행
요약
- 컴퓨터 시스템은 하드웨어, 시스템 소프트웨어, 응용 프로그램으로 구성됩니다.
- 프로그램은 변화합니다.
- 프로그램은 시스템 프로그램의 도움으로 하드웨어에서 실행될 수 있습니다.