정보통신공학 전공자이지만.. 학교에서 배운 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 |