마지막챕터 : 컴퓨터
[ 소통을 원하지는 않습니다 ]
[혼공컴운] 4주차_컴퓨터 구조+운영체제 09장~11장

Chapter 09 운영체제 시작하기

09-1 운영체제(Operating System)를 알아야 하는 이유

- 운영체제는 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램입니다. 

- 운영체제와의 대화를 통해 하드웨어와 프로그램을 더 깊이 이해하고, 문제 해결의 실마리를 찾을 수 있습니다. 

 

** 운영체제는 컴퓨터 구조의 각 부품이 제 성능을 발휘할 수 있도록 전반적인 관리와 자원 할당을 지원해주는 소프트웨어. 초심자에게는 컴퓨터 구조와 운영체제에 대해 같이 알아가는 게 좋은 방법이라고 생각됨.

 

09-2 운영체제의 큰 그림

- 커널(Kernel)은 운영체제의 핵심 기능을 담당합니다. 

- 이중 모드(Dual Mode)는 CPU가 명령어를 실행하는 모드를 커널 모드와 사용자 모드로 구분하는 방식입니다. 

- 시스템 호출(System Call)은 운영체제의 서비스를 제공받기 위해 커널 모드로 전환하는 방법입니다. 

- 대표적인 운영체제 서비스로 프로세스 관리, 자원 접근 및 할당, 파일 시스템 관리가 있습니다. 

 

 

 


Chapter 10 프로세스와 스레드

10-1 프로세스(Process) 개요

- 프로세스는 실행 중인 프로그램입니다. 프로세스의 종류에는 포그라운드 프로세스 (foreground process)와 백그라운드 프로세스(Background process)가 있습니다. 

- 운영체제는 프로세스 제어 블록(PCB, Process Control Block)을 통해 여러 프로세스를 관리합니다. 

- 프로세스 간에 실행을 전환하는 것을 문맥 교환(Context switching)이라고 합니다. 

- 프로세스 사용자 영역에 크게 코드 영역(Code segment), 데이터 영역(Data segment), 스택 영역(Stack segment), 힙 영역(Heap segment)으로 나뉘어 배치됩니다. 

 

** 프로세스 제어 블록(PCB)에 들어 있는 목록을 알아두면 좋을 듯 합니다.


10-2 프로세스 상태(Process State)와 계층 구조

- 프로세스 상태에는 생성, 준비, 실행, 대기, 종료가 있습니다.

- 프로세스가 다른 프로세스를 생성한 경우 프로세스를 생성한 프로세스를 부모 프로세스, 생성된 프로세스를 자식 프로세스라고 부릅니다. 

- 많은 운영체제는 프로세스가 프로세스를 낳는 프로세스 계층 구조로 프로세스들을 관리합니다.

출처: 혼자 공부하는 컴퓨터 구조 + 운영체제. 프로세스 상태 다이어그램. 한빛미디어

 

10-3 스레드(Thread)

- 스레드는 프로세스 내의 실행 흐름 단위입니다.

- 여러 프로세스를 동시에 실행하는 것을 멀티프로세스라고 하고, 여러 스레드로 프로세스를 동시에 실행하는 것을 멀티스레드라고 합니다.

 

** 스레드(Thread)는 명령어의 한 줄기, 프로그램 제어 흐름 한 가닥 정도를 나타낸다고 합니다. 

 

 

 


Chapter 11 CPU 스케줄링

11-1 CPU 스케줄링 개요(CPU scheduling)

- CPU 스케줄링은 공정하고 합리적으로 CPU 자원을 배분하는 방법을 의미합니다. 

- 프로세스는 우선순위(Priority)를 가지고 있고, 이는 PCB에 명시됩니다. 

- 운영체제는 효율적인 스케줄링을 위해 스케줄링 큐를 사용합니다. 

- 준비 큐(Ready queue)는 CPU 할당을 기다리는 프로세스들을 위한 큐를 의미합니다. 

- 대기 큐(Waiting queue)는 입출력장치를 기다리는 프로세스들을 위한 큐를 의미합니다. 

- 선점형 스케줄링(Preemptive scheduling)은 프로세스가 이용 중인 자원을 빼앗을 수 있습니다. 

- 비선점형 스케줄링(Non-preemptive scheduling)은 프로세스가 이용 중인 자원을 빼앗을 수 없습니다. 

 

11-2 CPU 스케줄링 알고리즘
- 선입 선처리 스케줄링(FCFS 스케줄링, First Come First Served Scheduling) 알고리즘은 준비 큐에 삽입된 순서대로 CPU를 할당합니다. 

- 최단 작업 우선 스케줄링(Shortest Job First Scheduling) 알고리즘은 준비 큐에 삽입된 프로세스들 중 CPU 사용 시간의 길이가 가장 짧은 프로세스부터 CPU를 할당합니다. 

- 라운드 로빈 스케줄링(Round Robin Scheduling) 알고리즘은 정해진 시간만큼만 돌아가며 CPU를 할당합니다. 

- 우선순위 스케줄링(Priority Scheduling) 알고리즘은 가장 높은 우선순위를 가진 프로세스에 CPU를 할당합니다. 

- 다단계 피드백 큐 스케줄링(Multilevel Feedback Queue Scheduling) 알고리즘은 프로세스들이 큐 사이를 이동할 수 있는 다단계 큐 스케줄링입니다. 

 

 

 

[기본 숙제] 

304쪽 확인 문제 1번 풀고 인증하기

1. 다음은 프로세스 상태를 보여주는 상태 다이어그램입니다. ①부터 ⑤까지 올바른 상태를 적어 보세요. 

출처: 혼자 공부하는 컴퓨터 구조 + 운영체제. 한빛미디어.

생성    ② 준비    ③ 실행    ④ 종료    ⑤ 대기

 

 

[추가 숙제] 

Ch.11(11-2) 준비 큐에 A,B,C,D 순으로 삽입되었다고 가정했을 때, 선입 선처리 스케줄링 알고리즘을 적용하면 어떤 프로세스 순서대로 CPU를 할당받는지 풀어보기 

 

선입 선처리 스케줄링(FCFS, First Come First Served Scheduling)의 경우, 준비 큐(Ready Queue)에 A, B, C, D 순서로 삽입되면 들어온 순서대로 A, B, C, D가 CPU를 할당받습니다.
이때 처리시간이 가장 긴 작업이 가장 먼저 들어온 경우, 그 뒤에 있는 짧은 작업들도 덩달아 대기해야 하는 호위 효과(Convoy Effect)가 발생합니다. '호위효과'란 군대나 행진에서 가장 느린 부대나 차량 때문에 마치 호위대처럼 전체 진행이 지연되는 상황을 비유적으로 뜻하는 말이라고 합니다. 

알고리즘이 단순한 것이 이점일 수 있지만, 최악의 경우에는 시스템의 전체적인 성능에 많은 악영향을 줍니다.  

  Comments,     Trackbacks
[혼공컴운] 3주차_컴퓨터 구조+운영체제 06장 ~ 08장

Chapter 06 메모리와 캐시 메모리

06-1 RAM의 특징과 종류

- RAM(Random Access Memory)은 휘발성 저장 장치(Volatile memory)이고, 보조기억장치는 비휘발성 저장 장치(Non-volatile memory)입니다. 

- DRAM(Dynamic RAM) 시간이 지나면 저장된 데이터가 점차 사라지는 RAM이고, SRAM(Static RAM)은 시간이 지나도 저장된 데이터가 사라지지 않는 RAM입니다. 

- SDRAM(Synchronous Dynamic RAM)은 클럭과 동기화된 DRAM입니다. 

- DDR SDRAM(Double Data Rate SDRAM)은 SDR SDRAM(Single Data Rate SDRAM)에 비해 대역폭이 두 배 넓습니다.

 

06-2 메모리의 주소 공간

- 물리 주소(Physical address)는 메모리 하드웨어상의 주소이고, 논리 주소(Logical address)는 CPU와 실행 중인 프로그램이 사용하는 주소입니다. 

- MMU(Memory Management Unit)은 논리 주소를 물리 주소로 변환합니다. 

- 베이스 레지스터(Base register)는 프로그램의 첫 물리 주소를 저장합니다. 

- 한계 레지스터(Limit register)는 실행 중인 프로그램의 논리 주소의 최대 크기를 저장합니다. 

 

06-3 캐시 메모리

- 저장 장치 계층 구조(Memory hierarchy)는 각기 다른 용량과 성능의 저장 장치들을 계층화하여 표현한 구조입니다. 

- 캐시 메모리(Cache memory)는 CPU의 연산 속도와 메모리 접근 속도의 차이를 줄이기 위한 저장 장치입니다. 

- 캐시 적중률(Cache hit ratio)이 높으면 CPU의 메모리 접근 횟수를 줄일 수 있습니다. 

- 캐시 메모리는 참조 지역성의 원리(Locality of reference, principle of locality)에 따라 데이터를 예측하여 캐시 적중률을 높입니다. 

 

 

 

 

Chapter 07 보조기억장치

07-1 다양한 보조기억장치(Secondary Storage)

- 하드 디스크의 구성 요소에는 플래터, 스핀들, 헤드, 디스크 암이 있습니다. 

- 플래터는 트랙과 섹터로 나뉘고, 여러 플래터의 동일한 트랙이 모여 실린더를 이룹니다. 

- 하드 디스크의 데이터 접근 시간(Data Access Time)은 크게 탐색 시간(Seek time), 회전 지연(Rotational latency), 전송 시간(Transfer time)으로 나뉩니다. 

- 플래시 메모리(Flash memory)는 한 셀에 몇 비트를 저장할 수 있느냐에 따라 SLC(Single Level Cell), MLC(Multiple Level Cell), TLC(Triple Level Cell)로 나뉩니다. 

- 플래스 메모리의 읽기와 쓰기는 페이지 단위로, 삭제는 블록 단위로 이루어집니다. 

 

07-2 RAID의 정의와 종류

- RAID(Redundant Array of Independent Disk)란 데이터의 안전성 혹은 높은 성능을 위해 여러 하드 디스크나 SSD(Solid State Drive)를 마치 하나의 장치처럼 사용하는 기술입니다. 

- RAID 0는 데이터를 단순히 병렬로 분산하여 저장하고, RAID 1은 완전한 복사본을 만듭니다. 

- RAID 4는 패리티를 저장한 장치를 따로 두는 방식이고, RAID 5는 패리티를 분산하여 저장하는 방식입니다. 

- RAID 6는 서로 다른 두 개의 패리티를 두는 방식입니다. 

 

** RAID 2와 3은 잘 안쓴다고 책에 "note"로 씌여 있습니다. 

** RAID 0, 1, 4, 5, 6 레벨은 이 책에 그림으로 이해하기 쉽게 잘 설명되어 있습니다. 

 

 

 


Chapter 08 입출력장치

08-1 장치 컨트롤러와 장치 드라이버

- 입출력장치는 장치 컨트롤러(Device controller)를 통해 내부와 정보를 주고 받습니다. 

- 장치 드라이버(Device driver)는 장치 컨트롤러가 컴퓨터 내부와 정보를 주고 받을 수 있게 하는 프로그램입니다. 


08-2 다양한 입출력 방법
- 프로그램 입출력(Programmed I/O)은 프로그램 속 명령어로 입출력 작업을 하는 방식입니다. 

- 메모리 맵 입출력(Memory-mapped I/O)는 메모리에 접근하기 위한 주소 공간과 입출력 장치에 접근하기 위한 주소 공간을 하나의 주고 공간으로 간주하는 입출력 방식입니다. 

- 고립형 입출력(Isolated I/O)은 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 별도로 분리하는 입출력 방식입니다. 

- 인터럽트 기반 입출력은 인터럽트로써 입출력을 수행하는 방법입니다. 

- DMA 입출력은 CPU를 거치지 않고 메모리와 입출력장치 간의 데이터를 주고 받는 입출력 방식입니다. 

- 입출력 버스는 입출력장치와 컴퓨터 내부를 연결 짓는 통로로, 입출력 작업 과정에서 시스템 버스 사용 횟수를 줄여줍니다. 

 

 

 

[기본 숙제]

185쪽 확인 문제 3번.

3. 다음 설명을 읽고 무엇에 대한 SDRAM에 대한 설명인지 DRAM에 대한 설명인지 쓰세요.

보기: SDRAM, DRAM

● 주로 캐시 메모리로 활용됩니다. ① SRAM

● 주로 주기억장치로 활용되니다. ② DRAM

● 대용량화하기 유리합니다. ③ DRAM

● 집적도가 상대적으로 낮습니다. ④ SRAM

 

** 오타로 추측되는 곳. 

"무엇에 대한 SDRAM에 대한 설명인지" -> "무엇이 SRAM에 대한 설명인지"

"보기: SDRAM, DRAM" -> "보기: SRAM, DRAM"

SDRAM(Synchronous Dynamic RAM)이어서 SRAM과 관련 없다고 책에도 써 있고, 답지에도 SRAM, DRAM으로 씌여 있음.

 

205쪽 확인 문제 1번.

1. 다음 보기에 있는 저장 장치들로 저장 장치 계층 구조 도식도를 채우세요.

출처: 혼자 공부하는 컴퓨터 구조 + 운영체제. 한빛미디어

 

레지스터   ② 캐시 메모리   ③ 메모리   ④ 보조저장장치  

 

** 예시는 보조기억장치, 답지는 보조저장장치. 현재 보고 있는 책은 2022년 8월 16일 초판 발행본인데, 최근 나온 책들은 많이 수정됐을 것 같다. 

 

 

 

[추가 숙제] 

Ch.07(07-2) RAID의 정의와 종류를 간단히 정리해 보기

 

RAID(Redundant Array of Independent Disks)는 여러 저장 장치를 결합하여 데이터 복원력 및 성능을 향상시키기 위해 사용하는 데이터 저장 기술입니다. RAID를 통해 데이터의 중복성을 제공하고, 여러 디스크에 데이터를 분산 저장함으로써 성능을 개선할 수 있습니다. RAID는 주로 서버와 스토리지 시스템에서 사용됩니다.


 1. RAID 0 (스트라이핑)
- 구조: 데이터를 여러 디스크에 분산 저장
- 주요 용도: 속도가 중요한 상황에서 적합

 2. RAID 1 (미러링)
- 구조: 동일한 데이터를 두 개의 디스크에 저장
- 주요 용도: 데이터 안전성이 중요한 시스템에서 사용

 3. RAID 2
- 구조: 비트 단위로 스트라이핑하고, 에러 검출 및 수정용 ECC(오류 수정 코드)를 사용
- 주요 용도: 현대에는 거의 사용되지 않음

 4. RAID 3
- 구조: 바이트 단위로 스트라이핑하고, 전용 패리티 디스크에 저장
- 주요 용도: 대규모 데이터 전송 및 스트리밍에서 사용

 5. RAID 4
- 구조: 블록 단위로 스트라이핑하고, 전용 패리티 디스크에 저장
- 주요 용도: 이전 RAID 방법과 유사하나, 성능상 단점이 있음

 6. RAID 5
- 구조: 블록 단위로 스트라이핑하고, 패리티 정보를 여러 디스크에 분산 저장
- 주요 용도: 중간 정도의 성능과 높은 데이터 보호를 원하는 경우

 7. RAID 6
- 구조: RAID 5와 유사하지만, 두 개의 패리티 블록을 사용
- 주요 용도: 높은 신뢰성이 요구되는 시스템

 8. RAID 10 (1+0)
- 구조: RAID 1과 RAID 0의 결합 (미러링과 스트라이핑)
- 주요 용도: 높은 성능과 데이터 안전성을 모두 요구하는 환경

 

이외에도 여러 RAID 레벨들이 공식, 비공식적으로 존재한다고 합니다. 

 

** 못 보던 용어들을 접할 수 있어서 재미있었습니다. 책을 읽다가 시간 지역성(Temporal locality)과 공간 지역성(Spatial locality)에 대해 조사하면서 이해도를 높일 수 있어서 좋았습니다. 메인보드 부품들의 역할이 많아진 듯 한데, 시간될 때 한 번 봐둬야 할 것 같네요. 

  Comments,     Trackbacks
[혼공컴운] 2주차_컴퓨터 구조+운영체제 04장 ~ 05장

Chapter 04 CPU와 작동 원리

04-1 ALU(Arithmetic Logic Unit)와 제어장치(Control Unit)

- ALU는 레지스터로부터 피연산자를 받아들이고, 제어장치로부터 제어 신호를 받아들입니다.

- ALU는 연산 결과와 플래그를 내보냅니다. 

- 제어장치는 클럭, 현재 수행할 명령어, 플래그, 제어 신호를 받아들입니다.

- 제어장치는 CPU 내부와 외부로 제어 신호를 내보냅니다.

 

출처: 혼자 공부하는 컴퓨터구조 + 운영체제. 한빛미디어

 

** 4장 ALU와 제어장치(105쪽)에서 "CPU가 메모리에 접근하는 속도는 레지스터에 접근하는 속도보다 훨씬 느립니다. ALU가 연산할 때마다 결과를 메모리에 저장한다면 당연하게도 CPU는 메모리에 자주 접근하게 되고, 이는 CPU가 프로그램 실행 속도를 늦출 수 있습니다. 그래서 ALU의 결괏값을 메모리가 아닌 레지스터에 우선 저장하는 겁니다."라는 부분이 있는데, 이는 마치 ALU가 결괏값을 속도 때문에 레지스터에 저장하는 말처럼 들리지만, 개인적으로는 ALU가 RAM과 직접 데이터나 신호를 주고 받을 수 없어서 레지스터에 저장하는 게 적절한 설명이 아닐까 싶습니다.
ALU는 CPU의 제어장치(CU, Control Unit)과 데이터 버스를 통해서 램(RAM)과 데이터 전송을 진행한다고 합니다. 물론, 레지스터에 결괏값을 저장하는 게, 제어장치와 데이터 버스를 통해 램에 저장하는 것보다 속도가 빠른 건 맞다고 생각합니다.  

참고로, 초기 컴퓨터 아키텍처가 발전할 때, 레지스터가 RAM 메모리보다 먼저 포함됐었다는 얘기가 있습니다. 

 

** 플래그 레지스터(Flag register)에 저장되는 플래그에 대한 설명도 컴퓨터의 구조를 이해하는 데 도움이 될만할 것 같은데, 요약 부분에는 없어서 참고로 기록해 둡니다. 

- 부호 플래그: 연산한 결과의 부호를 나타낸다. 

- 제로 플래그: 연산 결과가 0인지 여부를 나타낸다. (0으로 나눌 수 없는 오류를 방지하기 위한 조치가 아닌가 추측됩니다.)

- 캐리 플래그: 연산 결과 올림수나 빌림수가 발생했는지를 나타낸다. 

- 오버플로우 플래그: 연산 결과가 연산 결과를 담을 레지스터보다 큰 상황을 오버플로우(Overflow)라고 하는데, 이 오버플로우가 발생했는지 나타낸다고 합니다. 

- 인터럽트 플래그: 인터럽트가 가능한지를 0과 1로 나타내며, 1인 경우에는 인터럽트가 가능하고, 0인 경우에는 인터럽트가 불가능하다고 합니다. 하드웨어 인터럽트가 가능할 때와 불가능할 때(요청 무시)가 이 플래그를 통해 판단되는 것 같습니다. 

- 슈퍼바이저 플래그: 커널 모드(Kernel mode)와 사용자 모드(User mode) 중 어떤 모드로 실행 중인지 나타낸다고 합니다.  

 

** 이 책을 읽어 보니 ALU가 산술 논리 연산을 하는 중요한 장치이긴 하지만, 컴퓨터나 CPU의 동작을 이해할 때는 제어장치가 어떤 역할을 하는지 이해하는 게 초심자에게는 꽤 중요할 거라는 생각이 듭니다. 예전에 읽었던 책에서 제어장치를 간단하게 다룬 건지 아니면 읽어봐도 무슨 소리인지 몰라서 그냥 대충 넘어간 건지는 기억나지 않습니다. ㅋㅋㅋ 
제어장치(Control Unit)이 데이터 주고 받는 장치와 순서(순차)를 떠올려 보면 이 챕터를 이해하는 데 좋을 것 같습니다. 

그래서 111쪽 3번 문제도 참고로 기록해 봅니다. 정답은 책 뒷부분에..

출처: 혼자 공부하는 컴퓨터 구조 + 운영체제. 한빛미디어.

 

 

04-2 레지스터(Register)

- 프로그램 카운터(PC, Program Counter)는 메모리에서 가져올 명령어의 주소, 명령어 레지스터는 해석할 명령어를 저장합니다. 

- 메모리 주소 레지스터(MAR, Memory Address Register)는 메모리의 주소, 메모리 버퍼 레지스터는 메모리와 주고 받을 데이터를 저장합니다. 

- 범용 레지스터(GR, General Purpose Register)는 데이터와 주소를 모두 저장하고, 플래그 레지스터는 연산 결과 혹은 CPU 상태에 대한 부가 정보를 저장합니다. 

- 스택 포인터(SP, Stack Pointer)는 스택 최상단의 위치를 저장합니다.

- 베이스 레지스터(BR, Base Register)에 저장된 주소는 기준 주소로서의 역할을 합니다.  

 

04-3 명령어 사이클과 인터럽트

- 명령어 사이클은 하나의 명령어가 처리되는 주기로, 인출(Fetch), 실행(Execute), 간접 인터럽트 사이클(Indirect Cycle)로 구성되어 있습니다. 

- 인터럽트는 CPU의 정상적인 작업을 방해하는 신호입니다. 

- 인터럽트의 종류에는 예외(Exception)와 하드웨어 인터럽트(Hardware interrupt)가 있습니다. 

- 인터럽트 서비스 루틴은 인터럽트를 처리하기 위한 동작들로 이루어진 프로그램입니다. 

 

** 명령어 사이클은 인출(Fetch), 해석(Decode), 실행(Execute) 순서로 진행되는 것 같고, 작업에 따라 메모리 접근(Memory Access)이나 결괏값을 저장하는 과정이 들어갈 수도 있는 것 같으나, 갈수록 사이클을 단순화하는 방향으로 나아가고 있다고 하는 것 같습니다. 

 

** 동기 인터럽트(Synchronous interrupt)를 프로그램이 발생시키는 소프트웨어 인터럽트(Software interrupt)로, 비동기 인터럽트(Asynchronous interrupt)를 하드웨어 인터럽트(Hardware interrupt)로 보는 의견도 있는 것 같습니다. 이 책에서는 "동기 인터럽트"라는 용어 대신 "예외"라는 용어로 사용한다고 하네요. 옛날 기억과 조금 다른 것 같아 찾아보니 예외는 동기 인터럽트의 하위 집합(?)으로 보는 게 일반적인 것 같은데, 초심자 분들을 위한 서적임을 감안해서 대체한 것 같습니다.

 

 

 


Chapter 05 CPU 성능 향상 기법

05-1 빠른 CPU를 위한 설계 기법
- 클럭 속도가 높은 CPU는 빠르게 작동합니다. 

- 코어란 CPU 내에서 명령어를 실행하는 부품입니다. 

- 멀티코어 프로세서란 여러 개의 코어를 포함하는 CPU를 말합니다. 

- 스레드에는 하드웨어적 스레드와 소프트웨어적 스레드가 있습니다. 

- 멀티스레드 프로세서란 하나의 코어로 여러 개의 명령어를 동시에 실행할 수 있는 CPU를 말합니다. 


05-2 명령어 병렬 처리 기법 
- 명령어 파이프라이닝은 동시에 여러 개의 명령어를 겹쳐 실행하는 기법입니다. 

- 슈퍼스칼라는 여러 개의 명령어 파이프라인을 두는 기법입니다. 

- 비순차적 명령어 처리 기법은 파이프라인의 중단을 방지하기 위해 명령어를 순차적으로 처리하지 않는 기법입니다. 


05-3 CISC(Complex Instruction Set Computer)와 RISC(Reduced Instruction Set Computer)
- ISA(Instruction Set Architecture)는 CPU의 언어이자 하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속입니다. 

- CISC는 복잡하고 다양한 종류의 가변 길이 명령어 집합을 활용합니다. 

- RISC는 단순하고 적은 종류의 고정 길이 명령어 집합을 활용합니다. 

 

 

 

 

[기본 숙제] 

 

125쪽 2번 문제.

2. 설명에 맞는 레지스터를 보기에서 찾아 빈칸()을 채워 보세요.

보기: 프로그램 카운터, 명령어 레지스터, 플래그 레지스터, 범용 레지스터

- ① (플래그 레지스터): 연산 결과 혹은 CPU 상태에 대한 부가 정보를 저장하는 레지스터

- ② (프로그램 카운터): 메모리에서 가져올 명령어의 주소를 저장하는 레지스터

- ③ (범용 레지스터): 데이터와 주소를 모두 저장할 수 있는 레지스터

- ④ (명령어 레지스터): 해석할 명령어를 저장하는 레지스터

 

155쪽 4번 문제.

4. 다음 그림은 멀티코어 CPU를 간략하게 도식화한 그림입니다. 빈칸에 알맞은 용어를 써 넣으세요.

-> 코어(Core)

출처: 혼자 공부하는 컴퓨터 구조 + 운영체제. 한빛미디어.

 

 

[추가 숙제]

Ch.05(05-1). 코어(Core)와 스레드(Thread), 멀티 코어(Multi Core)와 멀티 스레드(Multi Thread)의 개념을 정리하기

 

코어(Core): 프로세서(Processor) 안에서 독립적이고 물리적인 처리 유닛.(하드웨어 안의 부품) 

코어가 여러 개 있는 프로세서는 멀티 코어 프로세서.

 

스레드(Thread): 프로세스(Process) 실행하는 가장 작은 실행 경로로, 코드의 실행 경로라고 합니다. 각 스레드는 프로세스 안에서 메모리를 서로 공유할 수 있습니다. 

스레드를 동시에 여러 개 운용 할 수 있으면 멀티 스레드(Multi thread)

 

코어도 프로세서 안에서 메모리 영역을 공유할 수 있지만 여러 과정이 필요하고(통신일 듯), 스레드는 별도의 과정 없이 직접적으로 공유된 메모리를 다룰 수 있습니다. 요즘 보통의 컴퓨터 구성은 당연히 멀티 스레드, 멀티 코어 구조이고, 이 둘은 성능 향상과 효율적인 작업 처리를 목표로 하는 기술입니다.

 

 

 

** 컴퓨터 구조를 이해할 때 필수인 CPU에 대해 다루는 4장과 5장을 읽었는데, 옛날 어렴풋한 기억과 책 내용을 맞춰 보고, 갱신(?)했습니다. 같은 주제의 책도 몇 개 정도 다른 시기에 읽어보는 게 좋은 이유는 머리 속에 남아있는 내용이 제대로 된 건지 살펴보며 다시 짜맞출 수 있기 때문입니다. 

클럭(Clock) 신호의 역할을 컴퓨터 부품들을 타이밍에 맞춰 일사불란하게 움직여 속도를 높이거나 줄이는 역할이라고 했는데, 타이밍을 맞추는 이유가 속도를 높이는 이유보다 중요한 것 같습니다. 

 

** 최신 데스크톱 PC용 인텔 CPU에서는 하이퍼쓰레딩을 넣지 않는 추세라고 하네요. 

 

하이퍼쓰레딩이란
하이퍼쓰레딩(동시 멀티쓰레딩이라고도 함)은 매우 간단한 개념이다. 각 프로세서 코어는 하나의 명령어 쓰레드를 실행하도록 설계되었지만, 하이퍼쓰레딩은 단일 프로세서 코어 내부에 두 번째 ‘가상’ 프로세서를 생성한다. 하이퍼쓰레딩을 사용하면 개별 프로세서 코어가 항상 두 개의 코어 중 하나 이상에서 명령을 실행해 항상 작동 상태를 유지한다. CPU 코어가 유용한 작업을 수행할 수 있을 때 유휴 상태로 방치되는 것은 마니아들이 원치 않는 일이다.

문제는 두 번째 코어가 ‘진정한’ 두 번째 물리적 코어가 아닌 가상 코어라는 점이다. 이로 인해 리소스 경합과 추가 오버헤드가 발생할 수 있으며, 게임 중 하이퍼쓰레딩을 켜둘지 말지에 대한 문제는 수년 동안 논쟁의 대상이 되어 왔다.  

...

홀록은 “사실 몇 가지가 복합적으로 작용한 결과”라고 말했다. 첫째, 하이퍼쓰레딩을 제품에 포함하지 않음으로써 실제로 전력 소비를 절약할 수 있다는 것을 알았고, 하이퍼쓰레딩을 포함하지 않아도 멀티코어 성능에서 약 15%, 20% 정도 앞서고 있다는 것을 알 수 있다. 따라서 효율성을 높이면서도 전체 컴퓨팅 성능에서 목표를 달성할 수 있었다는 의견이다.
...
출처: 하이퍼쓰레딩 없는 인텔 애로우 레이크, 전력 효율 극대화와 성능 향상 달성할까. - By mark_hachman. ITWORLD. 

 

  Comments,     Trackbacks