더 빠른 CPU를 만들기 위해서는 어떻게 해야할까? 빠른 CPU를 설계하기 위해서는 다음과 같은 것들을 고려한다. 1. 클럭 클럭이 왜 CPU 성능에 연관이 있을까? 1. 컴퓨터 부품들은 '클럭 신호'에 맞춰 움직인다. 2. CPU는 '명령어 사이클' 이라는 정해진 흐름에 맞춰 명령어들을 실행한다. 때문에 클럭 신호가 빠르게 반복되면 CPU를 비롯한 컴퓨터 부품들이 빠르게 움직이고 명령어 사이클도 빨라져서 명령어들이 더욱 빠르게 실행되어 컴퓨터의 속도가 빨라지게 된다. 오버클러킹 CPU의 클럭은 속도가 일정하지 않다! 그렇기 때문에 고성능을 요하는 순간에는 속도를 올리고 그렇지 않을 때는 낮추기도 한다. 최대 클럭 속도에서 강제로 클럭을 더 끌어올릴 수도 있는데, 이것을 오버클러킹이라고 한다. 📌 하지만..
비연결성이 필요한 이유❓ 클라이언트1이 서버와 연결을 했다. 요청을 보내고 응답을 받았다. 클라이언트2도 연결하고 요청을 보내고 응답을 받았다. 클라이언트3도 연결을 했다.... 이런 경우 클라이언트1, 2는 계속 서버에 연결이 되어있다. 그러면서 서버 자원을 지속적으로 소모한다. HTTP는 기본적으로 연결을 유지하지 않는 모델이다. 일반적으로 초 단위의 이하의 빠른 속도로 응답하고 동시에 처리하는 요청은 매우 적다. 비 연결성으로 하면 서버 자원을 매우 효율적으로 사용할 수 있다. 비 연결성의 한계 1. 비 연결성은 연결을 끊는 것이기 때문에 다시 세션을 맺을라고 하면 3way handshake 시간이 추가된다. 2. 웹 브라우저로 사이트를 요청하면 자바스크립트, css, 추가 이미지등 수 많은 자원이..
클라이언트 서버구조 Request Response 구조 클라이언트는 서버에 요청을 보내고, 응답을 대기 서버가 요청에 대한 결과를 만들어서 응답 이런 요청 응답방식으로 인해 클라이언트와 서버가 분업을 할 수 있어서 서버와 클라이언트가 독립적으로 진화할 수 있다. 서버가 붐비면 서버만 더욱 발전시키고 클라이언트만 발전시키는 형태로 진화가 가능하다. 상태유지(Stateful)? 무상태 프로토콜(Stateless) 서버가 클라이언트의 상태를 보존하지 않는다. 장점 : 서버 확장성이 높음 단점 : 클라이언트가 추가 데이터 전송 Stateful, Stateless 차이 상태유지 : 중간에 다른 점원으로 바뀌면 안된다. (중간에 다른 점원으로 바뀔 때 상태 정보를 다른 점원에게 미리 알려줘야 한다.) 무상태 : 중..
URI, URL, URN uri는 로케이터, 이름 또는 둘 다 추가로 분류될 수 있다. uri : 가장 큰 개념이 있다 리소스를 식별하는 주민번호를 식별한다고 생각하면 된다. 거기에는 크게 2가지가 있는데 url : 리소스 로케이터 - 리소스가 이 위치에 있다라는 의미 urn : 리소스의 이름이다. - 이름을 가지고 찾아가는 것 우리가 평소에 쓰는 뭐뭐 닷컴같은것들이 uri이다. urn은 이름을 부여해서 사용하지만 사실상 거의 이름을 찾을 수 없다. urn은 잘 사용하지 않기 때문에 있다 정도만 알면 된다. URL의 뜻 Uniform : 리소스를 식별하는 통일된 방식 Resource : 리소스란 우리가 구분할 수 있는 모든것을 리소스라고 생각하면 된다. Identifier : 다른 항목과 구분하는데 필요..
개인프로젝트를 깃헙에 올리면 무슨 장점이 있을까? 프로젝트,개인공부를 진행하는 도중 노트북이 고장났다고 하면 다른 컴퓨터로 다운받아 계속 가능 노트북과 데스크탑을 번갈아 사용할 때 코드를 카톡에 복붙해서 옮기지 않아도 됨 회사나 밖에서 작업한 코드를 집에서도 이어서 하고 싶을 때 클론하기만 하면 됨 깃헙에 프로젝트를 올리는 방법에는 2가지가 있다. 프로젝트 폴더를 전에 포스팅에서 했던 방식이 있고 2024.03.11 - [Git] - Mac에서 Git과 Github을 사용해보자 Mac에서 Git과 Github을 사용해보자 우리가 프로젝트를 하다보면 수정본이 생기기 마련. 이 수정본들을 보통 버전이라고 부른다. 하지만 파일로 버전을 관리하면 파일이 많아지고 이름도 복잡해져서 문제가 발생하는데 이런 짤이 1..
ALU와 제어장치 ALU는 계산하는 부품이다. ALU는 레지스터를 통해 피 연산자를 받아들이고 제어장치로부터 수행할 연산을 알려주는 제어신호를 받아들인다. ALU가 연산할 때마다 결과를 메모리에 저장하면 레지스터에 저장하는 것보다 메모리에 저장하는 것이 느리기 때문에 프로그램 실행속도가 느려질 수 있다. 그렇기 때문에 연산결과를 레지스터에 우선저장한다. 플래그? ALU는 계산결과와 플래그를 같이 내보낸다. 플래그는 플래그 레지스터에 따로 저장된다. 플래그는 연산 결과에 대한 추가적인 상태 정보를 말한다. 대표적인 플래그로는 아래와 같이 있다. 1. 부호플래그 : 연산한 결과의 부호를 나타낸다. 부호플래그가 1인 경우 계산 결과는 음수, 0일 경우는 양수를 의미 2. 제로 플래그 : 연산 결과가 0인지 여..
IP의 역할 우리가 흔히 말하는 IP는 인터넷프로토콜의 약자이다. 인터넷프로토콜은 말 그대로 인터넷의 규칙이라고 보면 된다. ip에는 출발지 ip와 도착지 ip가 있는데 이것을 통해서 데이터를 송수신하는 것이다. 그래서 지정한 ip주소에 데이터를 전달할 수 있다. 데이터를 패킷이라는 통신 단위(택배박스)에 나눠담아 전달한다. ip프로토콜의 한계 1. 비연결성 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다. 클라이언트가 송수신하는 서버가 패킷을 받을 수 있는 상태인지를 모른다. 2. 비신뢰성 중간에 패킷이 사라진다면? - 케이블이 끊어지거나... 패킷이 순서대로 오지 않는다면? - 원래 hello world로 와야하는데 world hello 순서대로오면 전혀 다른 뜻으로 전달된다. ip프..
우리가 프로젝트를 하다보면 수정본이 생기기 마련. 이 수정본들을 보통 버전이라고 부른다. 하지만 파일로 버전을 관리하면 파일이 많아지고 이름도 복잡해져서 문제가 발생하는데 이런 짤이 그 문제를 보여준다. Git은 위와 같이 파일을 여러개로 만들지 않고 하나의 파일로 여러 버전을 관리하면 좋겠다!라고 생각해서 나온 프로그램이라고 볼 수 있다. Git? GIthub? GIt과 Github는 이름이 비슷하지만 서로 다른 곳에서 동작하는 버전관리 프로그램이다. 이 둘의 차이점을 알기 위해서는 서버와 클라이언트라는 뜻을 알면 도움이 되는데 클라이언트 : 원하는 데이터를 서버에 요청 서버 : 클라이언트의 요청에 응답하여 데이터를 보냄 간단히 설명하면 위와 같이 설명할 수 있다. 우리가 컴퓨터로 서버에 데이터를 요청..