일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Dijkstra
- binary search
- Hash
- DP
- String
- MYSQL
- union find
- two pointer
- SQL
- 그래프
- Two Points
- 다익스트라
- 스토어드 프로시저
- Trie
- Stored Procedure
- Brute Force
- 이진탐색
- Today
- Total
codingfarm
1. 컴퓨터 구조에 대한 첫 번째 이야기 본문
시스템 프로그램
$\bullet$ 컴퓨터 시스템을 동작(파일 복사, 이동, 삭제...) 시키는 프로그램
ex)windows나 unix 등의 운영체제들
$\bullet$ 하드웨어를 사용할 수 있도록 도와주는 프로그램
컴퓨터 시스템의 구성 요소
컴퓨터 하드웨어의 구성
CPU(Central Processing Unit)
$\bullet$ 중앙 처리 장치
$\bullet$ 연산을 담당
$\bullet$ 컴퓨터 프로그램 실행에서 핵심적인 역할을 담당한다.
메인 메모리(main memory)
$\bullet$ 램(RAM) 이라는 저장장치로 구성됨
$\bullet$ 컴파일이 완료된 프로그램 코드 binary code 형태로 올라가서 실행되는 영역
하드디스크 | 메인메모리 |
자료저장 | 프로그램의 실행이 주목적 |
입$\cdot$출력 버스(Input/ Output Bus)
$\bullet$ 컴퓨터를 구성하는 요소 사이에서 데이터를 주고받기 위해서 사용되는 경로
$\bullet$ 주고받는 데이터의 종류와 역할에 따라 여러개노 나뉨
-address bus, data bus, control bus
CPU에 대한 이해
ALU(Arithmetic Logic Unit)
$\bullet$ 연산을 진행하는 주체이다
$\bullet$ 산술연산(덧셈, 뺄셈)과 논리연산(AND, OR)을 한다.
Control Unit
$\bullet$ CPU가 처리한 binary code로 된 명령어들을 해석한다.
$\bullet$ 해석된 코드를 CPU 내부의 다른 브록으로 보낸다.(주로 ALU로 보낸다.)
-실행파일에는 CPU에게 일을 시키기 위한 명령어들이 binary code로 저장되어있다.
-ALU는 binary code를 읽을 수 없으므로 control unit이 명령어를 해석해 준다.
Register Set
$\bullet$ CPU 내부에 존재하는 Binary Data의 저장을 위한 장치이다.
$\bullet$ CPU 내부에 존재하는 아주 작은 메모리이다.
$\bullet$ CPU 내부에 들어온 명령어를 ALU와 Control Unit 으로 보내기 전에 임시로 저장한다.
ex) CPU 내부로 덧셈 명령어와 피연산자 5와 9가 왔다.
덧셈 명령어는 Control Unit으로 보내고 피연산자 5와 9는 ALU로 보내는데
ALU가 이미 계산중이고 Control Unit은 이미 해석중일때
Register 로 보내서 임시로 저장시킨다.
$\bullet$ 종류
1) IR(Instruction Regster)
-명령어를 CPU안에 가져다 놓을 때 임시로 저장하는 부분
2) PC(Program Counter)
-순차적으로 메모리로부터 명령어를 가져올 때 다음에 가져올 명령어가 어디에 존재하는지 메모리의 주소를 기억하는 용도로 사용된다.
Bus Inteface
$\bullet$ CPU, Hard Disk, RAM, Sound Card 등의 독립적인 장치들이 데이터를 주고받기 위해 필요한 매개체가 I/O bus 이다.
$\bullet$ CPU 내에는 I/O bus의 통신 방식을 이해하는 BUS interface가 있다.
$\bullet$ 송/수신이 모두 가능하다
$\bullet$ I/O bus에 연결되는 장치(device)들은 모두 interface가 필요하다.
interface는 연결되는 장치에 따라 controller 혹은 adapter라고도 불린다. 사실상 같은 의미이다.
클럭 신호(Clock Pulse)
$\bullet$ 타이밍(timing)을 제공하기 위해 필요하다
$\bullet$ CPU 클럭속도가 1.6Mhz 이다.
$\bullet$ CPU는 매 clock에 맞춰서 연산을 한다.
이때 +연산 장치의 연산속도와 출력장치가 데이터를 가져가는 속도가 일치하지 않으면 속도가 느린 장치를 기준으로 동기화 하면 된다.
ARM이나 MIPS 같은 코어들을 직접 다룰수 있으면 코어들의 클럭을 프로그램 상에서 직접 조절 할 수 있다.
프로그램의 실행 과정
폰노이만의 컴퓨터 구조
Load : 실행파일안의 명령어를 메모리로 보낸다.
프로그램이 컴퓨터 내부에 저장되는 구조이다.
프로그램은 컴퓨터 내부에 저장되어서 순차적으로 실행된다.
프로그램의 실행 과정
단계 1 : 전처리기에 의한 치환과정
단계 2 : 컴파일러에 의한 번역
$\bullet$ 소스코드를 어셈블리 코드로 바꾼다
$\bullet$ 어셈블리 코드
-CPU에게 일을 시키기 위한 코드
-CPU가 디자인 될때 함게 디자인된다.
단계 3 : 어셈블러에 의한 바이너리 코드 생성
$\bullet$ binary code : 1과 0으로 구성된 코드
단계 4 : 링커에 의한 연결과 결합
$\bullet$ 링커 : 프로그램내에 존재하는 함수나 라이브러리 들을 하나로 묶는 작업을 수행한다.
$\bullet$ 링커의 작업이 끝나면 실행파일이 만들어진다.
단계 1. Fetch : 메모리상에 있는 명령어를 CPU로 가져온다. 이때 명령어는 레지스터(IR)에 임시로 저장된다.
단계 2. Decode : 가져다 놓은 명령어를 Control Unit을 통해 해석한다.
단계 3. Executiono : 해석된 명령어의 명령대로 CPU가 실행된다. ALU에서 진행된다.
하드웨어 구성의 재접근
Bus system 자세히 보기 (Fetch 과정)
각 버스의 용도
1) Data Bus : 데이터(명령어(연산자), 피연산자(operand))의 이동을 위해 존재하는 버스
2) Address Bus : 주소값의 이동을 위해 존재하는 버스, 어디에 데이터를 저장시킬지의 정보를 전달
3) Control Bus : CPU가 원하는 바를 메모리에 전달한다. CPU와 메모리가 사인(sign)을 주고받는 용도(송신 or 수신 여부 결정)
요약
1. ALU와 컨트롤 유닛의 기능적 역할
2. Register의 필요성
3. Clock Pulse의 필요성
4. Fetch, Decode, Execlution
5. BUS Interface
'Windows > 윈도우즈 시스템 프로그래밍' 카테고리의 다른 글
7. 프로세스간 통신(IPC) 1 (0) | 2021.05.14 |
---|---|
6. 커널 오브젝트와 오브젝트 핸들 (0) | 2020.06.15 |
5. 프로세스의 생성과 소멸 (0) | 2020.06.15 |
4. 컴퓨터 구조에 대한 두 번째 이야기 (0) | 2020.05.29 |
2. 아스키코드와 유니코드 (0) | 2020.05.29 |