본문 바로가기

프로그래밍/C++

시스템 프로그래밍

정보통신공학 전공자이지만.. 학교에서 배운 OS가 기억이 잘 안나서 책을 찾아보고 있었다. 추천받은 책은 뇌를 자극하는 윈도우즈 시스템 프로그래밍, 목차를 쭉 읽어봤는데 OS뿐만 아니라 컴퓨터 아키텍쳐에 관한 내용도 있어서 구매를 하게 되었다.

 

난 정리하면서 책을 보는게 더 머리에 잘 들어오기 때문에 나름 정리한다고 정리를 시작해본다

 

내가 정리한 걸 본다고 책의 내용 전부를 봤다고 할 순 없지만 맥락은 이해할 수 있으리라고 본다

 

 

시스템 프로그램이란?
: 컴퓨터 시스템을 동작시키는 프로그램
 
컴퓨터 시스템의 주요 구성요소
: CPU Cache (컴퓨터 구조)
   메인 메모리 하드디스크 (OS)
 
하드웨어의 구성
 
1. CPU
 : 중앙처리장치, 연산을 담당한다.
 
2. 메인 메모리
: 컴파일이 완료된 프로그램 코드가 실행되는 영역
 
3. 입출력 버스
 : 컴퓨터를 구성하는 요소 사이에서 데이터를 주고 받기 위해 사용되는 경로
  어드레스 버스, 데이터 버스, 컨트롤 버스로 구분된다.
 
CPU의 이해
 
1. ALU (Arithmetic Logic Unit)
  : 실제 연산을 담당한다. 산술 연산과 논리연산을 처리한다.
 
2. Control Unit
  : ALU를 대신해서 명령어를 해석해주는 구성요소. 즉, CPU가 처리해야 할 명령어들을 해석하는 것이다.
 
3. Register Set
  : 레지스터란 CPU 내부에 존재하는 2진 데이터 저장을 위한 저장장치이다.
 
4. Bus Interface
  : 버스가 어떻게 데이터를 전송하는지, 그에 대한 프로토콜 혹은 통신  방식을 알고 있는 녀석이다.
 
5. 클럭 신호
  : CPU를 구성하는 요소는 아니지만, 타이밍을 제공하기 위해 필요하다
 
프로그램의 실행과정
: 전처리기 -> 컴파일러 -> 어셈블러 -> 링커
 
1. 전처리기에 의한 치환작업
  : #include, #define과 같이 #로 시작하는 지시자의 지시에 따라서 소스코드를 적절히 변경한다.
 
2. 컴파일러에 의한 번역
  : 컴파일러에 의해서 어셈블리 코드로 번역한다.
 
3. 어셈블러에 의한 바이너리 코드 생성
 
4. 링커에 의한 연결과 결합
  : 프로그램 내에서 참조하는 함수나 라이브러리들을 하나로 묶는 작업
 
1단계 Fetch
  : 메모리 상에 존재하는 명령어를 CPU로 가져오는 작업
 
2단계 Decode
  : 가져다 놓은 명령어를 CPU가 해석하는 단계
3단계 Execution
  : 해석된 명령어의 명령대로 CPU가 실행하는 단계

 

 

'프로그래밍 > C++' 카테고리의 다른 글

동기화 (Synchronization)  (0) 2019.02.21
커널 영역과 유저 영역  (0) 2019.02.20
스레드 (Thread)  (0) 2019.02.19
커널 (Kernel)  (0) 2019.02.13
문자열  (0) 2019.02.12