# data[].attributes.body
대 지각 입니다.

하지만 해냈습니다

# data[].attributes.attachment_link.readable_text
@ 1주차 확인

- 명령어 = 연산구조 + 오퍼랜드

- 연산구조 = 명령어가 수행할 연산 → 데이터전송, 산술논리/연산, 제어 흐름 변경, 입출력 제어

- 오퍼랜드 = 연산에 사용할 데이터가 저장된 위치

- 오퍼랜드 필드에는 데이터 또는 메모리나 레지스터 주소가 올 수 있음

- 오퍼랜드 필드에서 나타내는 위치는 주소 지정 방식에 따라 다름 → 즉시, 직접, 간접 / 레지스터

Chapter 4. CPU의 작동 원리 (전체적으로 생소함)

4.1. ALU와 제어장치

ALU

- ALU : CPU 내부에서 계산을 담당

- 계산하기 위한 대상이 있어야되기 때문에 피연산자 필요, 계산에 대한 결과가 출력됨
?→ALU input
- 레지스터를 통해 피연산자를 받고, 제어장치로부터 수행할 연산을 알려주는 제어신호를 받음 → 산술/논리 연산 등 다양한 연산
ALU output→?
1) 연산 수행 결과는 연산 결과 또는 메모리 주소가 될 수 있음 → 이러한 값들은 일시적으로 레지스터 저장됨(메모리 저장 X)

- CPU 접근 속도 : 메모리 느림↓, 레지스터 빠름 ↑ : (메모리에 접근한다면 상대적으로 실행속도가 느려질 수 밖에 없음)

2) 연산 결과의 추가적인 정보를 위해 플래그 출력 (음수/양수, 오버플로우 정보등)

- ex) 부호, 제로, 케리(올림/빌림), 오버플로우, 인터럽트, 슈퍼바이저(커널/사용자 모드) 등

- 프로그램을 실행하는 도중 반드시 기억해야 하는 참고 정보이며, 플래그 레지스터 에 저장됨

제어장치

- 제어장치 : 제어 신호를 내보내고, 명령어를 해석하는 부품 (CPU 구성 요소 중 가장 정교하게 설계)

- 제어신호 : 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기 신호
?→제어장치 input
1) 클럭 신호

- 클럭은 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위임, 일정한 주기를 가짐

- 컴퓨터 부품들은 클럭에 맞춰 작동, 한 박자마다가 아닌 여러 클럭에 걸쳐 실행될 수 있음

2) '해석해야 할 명령어'

- CPU가 해석해야 할 명령어는 명령어 레지스터 에 저장됨

- 명령어 레지스터로부터 해석할 명령어를 받아들이고 해석한 뒤, 제어 신호를 발생 → 컴퓨터 부품들이 수행할 내용 안내

3) 플래그 레지스터의 플래그 값

- 플래그는 ALU 연산에 대한 추가적인 상태 정보임 → 참고하여 제어 신호 발생

4) 시스템 버스 중 제어 버스로 전달된 제어 신호

- 제어신호는 CPU뿐만 아니라 입출력 장치를 비롯한 CPU 외부 장치도 발생시킬 수 있음

- 그렇기 때문에, 제어 버스를 통해 외부로부터 전달된 제어 신호를 받을 수 있음
제어장치 output→?
1) CPU 외부에 전달하는 제어 신호

- 제어 버스로 제어 신호를 내보낸다는 의미

- ex) 메모리에 전달하는 제어 신호, 입출력장치에 전달하는 제어 신호, 제어장치가 입출력장치의 값 읽기/쓰기

2) CPU 내부에 전달하는 제어 신호

- ALU에 전달하는 제어 신호, ALU에 수행할 연산을 지시

- 레지스터에 전달하는 제어 신호, 레지스터 간에 데이터 이동, 레지스터에 저장된 명령어 해석

4.2. 레지스터

- 레지스터만 잘 관찰해도 프로그램의 자세한 실행 과정을 알 수 있음

- CPU 안의 레지스터들은 다 다르기 때문에, 본 장에서는 공통적인 8개의 레지스터를 알아봄(x86)
@4.2.1~4.2.4 의 동작 예시는 pp. 114~117 참고
4.2.1. 프로그램 카운터

- 프로그램 카운터는 메모리에서 가져올 명령어 주소를 저장함

- 프로그램 카운터를 명령어 포인터라고 부르기도 함

4.2.2. 명령어 레지스터

- 명령어 레지스터는 메모리에서 읽어 들인 명령어를 저장함

- 제어장치는 명령어 레지스터 속 명령어를 받아들이고, 해석한 뒤 제어 신호를 내보냄

4.2.3. 메모리 주소 레지스터

- 메모리의 주소를 저장하는 레지스터

- CPU가 읽어 들이고자 하는 주소 값을 주소 버스로 보낼 때 메모리 주소 레지스터를 거침

4.2.4. 메모리 버퍼 레지스터

- 메모리와 주고 받을 값을 저장하는 레지스터(데이터, 명령어)

- 메모리에 쓰고 싶은 값이나 메모리로부터 전달받은 값은 메모리 버퍼 레지스터를 거침

- CPU가 주소 버스로 내보낼 값이 메모리 주소 레지스터를 거친다면, 데이터 버스로 주고 받을 값은 메모리 버퍼 레지스터를 거침

4.2.5. 플래그 레지스터

- ALU 연산 결과에 따른 플래그를 플래그 레지스터에 저장됨

- 연산 결과 또는 CPU 상태에 대한 부가적인 정보를 저장함

4.2.6. 범용 레지스터

- 다양한 상황에서 자유롭게 사용할 수 있음

- 범용 레지스터는 데이터와 주소를 모두 저장할 수 있음
( 메모리 버퍼 레지스터: 데이터 버스로 주고받을 값만 저장, 메모리 주소 레지스터: 주소 버스로 내보낼 주소값만 저장함)

- 일반적으로 CPU 안에는 여러 개의 범용 레지스터들이 있음
특정 레지스터를 이용한 주소 지정 방식(1) : 스택 주소 지정 방식
4.2.7. 스택 포인터

- 스택 주소 지정방식에서 사용, 해당 방식에서는 스택과 스택 포인터를 이용

- 스택 포인터는 스택의 꼭대기(가장 최근 값)를 가르키는 레지스터

- 스택은 메모리 안에 있으며, 스택처럼 사용하기로 암묵적으로 약속된 영역이 있음
특정 레지스터를 이용한 주소 지정 방식(2) : 변위 주소 지정 방식
- 명령어는 연산코드와 오퍼랜드로 구성되며, 오퍼랜드 필드에는 메모리 주소가 담길 때가 있음

- 변위 주소 지정 방식은 오퍼랜드 필드의 값(변위)과 특정 레지스터의 값을 더하여 유효 주소를 얻어내는 주소 지정 방식

- 변위 주소 지정 방식을 사용하는 명령어는 연산 코드 필드, 레지스터 필드, 오퍼랜드 필드 로 구성됨

- 오퍼랜드 필드의 주소와 어떤 레지스터를 더하는지에 따라 상대 주소 지정방식, 베이스 레지스터 주소 지정 방식 등으로 나뉨
상대 주소 지정 방식
- 오퍼랜드와 프로그램 카운터의 값을 더하여 유효 주소를 얻는 방식임

- if문과 유사하게, 모든 코드를 실행하는 것이 아닌 분기하여 특정 주소의 코드를 실행할 때 사용됨
베이스 레지스터 주소 지정 방식
4.2.8. 베이스 레지스터

- 오퍼랜드와 베이스 레지스터의 값을 더하여 유효 주소를 얻는 방식

- 베이스 레지스터는 기준 주소, 오퍼랜드는 기준으로부터 떨어진 거리 로서의 역할을 수행

- 베이스 레지스터 속 기준 주소로부터 얼마나 떨어져 있는 주소에 접근할 것인지 연산하여 유효 주소를 얻어내는 방식임
4.3 명령어 사이클과 인터럽트
- CPU가 하나의 명령어를 처리하는 과정에는 어떠한 정해진 흐름에 따라 처리해 나감 → 명령어 사이클

- 정해진 흐름에 따라 명령어를 처리하지만 흐름이 끊기는 상황이 발생 (인터럽트)
4.3.1. 명령어 사이클
- 프로그램 속 각각의 명령어들은 일정한 주기로 반복되며 실행되는데, 명령어 사이클이라고 함

1) 명령어를 메모리에서 CPU로 가져옴 (인출 사이클), pp 115~116의 2~6번

2) CPU로 가져온 명령어를 실행함 (실행 사이클), 제어장치가 명령어 레지스터에 담긴 값을 해석하고, 제어 신호를 발생시키는 단계

- 명령어를 인출하여 바로 실행할 수 없는 경우도 있음 → 간접 주소 지정방식에서 메모리 접근을 한번 더해야 함
4.3.2. 인터럽트
- CPU의 작업을 방해하는 신호를 인터럽트라고 하며, 동기/비동기로 나눠짐
동기 인터럽트 (예외)
- CPU에 의해 발생하는 인터럽트 → 예외 라고도 함

- CPU가 명령어들을 수행하다가 예상치 못한 상황에 마주쳤을 때, 프로그래밍상의 오류와 같은 예외적인 상황
비동기 인터럽트 (하드웨어 인터럽트)
- 주로 입출력장치에 의해 발생되는 인터럽트 → 하드웨어 인터럽트 라고도 함

- 예를 들어, 입출력장치에 의한 비동기 인터럽트는 세탁기 완료 알림, 전자레인지 조리완료 알림 등, 알림 역할

- 또는 키보드, 마우스와 같은 입출력장치가 어떠한 입력을 받아들였을 때 이를 처리하기 위한 알림을 CPU에 보냄

- 주기적으로 완료 여부를 확인할 필요가 없어, 인터럽트를 받을 때까지 다른 작업을 처리할 수 있음
비동기 인터럽트 처리 순서
1) 입출력장치에서 인터럽트 요청신호 를 CPU에 보냄

2) CPU는 실행사이클이 끝나고, 명령어를 인출 하기 전에 인터럽트 발생여부 확인

3) CPU에서 인터럽트 요청 확인 → 인터럽트 플래그 를 통해 인터럽트 받을 수 있는 지 여부 확인

4) 인터럽트 수용 가능 시, CPU는 지금까지 작업을 백업함 → 스택에 백업

5) CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴(=인터럽트 핸들러) 실행

6) 인터럽트 서비스 루틴 실행 종료 4)에서 백업된 작업 재개

- 다만, 모든 하드웨어 인터럽트를 인터럽트 플래그로 막을 수 있는 것은 아님(정전, 하드웨어 고장으로 발생한 인터럽트)

- 인터럽트 벡터는 인터럽트 서비스 루틴을 식별하기 위한 정보

- CPU는 비동기 인터럽트 요청을 보낸 대상으로부터, 데이터 버스를 통해 인터럽트 벡터를 전달 받음
5.1. 빠른 CPU를 위한 설계 기법 클럭
- 클럭 속도가 높은 CPU는 일반적으로 성능이 좋음 → CPU 속도 단위로 간주되기도 함

- 클럭속도는 Hz 단위로 측정, 1초에 클럭이 몇 번 반복되는지를 나타냄

- 클럭속도가 너무나 높으면, CPU를 빠르게 만들긴 하지만 발열 문제가 생김

→ 클럭 속도만으로는 CPU의 성능을 올리기에 한계가 있음
코어와 멀티코어
- 클럭 속도 외로 성능을 올리기 위한 방법은, CPU의 물리적 코어수를 증가시키거나 스레드 수를 늘리는 방법이 있음

- 코어는 명령어를 실행하는 부품으로, CPU의 경우 명령어를 실행하는 부품 → 명령어를 실행하는 부품을 여러개 포함하는 부품

- 이러한 다중의 코어를 멀티코어 CPU 또는 멀이코어 프로세서라고함

- 코어가 증가한다고 해서 선형적으로 성능이 향상되진 않음

- 코어마다 처리할 명령어들을 얼마나 적절하게 분배하느냐이고 그에 따라서 연산 속도는 크게 달라짐
스레드와 멀티스레드
- 스레드는 사전적 의미로는 실행 흐름의 단위이며, 하드웨어적 스레드와 소프트웨어적 스레드가 있음
하드웨어 스레드
- 하나의 코어가 동시에 처리하는 명령어 단위를 의미

- CPU 에서 사용하는 스레드 용어는 보통 CPU 입장에서 정의된 하드웨어적 스레드를 의미함

- 여러 스레드를 지원하는 CPU는 하나의 코어로 여러개의 명령어를 동시에 실행할 수 있음 (2코어 4스레드)

- 단일 코어로 여러 명령어를 처리하는 CPU를 멀티스레드 프로세서 또는 멀티스레드 CPU라고 함

@하이퍼 스레딩은 인텔의 멀티 스레드 기술임
소프트웨어 스레드
- 하나의 프로그램에서 독립적으로 실행되는 단위를 의미

- 프로그래밍이나 운영체제를 학습할 대 접하는 스레드는 소프트웨어적으로 정의된 스레드를 의미

- 하나의 프로그램은 실행되는 과정에서 한 부분만 실행 될 수도 있지만, 프로그램의 여러 부분이 동시에 실행될 수도 있음

- 예를 들어, 1)입력받은 내용을 화면에 보여주는 기능 2) 입력한 내용이 맞춤법에 맞는지 검사하는 기능 등 동시에 실행 가능

@1코어 1스레드 CPU에서 소프트웨어적 스레드를 몇십 개 실행 할 수 있음
멀티스레드 프로세서
- 설계하는게 매우 복잡하지만, 가장 큰 핵심은 레지스터임

- 하나의 코어로 여러 명령어를 동시에 처리하도록 만들려면 하나의 명령어를 처리하기 위해 필요한 레지스터를 여러 개 가지면 됨

(프로그램 카운터, 스택 포인터, 메모리 버퍼 레지스터, 메모리 주소 레지스터)

- 메모리 속 프로그램 입장에서는 하드웨어 스레드는 한 번에 하나의 명령어를 처리하는 CPU나 다름없음

- 다중 스레드를 가지고 있어도 프로그램 입장에서는 하나의 명령어를 처리하는 CPU가 여러개 있는 것처럼 보임

- 하드웨어 스레드를 논리 프로세서라고 부르기도 함
5.2. 명령어 병렬 처리 기법 멀티 코어, 멀티 스레드를 지원하는 CPU도 중요하지만 CPU가 놀지 않고 최대한 작동하게 만드는 것도 중요함 명령어 파이프라인 - 클럭 단위를 기준으로 명령어 처리 과정 1) 명렁어 인출 2) 명령어 해석 3) 명령어 실행 4) 결과 저장
- 여기서 같은 단계가 겹치지만 않으면 CPU는 각 단계를 동시에 실행할 수 있음

- 명령어를 1)인출 하는 동안에, 다른 명령어를 3)실행 할 수 있고, 실행 동안 연산 결과를 저장할 수도 있음

- 명령어 파이프라이닝 : 공장 생산 라인과 같이 명령어들을 명령어 파이프 라인 에 넣고 동시에 처리하는 기법임

- 파이프라이닝이 높은 성능을 가져오지만, 성능향상에 실패하는 경우도 있음 - 파이프라인 위험

- 파이프 라인 위험에는 1)데이터 위험, 2)제어 위험, 3)구조적 위험이 있음

1) 데이터 위험

- 데이터 의존성에 의해 발생함

- 모든 명령어는 동시에 처리할 수 없기에, 데이터 의존적인 두 명령어(R1+R2= R3, R3+R4= R5)에 대해 제대로 작동 X

2) 제어 위험

- 분기 등으로 인한 프로그램 카운터의 갑작스러운 변화에 의해 발생함

- 기본적으로 프로그램 카운터는 현재 실행중인 멸영어의 다음 주소로 갱신되지만, 실행 흐름이 바뀌어 명령어가 실행되면서
- 프로그램 카운터 값에 갑작스러운 변화 발생 → 이미 처리 중인 명령어는 쓸모 없어짐

- 이를 위해 분기 예측이라는, 프로그램이 어디로 분기할지 미리 예측한 후 주소를 인출하는 기술을 사용

3) 구조적 위험 (자원 위험)

- 명령어들을 겹쳐 실행하는 과정에서 서로 다른 명령어가 동시에 ALU, 레지스터 등과 같은 CPU 부품을 사용하려고 할 때 발생
슈퍼 스칼라
- CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조 (공장 생산 라인을 여러개 두는 것)

- 이러한 처리가능한 CPU를 슈퍼스칼라 프로세서 or 슈퍼스칼라 CPU라고 함

- 매 클럭 주기마다 동시에 여러 명령어를 처리할 수 있어야 하며, 멀티스레드 프로세서를 통해 슈퍼 스칼라 구조를 사용할 수 있음

- 슈퍼 스칼라 또한 선형적으로 속도가 증가하지 않으며, 위험 방지를 위해 고도로 설계 되어야 함
비순차적 명령어 처리(OoOE)
- CPU 성능 향상에 크게 기여한 방법, 대부분의 CPU가 차용하는 기법임

- 이전까지의 파이프라이닝, 슈퍼스칼라는 명령어의 순차적 처리임

- 비순차적 명령어 처리 기법은 순차적 처리가 아닌, 의존성이 없는 처리를 먼저 수행하여, 파이프라인이 멈추지 않도록 함
- 명령어들이 어떤 명령어와 데이터 의존성을 가지고 있는지, 순서를 바꿔도 되는 명령어는 어떤 것인지 판단 할 수 있어야 함
5.3. CISC와 RISC
CPU 언어인 ISA와 각기 다른 성격의 ISA 기반인 CISC, RISC
5.3.1. 명령어 집합
- ISA : CPU가 이해할 수 있는 명령어들의 모음을 명령어 집합 또는 명령어 집합 구조, CPU마다 다를 수 있음

- ISA는 CPU의 언어임과 동시에 CPU를 비롯한 하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속임

명령어 병렬 처리 기법들을 유리한 ISA
5.3.2. CISC (Complex Instruction Set Computer)
- 복잡한 명령어 집합을 활용하는 컴퓨터(CPU)

- 복잡하고 다양한 명령어들을 활용하는 CPU 설계 방식임 (대표적으로 x86, x86-64)

- 명령어의 형태와 크기가 다양한 가변 길이 명령어 를 활용함 → 상대적으로 적은 수의 명령어로도 프로그램을 실행

- ARM 명령어보다 x86-64의 명령어가 짧음(pp 168)

- 프로그램을 실행하는 명령어 수가 적다 → 컴파일된 프로그램의 크기가 작다

- 장점 : 메모리 공간을 절약할 수 있음

- 단점1 : 명령어가 복잡하고 다양한 기능을 제공하기 때문에 실행되기까지의 시간이 일정하지 않음

- 단점2 : 복잡한 명령어 때문에 명령어 하나를 실행하는데 여러 클럭 주기가 필요

- 단점3 : 명령어 수행 시간이 제각각 → 파이프라인이 효율적으로 명령어 처리 어려움

- 복잡한 명령어의 실제 사용 빈도가 낮음

이러한 이유로 CISC 기반 CPU는 성장에 한계가 있음
5.3.3. RISC (Reduced Instruction Set Computer)
- CISC의 단점을 해소하기 위해 명령어 파이프라인 활용, 자주 쓰이는 기본적인 명령어를 빠르게 만드는 것을 원칙으로 생성

- CISC에 비해 명령어 종류 적음, 짧고 규격화된 명령어, 되도록 1클럭 내외로 실행되는 명령어 지향

- RISC는 단순하고 적은 수의 고정 길이 명령어 집합을 활용

- RISC 명령어 집합은 명령어 파이프라이닝에 최적화되어 있음

- 메모리에 접근하는 명령어를 load, store 두 개로 제한, 메모리 접근을 단순화하고 최소화 추구

→ 메모리 접근 단순화, 최소화하는 대신 레지스터를 적극적으로 활용

이러한 이유로 CISC보다 레지스터 연산이 많고, 범용 레지스터 수 많음, CISC보다 명령어 수 많음(ex pp168- ARM)

1. 설명에 맞는 레지스터를 빈칸에 채우기

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

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

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

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

2. 코어

# data[].attributes.attachment_link.title
혼공학습단 13기- 2주차

# data[].attributes.attachment_link.description
@ 1주차 확인- 명령어 = 연산구조 + 오퍼랜드- 연산구조 = 명령어가 수행할 연산 → 데이터전송, 산술논리/연산, 제어 흐름 변경, 입출력 제어- 오퍼랜드 = 연산에 사용할 데이터가 저장된 위치- 오퍼랜드 필드에는 데이터 또는 메모리나 레지스터 주소가 올 수 있음- 오퍼랜드 필드에서 나타내는 위치는 주소 지정 방식에 따라 다름 → 즉시, 직접, 간접 / 레지스터Chapter 4.

# data[].attributes.body
정말 늦었지만 2주차 블로그 링크 업로드합니다 !

생각보다 2챕터의 내용이 많고 숙지할 개념도 많아서 포기할뻔했지만 그래도 늦어도 계속 해보자 하고 작성하였습니다!

# data[].attributes.attachment_link.description
Chapter 02 물리 계층과 데이터 링크 계층02 물리계층과 데이터 링크 계층▼ 10강더보기10강강의의 목적과 배경⎣ 이번 강의는 네트워크 인프라 지식이 왜 중요한지 설명 ⎣ 특히 2장과 3장에서 다룰 내용의 필요성 강조 ⎣ 네트워크 참조 모델을 체계적으로 학습할 예정네트워크 지식과 직무의 변화⎣ 예전에는 ⎣ "이건 개발자가 알아야 할 내용이고, 저건 인프라 담당자가 알아야 할 내용이다"라는 식의 구분이 있었음 ⎣ 이런 구분이 실무에서도 어느 정도 통했음 ⎣ 하지만 지금은 ⎣ 코드로 인프라를 다루는 시대가 되면서 경계가 희미해짐 ⎣ 개발자도 인프라 지식이 필수가 됨앞으로 배울 내용⎣ 네트워크의 기본 구성 요소들 ⎣ 네트워크 인터페이스부터 IP 주소까지 ⎣ 서브넷 마스크와 라우팅의 개념 ⎣ 공인/사설 ..

# data[].attributes.body
이해와 완강을 목표로 꾸준히 화이팅하겠습니다.^^

# data[].attributes.attachment_link.title
혼공머신(혼자 공부하는 머신러닝+딥러닝)_2주.. : 네이버블로그

# data[].attributes.body
밀리지 않겠다 다짐했는데 쉽지 않네요.. 지각생도 받아주셔서 감사합니다 연휴동안 열심히 따라가겠습니다

# data[].attributes.attachment_link.title
[혼공파] 2주차_변수와 if문

# data[].attributes.attachment_link.description
지각해부렀다 - 2주차 미션:p.187 3번 풀고 결과값 화면 인증하기

# data[].attributes.body
사실 이번주 조금 더 빨리 내고 싶었는데 독감같은 감기로 3일을 그냥 날렸내요ㅜㅜㅜ 설연휴 동안 달려서 진도 따라가보겠습니다.

# data[].attributes.attachment_link.title
[혼공머신]2주차 CH.03 회귀 알고리즘과 모델 규제

# data[].attributes.body
지각입니다! ㅎㅎ;

3주차도 여유 되는 대로 바로 작성하겠습니다!

# data[].attributes.attachment_link.readable_text
2주차

chapter2

Ch.02(02-1) 확인 문제 2번(p.87), (02-3)확인 문제 4번(p.111) 풀고 설명하기

집에 있는 케이블에 표기된 명칭 표기를 바탕으로 케이블 구조 및 전송속도 가늠해 보기

02-1 이더넷(Ethernet)

다양한 통신 매체의 규격들과 송수신되는 프레임의 형태, 프레임을 주고받는 방법 등이 정의된 네트워크 기술

이더넷 표준

IEEE802.3

통신 매체 표기 형태

1.전송 속도(data rate)

2.BASE

BASEbande = modulation type(변조 타입)

modulation type: 비트 신호로 변환된 데이터를 통신 매체로 전송하는 방법

일반적으로 LAN환경에서는 대부분 디시털 신호를 송수신하는 베이스밴드 방식 사용

BASE 외에 BROAD(BROADbnad), PASS(PASSband)가 있음

3.추가 특성(additional distinction)

통신 매체의 특성 명시
1) 케이블 종류 (통신 매체 종류)

T: Twisted Pair 케이블 ex) 100BASE-T

C: Coaxial 동축 케이블

S: Short-wavelength 단파장 광섬유 테이블 ex) 1000BASE-SX

L: Long-wavelength 장파장 광섬유 케이블 ex) 1000BASE-LX

2) 전송 거리
최대 전송 거리
예) 100BASE-TX -> 최대 100m 전송 가능(IEEE 표준에서 규정함)

3) 인코딩 방식
물리 계층에서 사용되는 인코딩 방식
예) 100BASE-T4: 8B6T 인코딩 사용(마찬가지로 IEEE 표준 규정)

4) 레인 수
고속 이더텟에서 동시에 사용되는 비트 전송로(레인)의 수
예) 40GBASE-SR4: 4개의 레인 사용
5) 기타 특성

F: Fiber 광섬유 케이블

E: Extended 확장 거리 지원

Z: Extended reach 확장 도달 거리

이더넷 프레임

이더넷 네트워크에서 데이터를 전송하는 기본 단위

출처: self-learning-cs2 깃허브

프리앰블(preamble)

송수신지 간의 동기화를 위해 사용되는 정보

수신지 MAC 주소, 송신지 MAC 주소

MAC주소: 네트워크 인터페이스마다 부여되는 6바이트 길이의 주소, LAN내의 송신지와 송신지를 특정할 수 있다. 일반적으로 고유하고, 변경되지 않는 주소

타입/길이

2바이트 길이로 상위 계층 프로토콜의 종류를 나타내거나 데이터 필드의 길이를 표시한다

type: 어떤 정보를 캡슐화했는지 나타내는 정보(= ethertype)

데이터

상위 계층에서 전달받거나 상위 계층으로 전달해야 할 내용

46~1500 바이트 길이: 46바이트 이하라면 padding(46바이트 이상이 될 때까지 0으로 채워진다)

FCS(Frame Check Sequence)

프레임의 오류를 검출하기 위한 값

CRC(Cyclic Redundancy Check): 순환 중복 검사, 오류 검출용 값

송수신지의 CRC 값을 비교해서 오류 검출

🪄 결론

이더넷 프레임의 역할

02-2 NIC와 케이블

NIC(Network Interface Controller)

케이블

NIC 연결되는 물리 계층의 유선 통신 매체

트위스티드 페어 케이블

twisted pair cable : 구리 선으로 전기 신호를 주고 받는 통신 매체

출처: 트위스티드 페어 케이블

커넥터: RJ-45

noise: 전기 신호를 왜곡시킬 수 있는 간섭

shielding(차폐): 구리선 주변을 감싸 노이즈를 감소시키는 방식

braided shield/foil shield: 차폐에 사용된 그물 모양의 철사와 포일

실드에 따른 트위스티드 페어 케이블의 분류

STP(Shielded Twisted Pair): 브레이드 실드로 구리 선을 감싸 노이즈를 감소시킨 트위스티드 페어 케이블

FTP(Foil Twisted Pair): 포일 실드로 노이즐르 감소시킨 트위스티드 페어 케이블

UTP(Unshielded Twisted Pair): 아무것도 감싸지 않은 구리 선만 케이블

카테고리에 따른 트위스티드 페어 케이블의 분류

이더넷 네트워크에서의 최대 전송 속도 및 주파수를 기준으로 분류

광섬유 케이블

fiber optic cable: 빛(광신호)을 이용해 정보를 주고받는 케이블

전기 신호를 이용하는 케이블에 비해 속도도 빠르고 먼 거리까지 전송 가능

노이즈로부터 간섭다는 영향도 적음(그래서 대륙 간 네트워크 연결)

광섬유 케이블의 생김새

출처: 광케이블(싱글, 멀티)의 종류 및 규격

코어(core): 광섬유 중심, 광섬유에서 실질적으로 빛이 흐르는 부분

클래딩(cladding): 코어를 둘러 싸고 있는 외부 층, 빛이 코어에서 외부로 빠져나가는 것을 방지

싱글 모드 광섬유 케이블

멀티 모드 광섬유 케이블

02-3 허브

허브

여러 대의 호스트를 연결하는 물리 계층 장비

리피트 허브(repeather hub), 이더넷 허브(Ethernet hub)

허브의 특징

1. 전달받은 신호를 다른 포트로 그대로 다시 보낸다.

2. 반이중 모드로 통신(half duplex)합니다.

마치 1차선 도로처럼 송수신을 번갈아가면서 하는 통신 방식

참고) 전이중 모드(full duplex) 송수신을 동시에 양방향으로 할 수 있는 통신 방식

리피터(repeater): 전기 신호가 감소하거나 왜곡되는 것을 방지하기 위해 전기 신호를 증폭시켜 주는 장비

콜리전 도메인(clollision-> 충돌)

동시에 허브로 신호를 송신하면 collision이 발생한다.

호스트가 많이 연결되어 있을수록 총돌 발생 가능성이 높다

collision domain: 충돌이 발생할 수 있는 영역

해결 방법: CSMA/CD 프로토콜 사용, 스위치 사용

MAC: 네트워크 인터페이스 카드(NIC)에 할당된 고유한 하드웨어 주소

6바이트로 표현되며, 일반적으로 16진수 형식으로 사용

ex) AA:BB:CC:DD:EE:FF

앞 3바이트: 제조사 식별자(OUI, Organizationally Unique Identifier)

뒤 3바이트: 고유 장치 식별자(Device Identifier)

CSMA/CD

허브에서 충돌이 발생하는 근본적인 이유는 허브가 반이중 모드로 통신하기 때문

이 문제를 해결하기 위한 프로토콜이 CSMA/CD다

매체 접근 제어 방법의 일종 (MAC: Media Access Control)
여러 호스트가 공유하는 통신 매체(media)에 접근(access)할 때 사용 가능한 제어 방식(control)

Carrier Sense Multiple Access with Collision Detection

1. CS = Carrier Sense= 캐리어 감지

2. MA = Multiple Access, 다중 접근
다른 호스트가 전송 중이지 않을 때 메시지 전송

3. CD = Collision Detection, 충돌 검출
다수의 호스트가 접근하여 충돌이 발생하면 임의의 시간만큼 대기한 후에 다시 전송

02-4 스위치

스위치(switch)

데이터 링크 계층의 네트워크 장비

2계층에서 사용한다 하여 L2 스위치라고도 부름

허브와 다른 점: MAC 주소를 학습해 특정 MAC 주소를 가진 호스트에만 프레임을 전달할 수 있고, 전이중 모드의 통신 지원, CSMA/CD 프로토콜의 대기시간이 없어서 성능적으로도 이점이 있음

스위치의 특징

MAC 주소 학습(MAC address learning): 특정 포트와 해당 포트에 연결된 호스트의 MAC 주소와의 관계를 기억
MAC 주소 테이블(MAC address table): MAC 주소 학습을 위해 포트와 연결된 호스트의 MAC 주소 간의 연관 관계를 메모리표 형태로 기억. 스위치의 포트와 호스트의 MAC 주소 연관 관계를 나타내는 정보.

MAC 주소 학습

스위치의 기본 작동 방식

1) 플러딩(flooding): 스위치가 특정 프레임의 목적지 MAC 주소를 모를 때, 해당 프레임을 모든 포트로 전송하는 과정
2) 포워딩(forwarding)과 필터링(filtering)

포워딩: 스위치가 목적지 MAC 주소를 알고 있을 때, 프레임을 해당 MAC 주소가 있는 포트로만 전송하는 과정

필터링: 스위치가 프레임의 목적지 MAC 주소가 동일한 포트에 있을 때 전송을 차단(drop)하는 기능. 불필요한 데이터 전송을 방지하여 네트워크 트래픽을 최적화
3) 에이징(Aging): 스위치가 MAC 주소 테이블에서 오래 사용되지 않은 MAC 주소 항목을 자동으로 삭제하는 기능

VLAN

Virtual LAN: 한 대의 스위치로 가상의 LAN을 만드는 방법

포트 기반 VLAN

스위치의 포트가 VLAN을 결정하는 방식

VLAN Trunking: 두 대 이상의 VLAN의 스위치를 효율적으로 연결하여 확장하는 방법.

스위치 간의 통신을 위한 특별한 포트인 trunk port에 VLAN 스위치를 서로 연결하는 방식

MAC 기반 VLAN

사전에 설정된 MAC 주소에 따라 VLAN에 결정되는 MAC 기반 VLAN

송수신 하는 프레임 속 MAC 주소가 호스트가 속할 VLAN을 결정하는 방식

기본 숙제

Ch.02(02-1) 확인 문제 2번(p.87), 4번(p.111) 풀고 설명하기

ㄱ) 프리앰블: 송수신지 간의 동기화를 위해 사용되는 정보
ㄴ) 송신지 MAC 주소: 일반적으로 고유하고 변경되지 않는 주소
ㄷ) FCS: 프레임의 오류를 검출하기 위한 값

4번(p.111)
1) CS = 캐리어 감지: 현재 통신 매체의 사용 가능 여부 검사
2) MA = 다중 접근: 다른 호스트가 전송 중이지 않을 때 메시지 전송
3) CD = 충돌 검출: 다수의 호스트가 접근하여 충돌이 발생하면 임의의 시간만큼 대기한 후에 다시 전송

추가 숙제

집에 있는 케이블에 표기된 명칭 표기를 바탕으로 케이블 구조 및 전송속도 가늠해 보기

앗 기숙사라 ㅠㅠㅠㅠㅠㅠ 케이블이 책상 뒤에 숨어 있어요 ㅠㅠㅠㅠ

# data[].attributes.attachment_link.title
혼자 공부하는 네트워크 (2)

# data[].attributes.body
지난주 장염으로 죽다 살았네요..; 1주차 우수 혼공족이 이럴수는 없지! 다시 keep going 합니다!

# data[].attributes.attachment_link.description
기본 미션p. 139 의 확인 문제 3번 문제 풀고 완전한 코드 만들어 비쥬얼 스튜디오 코드에서 실행 결과 인증하기 let x = 15;if (x > 10) { if (x 10 && x 선택미션p. 152의 예제 실행하여 본인의 띠 출력한 화면 캡처하기학습 기록if 조건문상반되는 조건이 있을 때는 if - else 구조를 사용하는 것이 좋다.조건은 상호배타적인 것이 좋다.else if 구문을 활용해 조건 비교 횟수를 줄이는 것이 좋다.if문:if 조건문은 조건식의 결과가 true이면 중괄호 안의 코드를 실행하고, false이면 건너뛴다.if(3 > 2){ console.log(”진실”)}else 구문:if 조건문 바로 뒤에 붙여 반대되는 조건에 대해 처리할 수 있다.if(3 if else if 조…

# data[].attributes.body
감기 몸살로 골골대다가 늦게나마 제출합니다ㅠ.ㅠ

족장님도 감기 조심하세요🤧

# data[].attributes.body
오늘도 지각쟁이는 늦게 올립니다...

이번 3주차는 빠르게 제출하고 담주는 당당히 쉬겠습니다.

매일 미세먼지가 너무 심하네요 건강 조심하세요!

# data[].attributes.attachment_link.title
2주 - 과제 및 마무리

# data[].attributes.body
이번주엔 지각해버렸지만 슬쩍 올려봅니다.. 핑계지만 요새 연초에 방학이라 약속이 많네요..하하... 이번엔 저한텐 금방 기록할 수 있고 편한 노션으로 올려요!

# data[].attributes.body
늦었지만 지금이라도 제출합니다,,,, 지난주에 컨디션이 계속 안좋아서 작성을 이제야 했습니다ㅜ

# data[].attributes.body
공유가 늦었습니다 ㅠㅠ 3주차는 제때제때 낼 수 있도록 ,, 파이팅.. ㅠㅠ

# data[].attributes.attachment_link.title
[혼공머신]2주차 학습내용

# data[].attributes.attachment_link.description
회귀
분류와 다르게 특정 클래스 중 하나로 분류하는 것이 아닌, 임의의 수치를 예측하는 것 k-nn regression (k 최근접 이웃 회귀)
최근접 이웃의 타깃값의 평균으로 예측하는 것 측정 도구 - 결정 계수 R^2
대표적인 회귀 문제의 성능 측정 도구
1에

# data[].attributes.body
2주차 지각자 제출합니다 ㅜㅜ

이번주는 정신이 없었더니 지각을 하고 말았습니다 이번주는 날짜에 잘 맞추겠습니다 ㅜㅜ

# data[].attributes.attachment_link.title
[혼공학습] 혼자 공부하는 자바스크립트 2주차

# data[].attributes.attachment_link.description
안녕하세요. jiwon입니다. 이번주는 정신이 없었더니 결국 지각을 하고 말았습니다........ 이전 주차도 리…

# data[].attributes.body
밀리지 않겠다 선언했는데 밀려버렸습니다,, 오늘 작성한 김에 3주차도 빠르게 공부해서 작성해야겠어요! 나 올해 자바 꼭 마스터한다. 두고보자!! (나 자신에게)

# data[].attributes.attachment_link.title
[혼공학습단13기] 혼자 공부하는 자바 2주차 - Chapter 4 ~ 5

# data[].attributes.attachment_link.description
분명 1주차에 더 분발하겠다고 패들렛에 작성했었는데 망했어요. 정보처리기사 공부에 대회 준비까지 하려니 시간이 너무 모자랐던 것 같습니다.그나마 2주차는 비교적 기초 내용이었기 때문에 쉬웠는데 갈수록 난이도가 상승하기 때문에 걱정이 많이 되네요. 오늘은 2주차 스터디

# data[].attributes.body
요즘 할 일이 너무 많아서 늦어버렸네요... 우수 혼공족 받았다고 빠진 것 같습니다... 다음부턴 일찍 내고 이번에는 숙제만 썼는데, 차차 채워나가도록 하겠습니다. ㅠㅠ

# data[].attributes.attachment_link.readable_text
이번은 2주차 sql 혼공단~!!
1. select문
- select의 가장 기본 형식은 select~from~where

select 바로 다음에는 열 이름, from 다음에는 테이블 이름, where 다음에는 조건식 => 데이터베이스에서 원하는 데이터를 뽑아낼 수 있음.

p.138의 확인 문제 2번 풀고 인증하기

1. select * from member order by height;

- 결과가 출력되는 순서를 조절

2. select * from member limit 5,2;

- 출력하는 개수를 제한하기 위해 사용

3. select * from distinct phone1 from member;

- 조회된 결과에서 중복된 것은 1개만 남김, 열 이름 앞에 붙여주면 됨.

# data[].attributes.attachment_link.description
이번은 2주차 sql 혼공단~!! 1. select문- select의 가장 기본 형식은 select~from~whereselect 바로 다음에는 열 이름, from 다음에는 테이블 이름, where 다음에는 조건식 => 데이터베이스에서 원하는 데이터를 뽑아낼 수 있음. [ 숙제 ]p.138의 확인 문제 2번 풀고 인증하기1. select * from member order by height;- 결과가 출력되는 순서를 조절2.

# data[].attributes.body
다음부턴 늦지 않겠습니다.

블로그는 만들었는데 아직 1주차까지만 써 가지고 나중에 블로그로 다시 올리겠습니다.

# data[].attributes.body
하루,, 늦었지만,, 공부하고 공유했다는 것에 의의를 두고자 지금이라도 공유해봅니다,,ㅎㅎ 2주차인데 벌써 어렵다니.. CPU,,너란 녀석 참 어려운 아이였구나,,?((눙물) 조금 더 친해지길 바라~

역시, 중요한건 꺾여도 그냥 하는 마음 ;)

# data[].attributes.attachment_link.description
* ‘혼자서 공부하는’ 컴퓨터구조+운영체제 이지만, 혼자보단 여럿이하면 더 좋으니 혼공 학습단 13기와 함께합니다 :) [2주차 학습 목록] (*ˊᵕˋ*)ﾉCh04. CPU의 작동 원리01. ALU와 제어장치02. 레지스터03. 명령어 사이클과 인터럽트 Ch05. CPU 성능 향상 기법01. 빠른 CPU를 위한 설계 기법02. 명령어 병렬 처리 기법03. CISC와 RISC Ch04. CPU의 작동 원리4-1. ALU와 제어장치 앞주에서 배웠듯이 ALU는 계산하는 부품이다. 1+2 계산을 할 때 1과 2라는 피연산자와 + 라는 연산이 필요하듯, ALU도 계산을 하기 위해선 피연산자와 연산이 필요하다. 따라서 피연산자에 대한 부분인 ‘피연산자‘를 레지스터로부터 받고, 연산에 대한 부분인 ‘제어신호’를…

# data[].attributes.body
2주차 소감!!

: 항상 클래식 추천해줘서 감사합니다. 코딩하면서 공부하면서 잘 듣고 있습니다. 저번 1주차 보다 더 복잡해진 것 같아서 저번보다는 타자 치는 것이 더 힘들었다. 하지만 힘든만큼 나의 타자실력은 갈수록 더 좋아지고 있어서 그 부분 만큼은 정말로 뿌듯하다. 하지만 나의 자바실력은 항상 제자리 걸음인것 같은 느낌이어서 느낌이 찜찜하다. 하지만 언젠가는 실력이 늘거라 기대하며 2주차 소감을 마무리해보겠습니다. 감사합니다

# data[].attributes.body
본격적으로 인공지능에 대해 공부하는 챕터의 시작이라 그런지 지난 주에 비해 공부하는 시간이 오래 걸렸습니다. 그래서인지 제출 시간이 조금 늦은 점 죄송합니다. 새로운 알고리즘의 활용 방식을 여러 번 훑어 보아도 아직 헷갈리기에 철저하게 예습복습을 해야 할 것 같습니다. 다음주는 제 시간에 맞춰 제출하도록 하겠습니다!

# data[].attributes.attachment_link.title
Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.

# data[].attributes.attachment_link.description
A new tool that blends your everyday work apps into one. It’s the all-in-one workspace for you and your team

# data[].attributes.body
2주차 과제 제출합니다. vs code에서 console창 보는 거는 어떻게 하는 건지 잘 모르겠네요..ㅠ

# data[].attributes.attachment_link.title
혼공학습단<혼공스> - 2주차 : 네이버 블로그

# data[].attributes.body
요새 다른 것도 같이 공부하고 있어서 깜박했습니다 ㅠㅠ 2주차여서 오늘도 쉬웠어요 !!

# data[].attributes.attachment_link.title
파이팅 : 네이버 블로그

# data[].attributes.body
녹록지 않은 2주차네요. 🫠

이해했다고 생각했는데 다시 한번 글 쓰면서 정리되는 부분도 많았던 것 같습니다.

1주차 족장님 조언 받아서 동영상 강의 보면서 겨우겨우 한 느낌입니다. 양이 많네요. CPU와 관련해서 많이 배웠는데.

전 CPU 성능은 그냥 돈 주고 비싼 CPU 사서 쓰는걸로...

# data[].attributes.attachment_link.title
[혼공컴운] 2주차 - CPU의 작동 원리와 성능 향상 기법

# data[].attributes.attachment_link.description
※혼자 공부하는 컴퓨터구조 +운영체제 개인 공부 정리 내용입니다.※진도는 하단의 혼공단 13기 커리큘럼을 참고해 주세요. 복습CPU 내부 구성 요소산술논리연산장치 - ALU : Arithmetic Logic Unit 레지스터 - Register (CPU내부의 작은 임시 저장 장치)제어장치 - CU : Control Unit 진도ALUALU는 레지스터를 통해 피연산자를 받아들이고,제어장치에서 수행할 연산을 알려주는 제어 신호를 받아들입니다.그리고 결괏값과 플래그를 각각의 레지스터에 다시 보냅니다. 플래그연산 결과에 대한 추가적인 상태 정보부호 플래그 - 플래그가 1 이면 음수, 0 이면 양수 제로 플래그 - 플래그가 1 이면 연산 결과가 0임을 의미캐리 플래그 - 플래그가 1 이면 올림수나 빌림수가 발생…

# data[].attributes.body
오늘도 뒤늦은 제출스 ..

링크 복사해서 붙여넣는데 이번엔 제대로 됬겠지 ..? :(

# data[].attributes.headline
[혼공컴운] 2주차_김*진

# data[].attributes.subject
[혼공컴운] 2주차_김*진

# data[].attributes.body
벌써 살짝 위기가 왔는데.. ㅋㅋㅋ 용어가 너무 어려웠나봐요. 가볍게 훑어보려던 나 반성하고 처음부터 끝까지 모든 글자를 읽어보았슴다ㅠ_ㅠ

# data[].attributes.body
해외에 있어서 시차 계산을 잘못해서 자각했네요 ㅎㅎ.. 다음 주차는 시간 맞춰서 제출하겠습니다. 따뜻한 한 주 보내세요:)

# data[].attributes.attachment_link.title
혼공 R_2주차 데이터 분석을 위한 기본 다지기

# data[].attributes.attachment_link.description
데이터 분석 과정은 순환 구조로 데이터 분석 설계, 데이터 준비, 데이터 가공, 데이터 분석, 결론 도출 순으로 이뤄짐.1\. 데이터 분석 설계: 어떤 주제에 대해 분석을 어떻게 할지 계획2\. 데이터 준비: 분석에 필요한 데이터 수집 및 파악3\. 데이터 가공: 불필

# data[].attributes.body
공부할 때 제대로 정리하고 싶은 마음에 시간이 오래 걸려 이번주도 제출이 조금.. 늦었습니다 다음 주차는 시간 지켜보도록 하겠습니다! 화이팅 :)

# data[].attributes.attachment_link.readable_text
import numpy as np perch_length = np.array( [8.4, 13.7, 15.0, 16.2, 17.4, 18.0, 18.7, 19.0, 19.6, 20.0, 21.0, 21.0, 21.0, 21.3, 22.0, 22.0, 22.0, 22.0, 22.0, 22.5, 22.5, 22.7, 23.0, 23.5, 24.0, 24.0, 24.6, 25.0, 25.6, 26.5, 27.3, 27.5, 27.5, 27.5, 28.0, 28.7, 30.0, 32.8, 34.5, 35.0, 36.5, 36.0, 37.0, 37.0, 39.0, 39.0, 39.0, 40.0, 40.0, 40.0, 40.0, 42.0, 43.0, 43.0, 43.5, 44.0] ) perch_weight = np.array( [5.9, 32.0, 40.0, 51.5, 70.0, 100.0, 78.0, 80.0, 85.0, 85.0, 110.0, 115.0, 125.0, 130.0, 120.0, 120.0, 130.0, 135.0, 110.0, 130.0, 150.0, 145.0, 150.0, 170.0, 225.0, 145.0, 188.0, 180.0, 197.0, 218.0, 300.0, 260.0, 265.0, 250.0, 250.0, 300.0, 320.0, 514.0, 556.0, 840.0, 685.0, 700.0, 700.0, 690.0, 900.0, 650.0, 820.0, 850.0, 900.0, 1015.0, 820.0, 1100.0, 1000.0, 1100.0, 1000.0, 1000.0] )

from sklearn.model_selection import train_test_split # train set과 test set으로 나누기 train_input, test_input, train_target, test_target = train_test_split( perch_length, perch_weight, random_state=42) # train set과 test set의 input을 2차원 배열로 바꾸기 train_input = train_input.reshape(-1, 1) test_input = test_input.reshape(-1, 1)

from sklearn.neighbors import KNeighborsRegressor knr = KNeighborsRegressor(n_neighbors=3) # k-최근접 이웃 회귀 모델 훈련 knr.fit(train_input, train_target)

print(knr.predict([[50]]))

[1033.33333333]

위 코드는 03-1 k-최근접 이웃 회귀 에서 만들었던 k-최근접 이웃 회귀 모델로 길이가 50cm인 농어의 무게를 예측한 결과이다. 하지만 길이가 50cm인 농어 샘플의 무게는 1500g 정도라고 하는데, 무게 차이가 이토록 큰 까닭은 무엇일까?

이 문제의 원인을 알아보기 위해 산점도를 그려보면 다음과 같다.

import matplotlib.pyplot as plt

# 50cm 농어의 최근접 이웃 샘플까지의 거리와 인덱스를 반환 distances, indexes = knr.kneighbors([[50]]) # train set의 산점도 그리기 plt.scatter(train_input, train_target) # train set 중 최근접 이웃 샘플만 다시 그리기 plt.scatter(train_input[indexes], train_target[indexes], marker='D') # KNN 회귀로 예측한 50cm 농어 데이터 plt.scatter(50, 1033, marker='^') plt.xlabel('length') plt.ylabel('weight') plt.show()

위 산점도를 보면 문제가 잘 드러난다. 길이가 50cm인 농어와 가장 가까운 이웃은 45cm 부근의 주황색 마름모로 표시된 3개의 샘플이다. 그리고 이 3개 샘플의 무게를 평균낸 값이 KNN 회귀 모델이 50cm 농어의 무게로 예측한 1033g이다. 이를 산점도 위에 표시한 것이 초록색 삼각형이다. 코드를 통해 다시 값을 정확히 확인해보면 아래와 같다.

print(np.mean(train_target[indexes]))

1033.3333333333333

산점도를 보면 길이가 커질 수록 무게가 계속해서 증가하는 경향이 있다. 따라서 길이가 50cm인 농어의 무게는 KNN 회귀 모델이 예측한 1033g(초록색 삼각형)보다 훨씬 큰 값을 가져야 할 것처럼 보인다. 즉, KNN 회귀 모델의 예측에 문제가 있어 보인다. 이를 확인하기 위해 길이가 100cm인 농어의 무게를 KNN 회귀 모델로 예측해보자.

print(knr.predict([[100]]))

[1033.33333333]

이제 문제가 분명히 드러났다. 산점도 상의 데이터 경향에 따르면, 길이가 100cm인 농어의 무게는 50cm인 농어보다 훨씬 더 큰 값을 가져야 할 것으로 보이나, KNN 회귀 모델은 길이가 50cm인 농어와 100cm인 농어의 무게를 똑같은 값으로 예측하고 있는 것이다. 마찬가지로 산점도로 나타내면 아래와 같다.

# 100cm 농어의 최근접 이웃 샘플까지의 거리와 인덱스를 반환 distances, indexes = knr.kneighbors([[100]]) # train set의 산점도 그리기 plt.scatter(train_input, train_target) # train set 중 최근접 이웃 샘플만 다시 그리기 plt.scatter(train_input[indexes], train_target[indexes], marker='D') # KNN 회귀로 예측한 100cm 농어 데이터 plt.scatter(100, 1033, marker='^') plt.xlabel('length') plt.ylabel('weight') plt.show()

KNN 회귀 모델이 길이가 50cm인 농어와 100cm인 농어의 무게를 동일하게 예측함과 동시에 잘못된 예측값을 내놓는 원인은, 길이가 50cm인 농어와 100cm인 농어가 동일한 최근접 이웃을 가지며 이 샘플들이 예측하려는 50cm, 100cm 샘플과 멀리 떨어져 있기 때문이다.

즉, KNN 회귀 알고리즘은 가장 가까운 샘플을 찾아 타깃값을 평균하는 방식이므로, 예측하고자 하는 새로운 샘플이 train set의 범위를 벗어나면 엉뚱한 예측을 할 수도 있는 한계점이 있다. 따라서 길이가 50cm인 농어의 무게를 예측하려면 KNN 회귀가 아닌 다른 알고리즘을 사용해야 한다.

선형 회귀(Linear Regression)

feature와 target의 관계를 가장 잘 나타내는 선형 방정식을 찾아 feature( 독립 변수)와 target(종속 변수) 간의 선형 관계 를 모델링하는 대표적인 회귀 알고리즘인 선형 회귀를 이용해 예측해보자.

from sklearn.linear_model import LinearRegression

# 50cm 농어에 대한 예측 print(lr.predict([[50]]))

lr = LinearRegression() # 선형 회귀 모델 훈련 lr.fit(train_input, train_target)

[1241.83860323]

앞서 KNN 회귀 알고리즘을 사용하여 예측한 값인 1033g보다 훨씬 높게 예측했다.

feature가 농어의 길이 하나이므로 선형 회귀 모델은 위 그림과 같은 직선 방정식의 형태가 된다. LinearRegression 클래스가 찾은 최적의 a, b값 즉, 계수(가중치)와 절편은 lr 객체의 coef_와 intercept_ 속성에 저장되어 있다.

print(lr.coef_, lr.intercept_)

[39.01714496] -709.0186449535477

선형 회귀 알고리즘이 찾은 최적의 직선을 훈련 데이터의 산점도와 함께 시각화해보면 다음과 같다.

# train set의 산점도 그리기 plt.scatter(train_input, train_target) # 15에서 50까지 1차 방정식 그래프 그리기 plt.plot([15, 50], [15*lr.coef_+lr.intercept_, 50*lr.coef_+lr.intercept_]) # 선형 회귀로 예측한 50cm 농어 데이터 plt.scatter(50, 1241.8, marker='^') plt.xlabel('length') plt.ylabel('weight') plt.show()

위 그래프를 보면 선형 회귀로 찾은 직선 방정식이 feature(독립 변수)와 target(종속 변수)의 관계를 충분히 나타내고 있다고 하기엔 다소 부족해보인다. 정확한 수치로 확인하기 위해 결정계수를 구해보면 다음과 같다.

print(lr.score(train_input, train_target)) print(lr.score(test_input, test_target))

0.939846333997604 0.8247503123313558

train set과 test set에서의 결정계수 점수가 조금 차이나지만, overfitting 되었다고 하기에는 train set에서의 점수도 그렇게 높지 않다. 오히려 전체적으로 Underfitting 되었다고 볼 수 있다.

위 그래프의 train set의 산점도를 보면 전체적으로 비선형(곡선)의 형태를 띄고 있음을 알 수 있는데, 그렇다면 선형 회귀를 비선형 데이터로 확장한 형태인 다항회귀 를 이용해보자.

다항 회귀(Polynomial Regression)

다항 회귀는 선형 회귀를 확장하여 독립 변수(x)의 비선형 관계를 모델링하는 것으로, 입력 변수를 다항식으로 변환한 후 선형 회귀를 수행한다. 즉, 다항 회귀를 이용한다는 것은 최적의 직선이 아닌 위 그림과 같이 최적의 곡선 을 찾는 문제로 바뀐 것이다.

이러한 2차 방정식의 형태를 그리기 위해서는 길이를 제곱한 항이 train set에 추가되어야 한다. 다음과 같이 넘파이를 사용하면 간단하게 만들 수 있다.

train_poly = np.column_stack((train_input ** 2, train_input)) # **2 과정에 브로드캐스팅 적용 test_poly = np.column_stack((test_input ** 2, test_input))

새롭게 만든 데이터셋의 크기를 확인해보면 다음과 같다.

print(train_poly.shape, test_poly.shape)

원래 feature인 길이를 제곱하여 왼쪽 열에 추가했기 때문에 train set과 test set 모두 열이 2개로 늘어났다.

이제 이 훈련세트로 선형 회귀 모델을 훈련한 다음 50cm 농어의 길이를 예측해보면 다음과 같다.

lr = LinearRegression() lr.fit(train_poly, train_target) print(lr.predict([[50**2, 50]]))

[1573.98423528]

앞서 직선 방정식으로 예측했을 때 보다 더 높은 값을 예측한 것을 확인할 수 있다. 마찬가지로 이 모델이 훈련한 계수와 절편을 출력해보면 다음과 같다.

print(lr.coef_, lr.intercept_)

[ 1.01433211 -21.55792498 ] 116.0502107827827

즉, 선형 회귀 모델이 학습한 그래프는 다음과 같은 2차 방정식의 형태가 되는 것이다.

이전과 마찬가지로 train set의 산점도와 함께 그래프를 그려보면 다음과 같다.

# 구간별 직선을 그리기 위해 15에서 49까지 정수 배열 만들기 point = np.arange(15, 50) # train set의 산점도를 그리기 plt.scatter(train_input, train_target) # 15에서 49까지 2차 방정식 그래프 그리기 plt.plot(point, 1.01*point**2 - 21.6*point + 116.05) # 선형 회귀 모델이 예측한 50cm 농어 데이터 plt.scatter([50], [1574], marker='^') plt.xlabel('length') plt.ylabel('weight') plt.show()

앞선 단순 선형 회귀 모델보다 train set의 경향을 잘 따르는 훨씬 나은 그래프가 그려졌다. 마지막으로, train set과 test set의 결정계수 점수를 확인해보면 다음과 같다.

print(lr.score(train_poly, train_target)) print(lr.score(test_poly, test_target))

0.9706807451768623 0.9775935108325122

train set과 test set의 결정계수 점수가 크게 높아진 것을 볼 수 있다. 하지만, test set에서의 점수가 조금 더 높다. 여전히 Underfitting 경향이 남은 것으로 생각되므로, 모델의 복잡도를 조금 올릴 필요가 있어 보인다.

# data[].attributes.attachment_link.title
[혼공학습단 13기 | 2주차] 혼자 공부하는 머신러닝+딥러닝 - Chapter 03

# data[].attributes.attachment_link.description
혼공학습단 13기 | 2주차] 혼자 공부하는 머신러닝+딥러닝 - Chapter 03 Chapter 03 회귀 알고리즘과 모델 규제03-1 k-최근접 이웃 회귀- 지도 학습의 한 종류인 회귀 문제 이해하기- k-최근접 이웃 알고리즘을 사용해 농어의 무게 예측하기 ⭐키워드 : 회귀, k-최근접 이웃 회귀, 결정 계수, 과대적합과 과소적합더보기1.

# data[].attributes.body
늦었네요...1주차 생각하고 늦게 시작했더니 타임오버 되었습니다...앞으론 미리미리 하겠습니다 ㅎㅎ..

# data[].attributes.attachment_link.description
숙제기본숙제 1. 다음과 같이 변수가 선언되어 있을 때, scanf 함수의 사용법이 옳은 것을 구하시오..char ch;short sh;int in;float ft;double db; ① scanf(”%d”, &ch);② scanf(”%d”, &sh);③ scanf(”%d%f”, &in, &ft);④ scanf(”%d”, &db);더보기답 : ③2. 다음 프로그램이 완성되도록 빈칸에 알맞은 내용을 적으세요#include int main(void){	char fruit[20];	int cnt;	printf(”좋아하는 과일 : ”);	scanf(”%s”, fruit);	printf(”몇 개 : ”);	scanf(”%d”, &cnt);	printf(”%s를 %d개 드립니다.”, fruit, cnt);	re…

# data[].attributes.body
레지스터에 대해 공부할 수 있어서 좋았습니다. 레지스터라는 게 단순히 메모리보다 데이터를 빠르게 가져올 수 있는 cpu 내의 임시 보관장치.. 정도로 알고 있었는데 이렇게 다양한 종류의 레지스터가 있는 지 몰랐네요.

# data[].attributes.attachment_link.title
Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.

# data[].attributes.attachment_link.description
A new tool that blends your everyday work apps into one. It’s the all-in-one workspace for you and your team

# data[].attributes.headline
[혼공컴운] 2주차_이*나

# data[].attributes.subject
[혼공컴운] 2주차_이*나

# data[].attributes.body
일요일이라는걸 깜빡해서 조금 늦었네요... 커피덕분에 작심삼일 안하고 2주차도 완료할 수 있었습니다 감사합니다♥

# data[].attributes.attachment_link.title
노는게 젤조아 먹는건 더조아 : 네이버 블로그

# data[].attributes.body
1 주차에 비해 이해하기 어려운 부분들이 있어 작성이 늦었습니다ㅠㅠ 이해한 선에서 작성하긴 했는데 틀린 부분이 있을 수 도 있으니 참고만 해주세요.. + 보내주신 꿀커피 맛있게 먹었어요. 감사합니다!!

# data[].attributes.body
작성하고 보니 시간이 늦어버렸네요... 앞으로는 밀리지 않고 매일 조금씩 하면서 더 열심히 하겠습니다! 아직 보충해야 할게 있어서 공부를 더 해야 할 것 같아요!

# data[].attributes.attachment_link.description
Chapter 4CPU의 작동 원리4-1. ALU와 제어장치지난 주에 CPU가 메모리에 저장된 명령어를 읽어들이고, 해석하고, 실행하는 CPU에 대해 정리했다. 이 CPU 내부에는 계산을 담당하는 ALU와 명령어를 읽어들이고 해석하는 제어장치, 작은 임시 저장 장치인 레지스터가 있다. ALU ALU는 레지스터를 통해 피연산자를 받아들이고, 제어장치로 부터 수행할 연산을 알려주는 제어신호를 받아들임.레지스터와 제어장치로부터 받아들인 피연산자와 제어 신호로 산술 연산, 논리 연산 등 다양한 연산을 수행.연산 결과는 메모리에 저장되지 않고 일시적으로 레지스터에 저장 (cpu 프로그램 실행속도 늦어지는거 방지)플래그플래그 레지스터에 저장되는 연산 결과에 대한 추가적인 상태 정보.플래그 종류의미사용 예시부호 플래…

# data[].attributes.body
내용 보강이 필요합니다. -> 보강완료

# data[].attributes.attachment_link.description
ch04 cpu의 작동원리 학습목표ALU와 제어장치 설명레지스터의 종류와 역할 설명명령어 사이클 이해인터럽트의 개념을 이해04-1 ALU와 제어장치 cpu를 구성하는 내부 장치들 산술논리연산장치 == arithmetic and logical unit == ALU연산을 수행하는 장치!제어장치 == control unit == CU명령어를 해석하는 장치!레지스터 == register상태를 담을때 필요한 장치! ALU계산 장치이다. 직접적으로 계산을 처리하는 핵심 장치이다.이런 계산 장치에 input 유형과 output 유형이 있다. [input]제어신호: 제어장치가 명령어를 해석. 오퍼레이션 코드와 대응. 산술 or 논리 등 ALU 전용담당 제어신호들이 있음.피연산자: 데이터. 레지스터 or 메모리로부터 받…

# data[].attributes.body
2주차 완료했습니다!!

3주차에는 더 열심히 하겠습니다...

# data[].attributes.attachment_link.description
변수 : 값을 저장할 때 사용하는 식별자 변수 선언 : 변수를 생성하는 것 변수 할당 : 변수에 값을 넣는 것…

# data[].attributes.body
몰아서 하지말자 !!!!!낼 다시 복습해야겠다

# data[].attributes.attachment_link.description
혼자 공부하는 컴퓨터 구조+운영체제• 진도: Chapter 04 ~ 05• 기본 숙제(필수): p. 125의 확인 문제 2번, p. 155의 확인 문제 4번 풀고 인증하기• 추가 숙제(선택): Ch.05(05-1) 코어와 스레드, 멀티 코어와 멀티 스레드의 개념을 정리하기▼ 기본숙제더보기▼ p. 125의 확인 문제 2번▼ p. 155의 확인 문제 4번▼ 추가 숙제 (코어와 스레드, 멀티 코어와 멀티 스레드의 개념 정리하기)더보기 Chapter 04. CPU의 작동원리(1) ARU(계산하는 부품)받아들이는 정보 : 레지스터를 통해 피연산자를 받아들이고. 제어장치로부터 제어신호를 받아들인다내보내는 정보 : 계산결과와 플래그(연산결과에 대한 추가적인 상태 정보)를 내보낸다.플래그 종류의미예시부호 플래그연산 결…

# data[].attributes.body
1주차 우수혼공단 감사합니다. 더 열심히 하겠습니다.

# data[].attributes.attachment_link.title
파이썬 - 혼공파 2주차 : 네이버 블로그

# data[].attributes.body
이번주는 팀프로젝트가 시작되어서 프로젝트 때문에 신경을 너무써버리고 약속도 있어서 좀 급하게 과제를 완수했습니다. 시간을 조금 넘겨버렸지만... 요약을 챗지피티의 도움을 받아서 어찌어찌 완수했습니다. 챗지피티 사랑해요 :)

정리를 카드뉴스 형식으로 하는게 깔끔하고 좋아 보이는데 내용 요약을 카드뉴스로 하려다보니 폰트 고르고 디자인 고르고 내용 요약하는 시간이 공부시간보다 더 걸리는거 같아서 숙제만 카드뉴스로 올리고 내용 요약은 블로그 글로 올리는게 좋을 거 같다는 생각이 듭니다.

그리고 혼공족장님 우수 혼공족 선정 감사합니다 ♥ 덕분에 커피 잘 마셨어요

# data[].attributes.attachment_link.provider_name
네이버 블로그 | 나의 대외활동/자격증/공부/독서 기록장

# data[].attributes.attachment_link.title
혼공학습단 13기- 혼자 공부하는 C언어 2주차 공부후기 (3장~4장)

# data[].attributes.attachment_link.description
이번주 혼공단 혼공C 공부 내용을 정리해보도록 하겠습니다. 2주차에는 3장과 4장을 공부했습니다! 2주차…

# data[].attributes.body
연말연시여서 행사도 많고, 과제할 여유를 갖지 못하다가 일요일 저녁에 겨우 늦게 과제를 수행합니다.

이렇게라도 해야지, 아니면 이번 기회를 놓치면 또 영영 못할 듯하네요.

아, 블로그를 연계해야 하는데, 그냥 실행결과 캡쳐파일을 올렸네요.

# data[].attributes.body
아쉽게 지각ㅠㅠ 이번주 여행인데 다녀와서 3주차도 후다닥 해야겠어요

# data[].attributes.body
독감이 유행입니다 ㅠ___ㅠ

다들 건강 조심하시구요.

이번 자바스크립트는 뭔가 전보다도 더 재미있게 공부하고 있는 것 같아요. 파이썬으로 비슷한 개념들을 미리 익혀두어서 그런가 봅니다.

황금연휴를 향해~ 일주일 더 힘내봅시다!!

# data[].attributes.body
1분 지각해버렸네요... 제발ㅠ 다음주엔 시간 안에 내길 바라며... 화이팅화이팅입니다.

# data[].attributes.body
급하게 한다고 기본숙제만 겨우 작성했네요.... 다음부터는 미리해야할텐데..

다들 화이팅~

# data[].attributes.attachment_link.title
이진 : 네이버 블로그

# data[].attributes.body
2주차 완료 추가 과제 할려고 하니 고민이 많아 져서 오래 걸렸습니다 ㅎㅎ

# data[].attributes.attachment_link.title
[혼공파] 2주차 조건문

# data[].attributes.attachment_link.description
2주차 과제 p. 187 3번 문제 풀고 본인이 태어난 해와 띠를 출력하는 결과값 화면 인증하기 과제 내용은 연도가 주어지면 연도에 맞은 띠(십이지 띠) 나오도록 프로그램 작성하는것으로 입력 받은 연도를 12로 나눈 나머지를 이용하여 띠가 출력 되게 하면 되는 과제 이다 if, elif 문 을 활용하여 0 1 2 3 4 5 6 7 8 9 10 11일때 각각 출력 해 줘야 하는 값을 지정해 주는 식으로 진행하면 되었다다 만들고 실행일단 정상적으로 실행 되는지 확인 하기 위해 올해( 푸른 뱀띠) >> 2025 넣어 실행 해 보고 책에 예시인 2022년까지 실행 정상 작동됨을 확인했습니다2주차 과제 추가 과제 : else 구문과 elif 구문 정리일단 else 구문은 위 줄에서 나온 조건문이 거짓을 경우 실행…

# data[].attributes.body
다음엔 더 계획적으로.. 공부해야겠어요!! 홧팅

# data[].attributes.attachment_link.description
4강 - 1ALU의 연산 결과값은 일시적으로 어디에 저장되는가?CPU가 메모리에 접근하는 속도 VS CPU가 레지스터에 접근하는 속도 중 무엇이 더 빠른가?연산결과 올림수나 빌림수가 발생했는지 나타내는 플래그는?플래그들은 어떤 레지스터에 저장되는가?제어장치는 클럭 신호

# data[].attributes.body
[혼공C]4-2_코드 실행 화면과 확인 문제

이번주에는 조금씩 올려서 나눠져 있어 기본 숙제 부분 링크 올립니다!

개념 정리 부분은 몰래 추가 해놓도록 하겠습니다

3주차도 화이팅!!

# data[].attributes.body
2주차부터는 새로운 내용이 많아지네요..

다음주도 열심히 해 보겠습니다.

# data[].attributes.attachment_link.title
[혼공네트] #2 - 물리 계층과 데이터 링크.. : 네이버블로그

# data[].attributes.body
재밌었습니다

# data[].attributes.attachment_link.title
[혼공컴운] 2주차_CPU의 작동 원리와 성능 향상 기법

# data[].attributes.attachment_link.description
Ch04 CPU의 작동 원리 04-1 ALU와 제어 장치 1) ALU ALU는 레지스터에서 피연산자를 받아와서…

# data[].attributes.body
다들 화이팅!! ^o^

# data[].attributes.attachment_link.title
공부하고 먹는 일상 : 네이버 블로그

# data[].attributes.body
혼공 2주차 인증합니다~ 매번 긴 따뜻한 메시지 작성을 해주셔서 감사드리고, 편안한 하루 되세요!

링크

# data[].attributes.body
화이팅입니다!!

https://blog.naver.com/ida714/223731008266

# data[].attributes.body
한번봐서는 잘 모르겠네여 하하 다시 봐야겠어여 ㅠ

# data[].attributes.attachment_link.description
모델파라미터 : 선형회귀가 찾은 가중치처럼 머신러닝 모델이 특성에서 학습한 파라미터를 말함

# data[].attributes.body
족장님의 무한한 칭찬으로 작심삼일에서 벗어났습니다 ㅎㅎ 이번주부터는 스프링부트와 병행해서 공부중인데 저번에 자바의 기초도 모르는 상태에서 하는 것과는 비교가 안 되네요!

계속 더 달려나가겠습니다!! 다들 파이팅!

# data[].attributes.attachment_link.readable_text
2주차 혼공자는 4-5장으로, 조건문과 반복문, 참조타입을 공부해야 한다.

작심삼일을 의식해서인지 혼공족장님께서는 정신이 번쩍 들게 만들어주시는 간식을 준비해주셨다.

내가 우수혼공족이라니!! 감사합니다 혼공족장님...! 덕분에 작심삼일을 바로 벗어났습니다 ㅎㅎ 깃허브 블로그에도 계속 기능을 추가하고 있으니 기대해주세요!

그것과는 별개로 잔디는 4일만에 끊겨버렸다... 오늘부터 다시 심겠습니다!

아래는 4-5장 정리 내용과 기본 과제, 추가 숙제이다.

조건문의 경우 C언어와 그다지 다른 점은 없어보였다. 많이 쓰이는 문법 방식이기도 하고, 그렇기 때문에 몸에 익은 문법이기도 하다.

if

switch

for

하나씩 하나씩 값을 모두 꺼내는 for

while

do-while

break

반복문을 중지함

break Label;

 Label: for (...){ for (...){ break Label ; } }

Label이 붙은 for문을 종료시킬 수 있음

continue

실행문을 종료하고 반복문으로 다시 이동함
for는 증감식, while/do-while의 조건식

164페이지 switch문 직접 해보는 손코딩

랜덤하게 숫자를 얻으므로 실행할때마다 결과가 달라진다.

223페이지 05-2 문제 6번 풀고 정리하기

결과는 다음과 같다.

1번을 입력받으면 학생수를 입력받는다. 그리고 입력받은 학생수를 배열의 크기로 잡고 배열 객체를 할당한다.

2번을 입력받으면 for문으로 학생수만큼 반복하며 사용자로부터 정수를 입력받는다. 입력받은 값은 배열에 저장한다.

3번을 입력받으면 for문으로 학생수만큼 반복하며 배열의 값을 출력한다.

4번을 입력받으면 배열의 값을 전부 순회하며 sum에 값을 더하고 max와 비교하여 큰 수를 저장한 뒤 max를 출력하고 sum에 double형으로 형 변환한 학생수를 나눈 평균을 출력한다.

5번을 입력받으면 run에 false를 저장하여 while문에서 탈출하도록 한다.

# data[].attributes.attachment_link.title
[혼공자] 2주차 자바의 조건문 반복문 참조타입

# data[].attributes.body
양이 좀 많아져서 힘들었지만 해낼 수 있었습니다!! 그리구 하다보니까 운영체제와 관련된 지식이 정말 잘 정리되어 있다는 생각이 드는거 같습니다!

# data[].attributes.attachment_link.readable_text
Chapter 4

ALU

레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들인다.

오버플로우

연산 결과가 연산 결과를 담을 레지스터보다 큰 상황을 이야기 한다.

플래그

제어장치

제어 신호를 내보내고, 명령어를 해석하는 부품이다.

역할

클럭 신호를 받아들인다.

해석해야 할 명령어를 받아들인다.

플래그 레지스터 속 플래그 값을 받아들인다.

시스템 버스, 그중에서 제어 버스로 전달된 제어 신호를 받아들인다.

레지스터
역할

프로그램 카운터 : 메모리에서 읽어 들일 명령어 주소를 저장

명령어 레지스터 : 방금 메모리에서 읽어 들인 명령어를 저장

메모리 주소 레지스터 : 메모리의 주소를 저장

메모리 버퍼 레지스터(메모리 데이터 레지스터) : 메모리와 주고받을 값을 저장

플래그 레지스터 : 연산 결과 또는 CPU 상태에 대한 부가적인 정보를 저장한다.

범용 레지스터 : 일반적인 상황에서 자유롭게 사용할 수 있는 레지스터.

스택 포인터 : 스택의 꼭대기를 가리키는 레지스터 (스택 주소 지정 방식에 사용된다)

베이스 레지스터

예시 : 1000번지에 있는 명령어를 읽어 올려면??

1. 프로그램 카운터에 1000을 저장

2. 메모리 주소 레지스터로 이동시키고 명령어를 찾는다.

3. 1000번지에 있는 값을 메모리 버퍼 레지스터에 저장한다. 그리고 프로그램 카운터가 1 증가한다. -> 순차적으로 프로그램이 실행되는 이유

4. 명령어 레지스터에 메모리 버퍼 레지스터에 저장된 값을 넣어서 명령어를 실행시킨다.

변위 주소 지정 방식
오퍼랜드 필드의 값과 특정 레지스터의 값을 더하여 유효 주소를 얻어내는 주소 지정 방식

방식.1 상대 주소 지정 방식

오퍼랜드와 프로그램 카운터의 값을 더하여 유효 주소를 얻는 방식

방식.2베이스 레지스터 주소 지정 방식

오프랜드와 베이스 레지스터의 값을 더하여 유효 주소를 얻는 방식

명령어 사이클과 인터럽트

명령어 사이클 : 하나의 명령어를 처리하는 정형화된 흐름

인출 사이클 : 메모리의 명령어를 CPU로 가지고 오는 단계

실행 사이클 : CPU로 가져온 명령어를 실행하는 단계

간접 사이클 : 명령어를 인출해도 바로 실행 사이클에 돌입할 수 없을때

인터럽트 : CPU가 수행중인 작업을 방해를 받아 잠시 중단됨.

동기 인터럽트(예외) : CPU에 의해 발생하는 인터럽트

폴트(fault) : 예외를 처리한 직후 예외가 발생한 명령어부터 실행을 재개하는 예외다.

트랩(trap) : 예외를 처리한 직후 예외가 발생한 명령어의 다음 명령어부터 실행을 재개하는 예외다.

중단(abort) : CPU가 실행 중인 프로그램을 강제로 중단시킬 수밖에 없는 심각한 오류를 발견했을 때 발생하는 예외

소프트웨어 인터럽트(software interrupt) : 시스템 호출이 발생했을 때 나타난다.

비동기 인터럽트(하드웨어 인터럽트) : 주로 입출력장치에 의해 발생하는 인터럽트

입출력장치가 CPU에 인터럽트 요청 신호를 보냄

CPU는 실행 사이클이 끝나고 명령어를 인출하기 전에 항상 인터럽트 여부를 확인

요청을 확인하고 인터럽트 플래그를 통해서 인터럽트를 받아들일 수 있는지 확인

가능하면 지금까지 작업을 백업 -> 이때 스택을 사용해서 기존의 값을 저장해놓는다.

인터럽트 벡터를 참조해서 인터럽트 서비스 루틴을 실행

루틴 실행이 끝나면 백업해 둔 작업을 복구해서 실행을 재개

인터럽트 플래그(하드웨어 인터럽트 관련) : 하드웨어 인터럽트를 받아들일지 무시할지 결정한다.

인터럽트 서비스 루틴(하드웨어 인터럽트 관련) : 인터럽트를 처리하기 위한 루틴

인터럽트 벡터(하드웨어 인터럽트 관련) : 서비스 루틴을 구분하기 위해 사용한다.

Chapter 5 CPU 성능 향상 기법

빠른 CPU를 위한 설계 기법

클럭

클럭 속도는 헤르츠(Hz) 단위로 측정한다. (기본 클럭 속도, 최대 클럭 속도로 나눠져 있다)

최대 클럭 속도를 강제로 더 끌어올리는 기법을 오버클럭킹(overclocking)이라고 한다.

코어와 멀티코어

클럭 속도만 너무 높게 만들면 CPU에 무리가 간다. -> 코어와 스레스 수를 늘려서 해결이 가능하다.

코어는 간단하게 '명령어를 실행하는 부품'으로 생각하면 된다.

코어마다 처리할 명령어들을 얼마나 적절하게 분배하느냐에 따라서 연산 속도가 크게 달라진다.

스레드와 멀티스레드

스레드 : 실행 흐름의 단위

하드웨어적 스레드 : 하나의 코어가 동시에 처리하는 명령어 단위, 논리 프로세서로 부르기도 한다.

소프트웨어적 스레드 : 하나의 프로그램에서 독립적으로 실행되는 단위

멀리스레드 프로세서 : 하나의 코어로 여러 명령어를 동시에 처리하는 CPU
하나의 명령어를 처리하기 위한 레지스터를 여러개 가지고 있으면 구현이 가능하다.

명령어 병렬 처리 기법

코어를 늘리고, 클럭 속도를 증가시키는 것도 중요하지만 CPU를 효율적으로 사용하는 것도 중요하다.

명령어 파이프라인

명령어 파이프라이닝 : 명령어를 파이프라인에 넣고 동시에 처리하는 기법

파이프라인 위험

데이터 위험 : 명령어 간 데이터 의존성에 의해서 발생한다.

제어 위험 : 분기 등으로 인한 프로그램 카운터의 갑작스러운 변화에 의해서 발생한다.
이걸 위해서 분기 예측을 사용한다. -> 프로그램이 어디로 분기할지 미리 예측하고 주소를 인출한다.

구조적 위험(자원 위험) : 명령어들을 겹쳐 실행하는 과정에서 서로 다른 명령어가 동시에 ALU, 레지스터같은 CPU부품을 사용하려 할 때 발생한다.

슈퍼스칼라 : CPU내부에 여러 개의 명령어 파이프라인을 포함한 구조

위험성이 있는 구조다. -> 위험을 피하기가 더 까다로운 구조라서

비순차적 명령어 처리(OoOE) : 명령어들을 순차적으로 실행하지 않는 기법

순서를 바꿔도 문제없이 실행이 가능한 부분을 순서를 바꿔서 실행한다.

CISC와 RISC

명령어 집합

명령어 집합, 명령어 집합 구조(ISA) : CPU가 이해할 수 있는 명령어들의 모음.

ISA가 다르면 서로 해석하는 방식도 다르다.

CISC

가변 길이 명령어를 활용합니다.

메모리를 최대한 아끼며 개발해야 했던 시절에 인기가 높았다.

적은 수의 명령어만으로 프로그램을 동작시킬 수 있다.

활용하는 명령어가 워낙 복잡하다는 단점이 있다. -> 파이프라인이 효율적으로 명령어 처리를 못한다.

명령어의 규격화가 어려워서 파이프라이닝이 힘든다.

RISC

명령어의 종류가 CISC에 비해서 적다.

고정 길이 명령어를 사용한다.

메모리 접근을 단순화, 최소화하는 대신 레지스터를 적극적으로 활용한다.

숙제
125P 확인 문제 2번
보기 : 프로그램 카운터, 명령어 레지스터, 플래그 레지스터, 범용 레지스터

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

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

3. 범용 레지스터 : 데이터와 주소를 모두 저장할 수 있는 레지스터

4. 명령어 레지스터 : 해석할 명령어를 저장하는 레지스터

155P 확인 문제 4번

추가 숙제 -> 공부를 하면서 내용을 정리하였습니다.

코어와 멀티코어

클럭 속도만 너무 높게 만들면 CPU에 무리가 간다. -> 코어와 스레스 수를 늘려서 해결이 가능하다.

코어는 간단하게 '명령어를 실행하는 부품'으로 생각하면 된다.

코어마다 처리할 명령어들을 얼마나 적절하게 분배하느냐에 따라서 연산 속도가 크게 달라진다.

스레드와 멀티스레드

스레드 : 실행 흐름의 단위

하드웨어적 스레드 : 하나의 코어가 동시에 처리하는 명령어 단위, 논리 프로세서로 부르기도 한다.

소프트웨어적 스레드 : 하나의 프로그램에서 독립적으로 실행되는 단위

멀리스레드 프로세서 : 하나의 코어로 여러 명령어를 동시에 처리하는 CPU
하나의 명령어를 처리하기 위한 레지스터를 여러개 가지고 있으면 구현이 가능하다.

# data[].attributes.attachment_link.title
혼자 공부하는 컴퓨터구조 운영체제 - 2주차

# data[].attributes.attachment_link.description
내용Chapter 4ALU레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들인다.오버플로우연산 결과가 연산 결과를 담을 레지스터보다 큰 상황을 이야기 한다.플래그연산 결과에 대한 추가적인 상태 정보를 이야기 한다.부호 플래그제로 플래그오버플로우 플래그인터럽트 플래그슈퍼바이저 플래그제어장치제어 신호를 내보내고, 명령어를 해석하는 부품이다.역할클럭 신호를 받아들인다.해석해야 할 명령어를 받아들인다.플래그 레지스터 속 플래그 값을 받아들인다.시스템 버스, 그중에서 제어 버스로 전달된 제어 신호를 받아들인다.레지스터역할프로그램 카운터 : 메모리에서 읽어 들일 명령어 주소를 저장명령어 레지스터 : 방금 메모리에서 읽어 들인 명령어를 저장메모리 주소 레지스터 : 메모리의..

# data[].attributes.body
또 다른 문제 상황이 주어져서 흥미롭게 공부할 수 있었습니다.

# data[].attributes.attachment_link.description
문제 상황 및 현재 상황

# data[].attributes.body
1주차 넘어 2주차까지 왔습니다.

혼자서 꾸준히 하기 쉽지 않은데요. 그래도 과제 제출이라는 숙제가 있어서 1주일에 1~2번씩은 코딩 공부의 강제성이 있어 좋습니다!!

혼자서 책 외에도 추천해주신 백준 사이트 이용해서 복습도 꾸준히 해야겠다고 생각이 들었어요~~

# data[].attributes.attachment_link.title
[혼공학습단13기/혼공파] 혼자 공부하는 파이.. : 네이버블로그

# data[].attributes.body
최적의 K값을 찾으려면 손실곡선을 그려봐야한다고만 알고있었는데 이제야 완전히 이해가 되네요..

# data[].attributes.attachment_link.title
Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.

# data[].attributes.attachment_link.description
A new tool that blends your everyday work apps into one. It’s the all-in-one workspace for you and your team

# data[].attributes.body
저번주는 설치하고 맛보기였다면 이제부터 딥하게 들어가는 것 같아요.

벌써 어려움을 느끼긴 했지만 하나하나 하다보면 언젠가 익숙해지겠죠?

모두 파이팅

# data[].attributes.attachment_link.provider_name
네이버 블로그 | 콩콩

# data[].attributes.attachment_link.title
[혼공S][혼공학습단 13기]2주차

# data[].attributes.headline
[혼공머신] 2주차_서*호

# data[].attributes.subject
[혼공머신] 2주차_서*호

# data[].attributes.body
블로그 링크

2주차 03-1 k-최근접 이웃 회귀

2주차 03-2 선형회귀

2주차 03-3 특성 공학과 규제

2주차입니다. 반가운 회귀분석이 나와 생각보다 빨리 끝나서 지금쯤이었으면 원래 모두 완료되었을 것이라고 기대했으나, 노트북이 바이오스를 잘못 건드린 것인지... 윈도우가 깨진 것인지는 몰라도 노트북이 중간에 맛이 가서 처음부터 다시 세팅 하느라 하루를 날려버렸네요...

안 그래도 윈도우에서 CUDA 설정하는 게 머리 아픈데 덕분에 주말을 알차게? 보내버리고 말았어요... 하지만 윈도우에서 스마트 앱 컨트롤을 켜고 싶었기에 이참에 초기화하면서 해당 설정을 켜도록 하자고 마음을 먹고 눈물을 머금고 깃허브와, DBMS와, 기타 소프트웨어 등등 잡다한 것들을 다 지우고 다시 시작했답니다...

그래도 CUDA 설정을 제외하면 소프트웨어 라이선스들을 생각보다는 빨리 원상복구가 되어서 다행이라고 생각하며 지금 시점에서는 조금 이르지만, 블로그를 올립니다. 아마 내일 이후에 보실 때는 다 작성이 완료 되어있을 것입니다. 아참, 패들렛 계정은 지워야겠어요 ㅎㅎㅎ

# data[].attributes.attachment_link.description
본 게시글은 한빛미디어의 혼자 공부하는 머신러닝+딥러닝을 바탕으로 작성되었습니다.

# data[].attributes.body
추가숙제: https://velog.io/@iddadda/혼공자week2-Day8

저번에 파이썬 배울 때 했던 내용이 새록새록 떠오르던 2주차였습니다. 조건문, 반복문 그리고 배열의 기본 원리에서 파이썬이랑 겹치는 부분 많으니까 이해하기 조금 더 easy~ 했던 것 같아요 😁

시간 맞춰서 꼬박꼬박하려니 일주일이 바쁘네요 ㅠ_ㅠ 그렇지만 우수 혼공족 선정으로 덕분에 저도 극혐목요일 잘 보냈습니다!

다음주도 파이팅입니다!

# data[].attributes.attachment_link.readable_text
뚝딱 출력되니까 재밌다!

1. if문

조건식이 true면 블록실행, false이면 블록 실행 x

손코딩

16라인은 if문 블록에 포함되지 않아서 상관없이 실행됨

2. if-else문

조건식이 true이면 if 블록 실행, false이면 else 블록 실행

손코딩

3. if-else if-else문

손코딩

주사위 굴리기 (손코딩)

4. switch문

변수 값에 따라 실행문 결정됨.

변수와 동일한 값인 case가 없을 땐 default가 실행됨. (생략 가능)

break;가 없으면 다음 case 차례대로 실행됨.

Switch문 주사위굴리기 (손코딩) [기본숙제]

if문에서 한 주사위 코딩, switch문으로 변형

break 없을 때 (손코딩)

char타입 switch (손코딩)

대소문자 구분없이 동일하게 처리하기

String타입 switch (손코딩)

직급별 월급 출력하기

# data[].attributes.attachment_link.description
뚝딱 출력되니까 재밌다!조건식이 true면 블록실행, false이면 블록 실행 x16라인은 if문 블록에 포함되지 않아서 상관없이 실행됨if문 손코딩조건식이 true이면 if 블록 실행, false이면 else 블록 실행if-else조건식이 여러개flase일때 다른 조

# data[].attributes.body
디버깅을 안 누르고선 왜 안되는거지 하고 있었네요.... ㅜㅜ 바보가튼걸..

항상 진심으로 응원해주시는 혼공족장님께 감사하다는 말씀 전하고 싶습니다...!

# data[].attributes.attachment_link.description
변수: 변할 수 있는 자료로, 값을 저장할 때 사용하는 식별자변수 선언 - 변수에 값을 할당 - 변수 참조 변수 = 값 -> 값을 변수에 할당한다.복합 대입 연산자: 기존의 연산자와 조합해서 사용할 수 있는 연산자바보같이.. 디버깅을 안 누르고선 왜 실행이 안되지 이러

# data[].attributes.body
족장님! 이번 주는 부랴부랴 작성해봤습니다. SQL이 다른 언어랑 비슷한 듯 재밌는 점들이 많네요!! 다음 주도 즐거운 마음으로 공부하겠습니다. 좋은 한 주 보내세요 :)

+헉!!!!! 족장님 이제야 확인했습니다....죄송합니다 1주차가 올라간 것도 모르고 있었네요ㅠㅠㅠ 늦었지만 링크 변경 완료했습니다! 확인 부탁드려요. 오늘도 좋은 하루 보내세요 족장님 :)

# data[].attributes.attachment_link.title
Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.

# data[].attributes.attachment_link.description
A new tool that blends your everyday work apps into one. It’s the all-in-one workspace for you and your team

# data[].attributes.headline
[혼공네트] 2주차_유*영

# data[].attributes.subject
[혼공네트] 2주차_유*영

# data[].attributes.body
해외여행 중이라 교재 대신 영상만 보고 공부했어요. 영상만 보다 보니 지루하고, 잠깐 딴 생각을 하면 놓치는 부분이 많아 어려움이 있네요 ㅠㅠㅠ. 다음 주까지는 영상을 보고 정리한 후, 다다음 주에 교재 3주차를 몰아서 읽고 다시 정리할 계획입니다. 수영장에서 물놀이하다가 받은 달달한 쿠폰 알림은 작은 행복이었어요 ㅎㅅㅎ

링크가 안 올라가요ㅠㅠ해외라고 거절하네요ㅠㅠㅠ

student_rabbit/223730787331 네이버 블로그입니다ㅠㅠ

비번은 '혼공네트' ~~~

# data[].attributes.attachment_link.description
당신의 모든 기록을 담는 공간

# data[].attributes.body
2주차 완

# data[].attributes.attachment_link.title
[네트워크] 2025 혼자 공부하는 네트워크 2주차

# data[].attributes.body
국비지원과 병행하여 시간에 쫓기듯이 하는 습관을 버리고 미리미리 해야한다는걸 다시 한 번 느끼게 되었습니다.. 다음 주는 더 부지런히 해야겠어요!

# data[].attributes.attachment_link.readable_text
자바스크립트 조건문과 사용자 입력 예제

1. 조건문을 활용한 숫자 비교

코드 설명

다음 코드는 변수x의 값이 특정 조건에 부합하는지 확인하는 예제입니다. 조건문을 중첩하거나 논리 연산자를 사용하여 같은 결과를 출력할 수 있습니다.

코드:

실행 결과:

조건에 맞습니다.

조건에 맞습니다2.

설명:

첫 번째 조건문은x가 10보다 크고 20보다 작은 경우"조건에 맞습니다."를 출력합니다.

두 번째 조건문은 논리 연산자&&를 사용하여 동일한 조건을 확인한 후"조건에 맞습니다2."를 출력합니다.

2. 사용자 입력을 통한 띠 계산

코드 설명

아래 코드는 사용자가 태어난 해를 입력하면 해당 해의 띠를 계산하여 출력합니다. 사용자의 입력은prompt를 통해 받으며, 결과는alert로 출력됩니다.

코드:

실행 예시:

입력: 1998

결과: 1998년에 태어났다면 호랑이띠 입니다.

# data[].attributes.attachment_link.description
이 카테고리는 한빛미디어의 혼자 공부하는 자바스크립트 교재를 학습하는 내용을 정리하는 공간입니다.자바스크립트 조건문과 사용자 입력 예제 1. 조건문을 활용한 숫자 비교코드 설명다음 코드는 변수 x의 값이 특정 조건에 부합하는지 확인하는 예제입니다. 조건문을 중첩하거나 논리 연산자를 사용하여 같은 결과를 출력할 수 있습니다.코드:실행 결과:조건에 맞습니다.조건에 맞습니다2.설명:첫 번째 조건문은 x가 10보다 크고 20보다 작은 경우 "조건에 맞습니다."를 출력합니다.두 번째 조건문은 논리 연산자 &&를 사용하여 동일한 조건을 확인한 후 "조건에 맞습니다2."를 출력합니다.2.

# data[].attributes.body
이제부터는 양이 많아져서 하루에 조금조금씩이라도 해봐야겠습니다ㅎㅎ!! 방학 때 전공 관련으로 공부해보고 싶었는데 혼공단을 통해 할 수 있는 나 자신 칭찬해~😆

# data[].attributes.attachment_link.title
기록 저장소 : 네이버 블로그

# data[].attributes.body
뭣.. 늦어서 복잡한 심정으로 업로드 하려는데 몇분 전 업로드가 네 분이나 있네요 ..ㅎ...

이러면 왠지.. 안심되네요

# data[].attributes.attachment_link.provider_name
네이버 블로그 | 청춘 사업

# data[].attributes.attachment_link.title
[혼공씨] 2주차_위기입니다

# data[].attributes.attachment_link.description
알바를 다니게 되어 물리적으로도 정신적으로도 지쳐서 미루고 미루다 결국 마지막 날 저녁이 되고 말았다.…

# data[].attributes.body
연초 부터 다사다난한 회사일과 연차 꼭 소진 해야 케서 이제야 돌아왔습니다. 설 전에 가출자 찾으시긴 하시겠지만... 그 전에 돌아왔다고 신고 드립니다.

https://blog.naver.com/himeggang/223730982087

스택과 큐, 스레드 코어 등등은 좀 더 좋은 자료 검색해서 3주차때 추가로 넣겠습니다.

특히 스택과 큐는 C 프로그래밍 책에 예제로 길게 봤던 기억이 있는데 ;;; 그 책이 안 보이네요 ㅠㅠ

# data[].attributes.attachment_link.title
혼공 컴운 1~2주차 - 돌아온 탕아

# data[].attributes.attachment_link.description
#혼공학습단#혼공컴운#컴퓨터운영체제#한빛미디어#한빛 정말 다사다난한 2023년을 우째 보내고 혼공 13기…

# data[].attributes.body
이번 주는 계획한 만큼 공부를 하지 못해서 조금 아쉽지만 어찌저찌 마무리는 했습니다. 2주차를 반성하며 3주차는 더 노력하는 일주일을 보내고 싶습니다. 아좌좌!

# data[].attributes.attachment_link.description
🍤TMI,, 1/12 - 1/15 상하이에 다녀왔새우,, 즐겁게 놀고 공부할 계획이었으나 감기이슈로 이번주는 공부를 거의 못 했어요,,,
벌써 새해 다짐을 못 지킨 것 같아 속상하지만 지금부터라도 다시 해보려고요. 다들 목표한 바를 지키지 못했더라도 포기하지 말고 당

# data[].attributes.body
이번주에 좀 바빠서 중도 하차할까말까 고민을 많이 했어요. 그래도 2주차까지 완료!

# data[].attributes.attachment_link.provider_name
네이버 블로그 | 진우님의 블로그

# data[].attributes.attachment_link.description
2주차 숙제1 2주차 숙제2 1번 2번 3번 + 추가숙제 2주차 끄읏-!

# data[].attributes.body
이번 주도 족장님과 함께 마무리 하는 날이네요!!

아무래도 많은 공부가 있는데 꾸준함이 최고인 것 같아요!! 족장님도 이렇게 긴 코멘트를 남겨주시다니

세상이 많이 달라지고 족장님은 더 멋있어 지셨네요!!

족장님 감기 조심하세요!

# data[].attributes.attachment_link.provider_name
데이터 분석가가 되고픈 취준생

# data[].attributes.attachment_link.readable_text
이 글을 보고 페이지 맨 상단에 올리기로 결심했습니다...

자바를 자바... 이런걸 싫어하시다니...

제가 엄청나게 고민한 대본인데.....

자바랑 대본을 합치면 자바 스크립트!(자바 때문에 이상해진거 아니에요,,,,)

아무튼!!!

이번 주의 마지막도 족장님이랑 같이 한다니 얼마나 좋을까요!!!

저번에 했을때는 패들릿이 없었는데 디스코드는 존재 자체를 몰랐어요! WOW!

활발하게 진행될 때가 언제일까 궁금하긴 하네요!!!

근데 왜 혼공이 코딩 공부서적 중에 최고일까?

항상 책을 사기 전엔 그런 생각을 해요...(혼공머신도 그랬어요!)

사보시면 압니다! 여러분들! 혼공학습단과 함께라면 두렵긴 하지만 생각하는 것보다 어렵지 않아요!

[혼공학습단 13기] 혼공학습단 활동과 도서별 커리큘럼 안내

안녕하세요, 한빛미디어 혼공학습단의 혼공족장입니다. 혼공학습단 13기의 활동과 도서별 커리큘럼 안내 드립니다. 13기 활동 기간 1주차: 1월 6일 ~ 1월 12일 2주차: 1월 13일 ~ 1월 19일 3주차: 1

hongong.hanbit.co.kr

학습단이 아니라도 도서별 커리큘럼 보시고 유튜브 강의 시청하시면서 공부를 후딱후딱하시면 즐거운(?) 방학이 됩니다!!!

본론으로 가겠습니다!

2주차 기본숙제

첫 번째는 1번이 나왔네요!

두 번째는 4번이 나왔습니다!!

생각보다 재밌을 뻔 했는데, 저기 따옴표를 모르고 작은 따옴표로 해버려서 오류가 났다는 사실!!

방금 전까지 딥러닝 공부하다가 와서 그래 ㅠㅠㅠㅠㅠㅠㅠ 아무튼 이렇게 되네요!!

이런 실수가 되게 무서운 법입니다!!

아무래도 switch 문에서 랜덤으로 뽑히는 만큼 default 값도 요리조리 섞어서 해보시면 재밌을 거에요!!!

2주차 추가숙제!

선택하는데에서 아마 제가 코드를 잘못 짜서 다음 칸으로 넘어가는 것 같네요!!

하지만 이만하면 되게 잘했다고 만족합니다!!

for로 짤 걸... while로 괜히... 흙

# data[].attributes.attachment_link.title
[혼공학습단 13기 2주차] 혼자 공부하는 자바

# data[].attributes.attachment_link.description
이 글을 보고 페이지 맨 상단에 올리기로 결심했습니다... 자바를 자바... 이런걸 싫어하시다니... 제가 엄청나게 고민한 대본인데..... 자바랑 대본을 합치면 자바 스크립트!(자바 때문에 이상해진거 아니에요,,,,) 아무튼!!! 이번 주의 마지막도 족장님이랑 같이 한다니 얼마나 좋을까요!!! 저번에 했을때는 패들릿이 없었는데 디스코드는 존재 자체를 몰랐어요! WOW! 활발하게 진행될 때가 언제일까 궁금하긴 하네요!!!

# data[].attributes.body
우와 벌써 2주차 끝이라니!!!!! 저 이러다 진짜 완권하는거 아녜요!?!? 렛츠고 렛츠고 렛츠고!!!! 다른 분들과 같이 하니 뭔가 든든하네요 ㅎㅎ 랜선으로 응원 받는 느낌 최고다잉~!

# data[].attributes.body
2주차 입니다.

# data[].attributes.attachment_link.title
[혼공학습단] 혼자 공부하는 C언어 2주차

# data[].attributes.attachment_link.description
[chapter 03] 변수와 데이터 입력~[chapter04] 연산자 03-1 변수
-변수 선언 방법
변수 선언 방법은 데이터에 맞는 자료형과 변수명을 나란히 씀
예)
int a; (정수를 넣을 공간으로 int)
-대입 연산자 =
대입 연산자는 오른쪽 값을 왼쪽에

# data[].attributes.body
2주차 과제 완료. 점차 어려워지지만 서서히 따라가자.

# data[].attributes.attachment_link.title
비전공, 비수도권, 비대학 3非의 도전 : 네이버 블로그

# data[].attributes.body
많은 공부 되었습니다. 감사합니다.

# data[].attributes.body
아슬아슬하게..하하하하...코드가 계속 비슷비슷해서 반복되다보니 외워지는 것 같은데!!!! 그치만 새로운 문제 나오면 또 못 푸는거 아닐까 싶어서 걱정이에요...어흑.....그래도 책이 참 알차서 좋네요!!! 👍

# data[].attributes.attachment_link.description
SELECT 열이름 FROM 테이블 이름 WHERE 조건식하이픈 2개 연속(--)하고 한 칸 띄기 : 주석처리하는 방법열이름에 띄어쓰기 있으면 언더바로 대체 또는 큰따옴표 사용전각문자는 alt + = 키를 통해 기본문자로 바꿔줄 것🚩실습용 데이터 구축1) 데이터 베이

# data[].attributes.body
저번 주에 다른 분의 블로그를 실수로 훔쳤습니다. 대단히 죄송합니다 ^_ㅜ

# data[].attributes.attachment_link.description
1주차 때 제 블로그를 올리지 않고 다른 분의 블로그를 올려버렸네요. 정말 정신이 없나봅니다. 블로그를…

# data[].attributes.body
개인적으로 이번 주 넘 바빳지만 어쨌든 일주일 지나갔다는 생각에 뿌듯해지네여,, 다음 주는 더 열심히 하려구욧 🔥🔥

# data[].attributes.attachment_link.title
[혼공머신] 2주차_회귀 / 특성 공학 / 변환기(Transformer)

# data[].attributes.attachment_link.description
2주차Ch. 03 회귀 알고리즘과 모델 규제03-1 k-최근접 이웃 회귀지도학습 알고리즘은 크게 분류와 회귀로 나뉜다.분류는 ch.2에서 해본 내용이고, 회귀는 어떤 숫자를 예측하는 것이다!k-최근접 이웃은 회귀에도 사용할 수 있는데, 가까운 샘플 k개의 수치의 평균으로 예측해준다.k-최근접 이웃 분류와 k-최근접 이웃 회귀 모두 fit(), score(), predict()를 사용할 수 있다.하지만 다른점은! 회귀에서 score()를 사용하면 정확도가 아닌 결정계수 값이 나온다.✅회귀에서의 score() : 결정계수 값- 0에 가까울 때 > 타깃의 평균 정도 예측- 1에 가까울 때 > 예측이 타깃에 아주 가까워 짐결정계수 대신 sklearn.metrics패키지의 mean_absolute_error를 사…

# data[].attributes.body
이번주는 부산여행과 겹쳐 부랴부랴 공부했습니다. 부산가는 열차 안에서도 혼공단과 함께 하는 시간은 매우 생소했으나, 썩 괜찮은 경험이었습니다. 그리고 참.. 매번 생각하지만 크롤링은 사람을 귀찮게 하는 재주를 가진 것 같네요.

그리고 추천해주신 카레빵 잘먹었습니다. 아주 카레맛이 진하게 나서 그런가 공부가 술술 잘되더군요.

# data[].attributes.attachment_link.title
[혼공분석] 2주차_데이터 수집하기

# data[].attributes.attachment_link.description
벌써 1월의 절반이 지나간다.(아니 뭐했다고 1월이 반이나 끝난걸까요?)패기롭게 시작한 혼공학습단 13기, 열정은 가득하지만 일과 대학원 준비를 병행하며 하니쉬는시간이 아이스크림 녹듯이 없어졌다. 그래도 나름대로 얻는 성취는 가득하니 즐겁게 하게 되는 느낌이랄까. 1주차에서는 데이터 분석에 대한 이야기를 하고, 간단하게 파이썬 라이브러리와 사용을 해보았다.2주차는 본격적으로 분석에 필요한 데이터를 수집한다. 데이터 수집 방법으로 가장 널리 알려진 ‘API’라는 것을 통해 데이터를 수집해보자.1. APIAPI(Apllication Programming Interface)는 간단히 말하면, 프로그램 간 소통 방법을 정의한 것이다. 기본적으로 사람과 다르게 컴퓨터는 정해진 규칙에 따라 정보를 주고 받는다.…

# data[].attributes.body
2주차 제출합니다. 파이팅!

# data[].attributes.body
다음 주 꼭 내용 정리도 같이 하겠습니다 ㅎㅎ

# data[].attributes.attachment_link.title
[혼공머신] 2주차 과제

# data[].attributes.attachment_link.description
혼자 공부하는 머신러닝과 딥러닝3장 회귀 알고리즘과 모델 규제

# data[].attributes.body
티스토리가 더 깔끔해서 벨로그에서 옮겼습니다. 다시 시작하는 느낌✨

# data[].attributes.attachment_link.title
[혼공학습단 13기] 2주차 : CPU의 작동 원리 | CPU 성능 향상 기법

# data[].attributes.attachment_link.description
04-1. ALU와 제어장치ALU, 플래그, 제어장치, 제어신호CPU의 구성 요소 중 ALU와 제어장치가 어떤 정보를 내보내고 받아들이는지를 중심으로 두 장치의 역할 학습ALU계산을 하는 부품인데 계산을 하기 위해서는 피연산자와 수행할 연산이 필요하다📍 ALU가 받아들이는 정보피연산자 : 레지스터 통해 받아들인다제어신호 : 제어장치로부터 받아들인다(제어신호가 수행할 연산을 알려준다)📍 ALU가 내보내는 정보특정 숫자나 문자, 메모리 주소플래그연산할 때마다 메모리에 접근하면 속도가 그만큼 느려지기 때문에 ALU의 결과값은 레지스터에 우선 저장한다. 플래그(flag)연산 결과에 대한 추가적인 상태 정보. 일종의 참고 정보이다플래그들은 플래그 레지스터에 저장된다.e.g. 이진수만 봐서는 양수인지 음수인지…

# data[].attributes.body
2주차도 제출 완료! 3주차도 파이팅입니다.

# data[].attributes.attachment_link.title
[혼자 공부하는 자바] 2주차

# data[].attributes.body
농어를 잡았다!

안농, 농어야

안농,, 농어야,,,

안농,,,,

# data[].attributes.body
2주차도 완료입니다~~!! 하루만에 끝내려니 양이 좀 많아서 다음주부터는 매일매일 조금씩이라도 하려고 합니다. 화이팅 ㅎㅎㅎ!!!

# data[].attributes.attachment_link.description
Chapter 02 1) 데이터 분석과정 추가숙제 1단계 : 데이터 분석 설계하기 주제선정 -> 가설 설정 -> 분석가능 변수 구성 (파생변수 고려) -> 분석항목 결정 2단계 : 데이터 준비 필요한 데이터 준비 웹 크롤링 3단계 : 데이터 가공 원시 데이터(처음의 데이터, 가공 X)를 원하는 형태의 데이터로 가공 ...

# data[].attributes.body
2주차 과제 제출합니다.

# data[].attributes.attachment_link.description
p.142 직접 해보는 손코딩(switch문) 실행 후 결과 화면 캡쳐하기

# data[].attributes.body
2주차 숙제 인증합니다!

# data[].attributes.attachment_link.title
[혼공학습단 13기 혼공머신🤖] 혼자 공부하는 머신러닝 + 딥러닝 week2

# data[].attributes.attachment_link.description
📜기본 숙제 : Ch.03(03-1) 2번 문제 출력 그래프 인증하기 📜 추가 숙제 : 모델 파라미터에 대해 설명하기 머신러닝 모델이 특성에서 학습한 파리미터 🔖 Chap03. 회귀 알고리즘과 모델 규제3.1 K-최근접 회귀 알고리즘- 회귀 : 임의의 수치를 예측- K-최근접 이웃 회귀예측하려는 샘플에 가까운 샘플 K개를 선택선택된 샘플들의 평균으로 예측값 반환- 데이터 준비- 결정계수(R2)R2 = (타깃-예측)2의 합 / (타깃-평균)2의 합- 과대적합 vs 과소적합과대적합 : 훈련세트에만 잘 맞는 모델과소적합 : 훈련세트보다 테스트 세트의 점수보다 높거나 두 점수가 낮은 경우 3.2 선형 회귀- K-최근접 이웃의 한계- 선형 회귀특성이 하나인 경우 어떤 직선을 학습하는 알고리즘- 다항…

# data[].attributes.body
2주차 숙제 인증합니다~ !루즈해지던 와중에 족장님께서 선물을 보내주셔서 다시 한번 정신을 차리게 되었네요 감사합니다!! 혼공학습단 화이팅🔥

# data[].attributes.attachment_link.description
오늘의 학습 목표는 K-최근접 이웃 회귀와 선형 회귀 알고리즘의 차이를 이해하고 사이킷런을 사용해 여러 가지 선형 회귀 모델을 만드는 것입니다.k-최근접 이웃 회귀 모델로 길이가 50cm인 농어의 무게를 예측했더니 실제 저울의 농어의 무게와 차이가 너무 많이 난다고 합

# data[].attributes.body
https://m.blog.naver.com/nexengold/223730895114

이번 주는 양이 좀 많아서 힘들었지만 재미있었습니다🫠

# data[].attributes.body
이번주엔 좀 더 열심히 공부해보았읍니다.

지난 주보다 좀 더 어려워서 머리카락 5가닥 정도 뜯었습니다 호호 하지만 머리카락은 다시 자라나는 법..... 다음 주도 뜯으러 갑네다.... 주말에도 공부하는 갓생-life... ☆ 진짜로...행복해요하하하^^

# data[].attributes.attachment_link.title
혼공네트] 2주차 - 과제 : Ch2. 물리 계층과 데이터 링크 계층

# data[].attributes.attachment_link.description
요약 정리2025.01.18 - [Network] - 네트워크] 이더넷(Ethernet)에 대한 설명 네트워크] 이더넷(Ethernet)에 대한 설명이더넷(Ethernet)다양한 통신 매체의 규격들과 송수신되는 프레임의 형태, 프레임을 주고 받는 방법 등이 정의된 네트워크 기술유선 LAN 환경에서 가장 대중적으로 사용된다.1. 물리 계층 관련 이더orblangjeee.tistory.com2025.01.19 - [Network] - 네트워크] NIC와 케이블 네트워크] NIC와 케이블NIC(Network Interface Controller)호스트와 통신 매체를 연결하고, MAC 주소가 부여되는 네트워크 장비 (호스트의 ‘귀’와 ’입)호스트를 네트워크(LAN)에 연결하기 위한 하드웨어NIC의 외관인터페이스…

# data[].attributes.body
https://sage-science-519.notion.site/Chapter3-2-4db79cbdfac84096b77b21ac68610078?pvs=4

https://sage-science-519.notion.site/Chapter3-3-f18f7e00c8f64759b27c8984537f7c16?pvs=4

아자아자파이팅!

# data[].attributes.body
2주차 완료입니다!

# data[].attributes.attachment_link.title
[혼공컴운]2주차_CPU의 작동 원리/CPU 성능 향상 기법

# data[].attributes.attachment_link.description
✔️CPU 의 작동 원리ALU와 제어장치의 역할 ALU: ALU는 산술논리연산장치로서, 계산 역할을 담당ALU 작동 방식: 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 제어 신호를 받아들이며 수행ALU는 계산 결과와 더불어 플래그(연산 결과에 대한 추가 정보로 양수 또는 음수를 구분)를 내보낸다. 플래그의 종류부호 플래그: 연산 결과의 부호를 나타낸다.제로 플래그: 연산 결과가 0인지 여부를 나타낸다.캐리 플래그: 연산 결과 올림수나 빌림수가 발생했는지 나타낸다.오버플로우 플래그: 연산 결과가 연산 결과를 담을 레지스터보다 큰 상황(오버플로우)가 발생했는지 나타낸다.인터럽트 플래그: CPU의 작업을 방해하는 인터럽트가 발생했는지 나타낸다.슈퍼바이저 플래그: 커널 모드, 사용자 모드로 실행 중인지…

# data[].attributes.body
저희 언니 21일에 솔로 나와요..!! 덕질 들킨김에 자랑하고 싶었어요😎

# data[].attributes.body
거의 다 처음 알게된 개념들이라 어렵기도 했지만, 새로운 분야를 공부한다는 생각에 이번주도 열심히 달렸습니다...ㅎ

담부터는 영상도 챙겨서 봐봐야겠네요!

# data[].attributes.attachment_link.description
√ 미션1. 기본 미션 1) 02-1답: ㄱ-프리앰블, ㄴ-송신지 MAC 주소, ㄷ-FCS 2) 02-3 1. 이더넷이란?이더넷은 다양한 통신 매체의 규격들과 송수신되는 프레임의 형태, 프레임을 주고받는 방법 등이 정의된 네트워크 기술이더넷 표준에 따라 지원되는 네트워크 장비, 통신 매체의 종류와 전송 속도 등이 달라질 수 있다. 1. 프리앰블 : 이더넷 프레임의 시작. 이더넷 프레임이 오고 있음을 알 수 있다.2. 수신지/송신지 MAC 주소 : 일반적으로 고유하고, 변경되지 않는 주소로써 네트워크 인터페이스마다 부여 (변경 가능)3. 타입/길이 : 이더넷 프레임이 ‘어떤 정보를 캡슐화했는지’를 나타내는 정보4. 데이터 : 네트워크 계층의 데이터와 헤더를 합친 PDU 포함5. FCS : 수신한 이…

# data[].attributes.body
지난주는 빙판길에 넘어져서 타박상이 있었네요. 크게 안다쳐서 다행이지만 주말에 숙제는 빼먹을수가 없지요.

# data[].attributes.attachment_link.title
[혼공학습단] 혼공13기 혼공분석 2주차 미션

# data[].attributes.attachment_link.description
2주차 [기본미션]p.150의 확인문제 1번 풀고 인증하기1.다음과 같은 데이터프레임 df가 있을 때 loc 메서드의 결과가 다른 하나는 무엇인가요? ④　col1col20a11b22c3① df.loc[[0,1,2], [‘col1’,col2’]]② df.loc[0:2, ‘col1’:col2’]③ df.loc[:2,[True, True]]④ df.loc[::2, ‘col1’:’col2][설명]①∼③ 동일하게 출력됨④ 첫 번째, 세 번째 행출력됨[선택미션]

# data[].attributes.body
추가숙제하다가 살짝 문제가 생겼는데 깔끔하게 해결이 안되어 아쉽네요. 좋은 방법을 찾으면 다시 정리해보겠습니다~

# data[].attributes.attachment_link.title
바람 따라 구름 따라 : 네이버 블로그

# data[].attributes.body
﻿https://blog.naver.com/jnsppoj/223730857297

2주차도 보람차게 공부한것 같다.

# data[].attributes.attachment_link.title
[2주차] 혼자 공부하는 SQL : 네이버 블로그

# data[].attributes.body
2주차

# data[].attributes.attachment_link.description
*진도: 챕터4~5(CPU의 작동 원리, CPU의 성능 향상 기법, 메모리와 캐시 메모리) *과제1 설명에 맞는…

# data[].attributes.body
﻿https://blog.naver.com/gpgptgp/223730845764

단어만 뜨문뜨문 들어봤던 용어나 개념들에게 대해 잘 알게 되어서 좋았다.

# data[].attributes.attachment_link.provider_name
네이버 블로그 | 검은여우의 블로그

# data[].attributes.attachment_link.title
[2주차] 📙 혼자 공부하는 얄팍한 코딩지식 공부하기

# data[].attributes.attachment_link.description
숙제 01-3. 1-1.자바 프로그래밍 연습 : 이클립스 1-2.iOS용 카메라 앱 개발 : 엑스코드 1-3. 윈도우용…

# data[].attributes.body
2주차 문제는 열심히 풀었지만 select 문과 관련된 전반적인 내용을 시간이 되면 다시 정리해보고자 합니다. 그리고 delete 를 사용하기가 생각보다 까다롭고 오류가 많이 나네요. 이 부분도 복습해봐야겠습니다!

# data[].attributes.attachment_link.description
[확인문제]빈칸에 들어갈 말을 고르시오. 1. SELECT * FROM member [ORDER BY] height;-> ASC, DESC 는 오름차순, 내림차순이며 DISTINCT 는 SELECT 뒤에 오고, OR 와 AND가 올 자리도 아니니 정답은 ORDER BY. 2. SELECT * FROM member [LIMIT] 5,2;-> 5줄부터 시작해서 2개만 출력하겠다는 의미. 바로 알 수 있음.3. SELECT [DISTINCT] phone1 FROM member;-> SELECT 뒤에 올 수 있는 것이 주어진 보기 중에서는 DISTINCT 뿐임. [자율] 첫 번째로, member 테이블에 INSERT를 이용하여 아래 값을 추가했다. 데이터를 삭제하는 방법도 있는데, 예시는 아래와 같다…

# data[].attributes.body
2주차 과제 제출합니다!

파이썬 넘 재밌네요

이 느낌 끝까지 느끼고 싶어요..

# data[].attributes.attachment_link.title
[혼공파] 2주차_무슨 띠세요?

# data[].attributes.attachment_link.description
오늘의 숙제띠는 12마리 동물이 반복된다. 따라서 연도를 12로 나눈 나머지도 0~11이 반복될 것이다.나눈 나머지를 구하는 연산자인 % 를 사용하고 if구문으로 참/거짓을 판별했다.나는 2006년생 개띠다. 출력값이 잘 나오는지 확인하면성공~처음에 오류났는데 이유는

# data[].attributes.body
2주차도 숙제하고 제출합니다.

아자아자