일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- constructor
- this call
- suffix return type
- delete function
- diamond inheritance
- c++ multi chatting room
- vector capacity
- placement new
- new&delete
- virtual inheritance
- std::endl
- member function pointer
- dynamic_cast
- virtual function
- increment operator
- virtual function table
- base from member
- 더 지니어스 양면포커
- return by reference
- std::vector
- std::ostream
- std::cout
- pointer to member data
- vector size
- virtual destructor
- conversion constructor
- discord bot
- operator overloading
- C++
- c++ basic practice
- Today
- Total
I'm FanJae.
[System Programming] 시스템 프로그래밍의 이해와 접근 본문
본 내용은 뇌를 자극하는 윈도우즈 시스템 프로그래밍(윤성우 저) 책을 보고 정리한 내용입니다.
개인이 학습한 내용을 정리할 목적으로 게시한 것으로 책의 상세한 내용은 직접 구매하여 확인을 부탁드립니다.
1. 시스템 프로그래밍의 이해와 접근
1-1. 시스템(컴퓨터 시스템)이란?
- 일반적으로 개발자들이 얘기하는 시스템이란, 하드웨어뿐만 아니라 운영체제를 포함한다.
1-2. 시스템 프로그래밍이란?
- 컴퓨터 시스템을 활용하는 소프트웨어를 개발한다.
- 개발자들이 만드는 소프트웨어(응용 소프트웨어)에는 시스템 프로그래밍 요소가 포함된다.
- Windows 운영체제 자체의 기능을 십분 활용하는 프로그래밍
1-3. 응용 소프트웨어 개발과의 차이점
- 즉, 응용 소프트웨어의 개발을 위해서는 우리가 구현하지 않더라도, 시스템 프로그래밍이 일부 포함되어야 한다.
2. 컴퓨터 시스템의 주요 구성 요소
- 여기서는 컴퓨터 구조와 운영체제의 개념으로 두개를 나누어서 설명한다.
2-1. 컴퓨터 구조
- 일반적으로는 CPU와 캐시까지를 '컴퓨터 구조'로 이야기 하고, 일반적으로 '컴퓨터 구조'에서 이를 다룬다.
※ 물론 학부에서 컴퓨터 구조, 운영체제 위 내용을 모두 다루지만, 상대적으로 컴퓨터 구조 쪽에서 비중이 높다.
2-2. 운영체제
- 메인 메모리는 메모리 관리적인 측면에 대한 얘기다.
- 여기서 말하는 하드 디스크는 물리적인 하드디스크가 아닌 파일 I/O와 같은 입출력과 같은 얘기를 하는 것이다.
2-3. 컴퓨터 하드웨어 구성 (전체)
- 이 컴퓨터 하드웨어 구성은 저마다 차이가 존재한다.
- 하지만 이 그림을 전체적으로 이해한다면, 다른 것을 볼때도 크게 무리는 없다.
2-3-1. CPU( Central Processing Unit )
- 중앙처리장치를 의미한다.
- 컴퓨터의 연산이 이루어지는 것을 넓게 보면, CPU 내부에서 이뤄진다고 할 수 있다.
2-3-2. 메인 메모리( Main Memory )
- 일반적으로, 램(RAM)을 의미한다.
- 프로그램이 실행되는 방식을 이해하는 것이 중요하다.
2-3-3. 입출력 버스 ( Input / Output Bus )
- 데이터를 주고 받는 것이 어떻게 이뤄지는지 아는 것이 중요하다.
2-4. CPU에 대한 이해(전체 구성)
- 이는 CPU에 대한 전체적인 구성도이다.
※ Control Unit은 화살표가 없지만, 원래 모든 요소(ALU,Register,Bus Interfafce)와 신호를 주고 받는 요소이다.
2-4-1. ALU(Arithmetic Logic Unit, 산술 논리 장치)
- CPU 내부에서 실질적인 연산을 담당하는 요소이다.
- 기본적인 덧셈, 뺄셈과 같은 연산 및 논리 연산 등을 수행한다.
2-4-2. Control Unit
- CPU가 처리해야 할 명령어들을 해석한다.
- CPU의 다양한 구성 요소에 명령을 수행할 수 있도록 제어하는 역할을 한다.
2-4-3. 레지스터(Register set)
- CPU 내에 존재하는 아주 작은 메모리이다.
- CPU 내부에서 구성하는 구성 요소들의 임시 데이터나 명령어 등을 저장할 수 있다.
2-4-4. 버스 인터페이스 (Bus Interface)
- CPU가 여러 장치들과 데이터를 주고 받기 위해 통신을 조정하고 관리하는 장치이다.
- 컴퓨터 내 여러 장치는 독립적으로 동작하는게 아니라 서로 데이터를 주고 받으며 동작한다.
- 버스 인터페이스는 이러한 데이터 전송을 지원하고 조정하는 매개체 역할을 한다.
3. 클럭 신호( Clock Pulse )
3-1. 클럭(Clock)이란?
- 클럭이라는 것은 일정한 주기으로 반복되는 전기적 신호이다.
- 모든 장치가 동일한 클럭
- 따라서, 클럭은 하드웨어의 동작 티이밍을 결정하는 요소이다.
3-2. 클럭이 필요한 이유
- 클럭이 필요한 이유는 동기화를 위해서 이다.
- 컴퓨터 내부의 클럭 신호 발생기는 전체 시스템이 동일한 타이밍에 작업을 수행할 수 있도록 조정해준다.
- 모든 장치가 각기 다른 클럭 신호를 필요로 한다. 이를 조정해 주는 것이 클럭 신호 발생기이다.
- 그 클럭에 맞춰서 일을 하도록 시스템을 디자인 하자는 것이다.
※ 즉, 클럭 신호 발생기를 이용해서 이들이 동일한 타이밍에 작업을 수행하도록 하는 것이 클럭이 필요한 이유이다.
'System Programming' 카테고리의 다른 글
[System Programming] 프로그램 구현 관점에서 64비트 기반 프로그래밍 / 오류의 확인 (0) | 2024.09.11 |
---|---|
[SYSTEM PROGRAMMING] WIN32와 WIN64 (0) | 2024.09.09 |
[SYSTEM PROGRAMMING] MBCS와 WBCS 동시 지원 (0) | 2024.09.03 |
[System Programming] Windows 에서의 유니코드 (1) | 2024.08.30 |
[System Programming] 프로그램의 실행과정 / 하드웨어 구성의 재접근 (0) | 2024.08.26 |