메모리 공간과 주소 바인딩32비트 컴퓨터의 메모리 크기는 4GB우리가 흔히 사용하는 컴퓨터는 32비트 또는 64비트 주소 체계를 사용하고 있다. 32비트 주소 체계를 사용한다는 의미는 메모리의 고유 위치를 나타내기 위해 위해 32비트(4바이트)가 사용되며, 총 2³²개의 고유한 주소를 가질 수 있다는 의미다. 또한, 32비트 컴퓨터의 CPU가 한 번에 처리할 수 있는 데이터 크기이며, 레지스터의 크기이기도 하다.컴퓨터는 바이트 단위로 메모리 주소를 부여하기 때문에 32비트 주소 체계를 사용하게 된다면 최대 약 4GB의 메모리 크기를 가지게 된다. 여기서 직접 비트를 바이트로 환산하는 계산을 해보고 왜 4GB인 지 헷갈릴 수 있다.2³² bit = 4,294,967,296 bit = 536,870,912 ..
CPU 스케줄링의 목적일반적으로 사용자 프로그램이 수행되는 과정은 CPU 작업과 I/O 작업의 반복으로 구성된다. CPU 작업은 레지스터 간의 연산 및 메모리 접근 등으로 이루어지기 때문에 빠르게 수행될 수 있다. 반면 I/O 작업의 경우, CPU의 제어권이 운영체제 커널로 넘어갈 뿐 아니라 상대적으로 매우 느린 입출력 장치의 접근이 필요하게 된다. 전자를 CPU 버스트라고 하고, 후자를 I/O 버스트라고 한다.CPU 버스트(burst) : 사용자 프로그램이 직접 CPU를 가지고 빠른 명령을 수행하는 일련의 단계I/O 버스트(burst) : 커널에 의해 입출력 작업을 진행하는 비교적 느린 단계각 프로그램마다 CPU 버스트와 I/O 버스트가 차지하는 비율이 균일하지는 않다. CPU 버스트가 길게 나타나는 ..
이 글을 보기 전에 다음 문제를 한 번 풀어보는걸 추천한다(포스팅을 하게 된 이유)https://www.acmicpc.net/problem/1197직접 문제를 풀어 보면, 메모리 제한이 128MB이기 때문에 생각보다 까다로울 수 있다. 정점의 개수도 10,000개라서 섣불리 인접 행렬을 사용했다가는 입구부터 막힐 수 있다. 특히나 이 글에 대한 내용을 잘 모르면, 사이클을 탐색하는 과정에서 DFS로 접근하다가 매모리 초과를 수 없이 겪을 수 있다(경험담).서로소 집합 자료 구조(Union-Find)최소 스패닝 트리를 알아보기 전에 먼저 서로소 집합 자료 구조에 대해 알아야 한다. 서로소 집합 자료 구조란 서로소 부분 집합들로 나눠진 원소들에 대한 정보를 저장하고 조작하는 자료 구조 우리가 알고 있는 수학..
HTTP 메서드HTTP 메서드 종류GET일반적인 서버의 리소스 조회 시 사용쿼리 스트링(Query String)에 {key}={value} 형태로 서버에 데이터를 전송할 수 있음데이터가 URI에 그대로 노출되기 때문에 보안성에 취약함HTTP Message exampleGET /api/users/1 HTTP/1.1Host: example.com 💡 GET도 Message Body에 요청 데이터를 담아서 보낼 수 있지만 나중에 추가된 스펙이기 때문에 지원이 안될 수 있다.POST서버에 데이터를 전송해 새로운 리소스를 생성하거나 특정 프로세스를 처리하는 등 리소스마다 정해진 방식에 따라 처리Message Body에 다양한 방식으로 데이터를 담아서 보낼 수 있음(요즘은 JSON이 거의 표준)애매하..
HTTP가 무엇인가요HTTP는 HyperText Transfer Protocol로 문자 그대로 HTML 문서를 주고받을 때 사용하는 프로토콜이다. 요즘은 웹에서 이루어지는 통신 대부분이 HTTP로 행해지며, HTML 뿐만 아니라 음성, 동영상, 메일 등의 다양한 데이터도 HTTP로 통신된다. 현재 전 세계 인터넷 구조의 절대적 위치를 차지하는 World Wide Web(W3)이 HTTP를 사용하기 때문에 웹 서비스 개발자에게 HTTP는 알아야 할 필수 프로토콜이다.HTTP가 왜 이렇게 크게 성공하고, 현재까지 범용적으로 사용되고 있는지 이해하기 위해서는 먼저 HTTP가 가지고 있는 특성이자 장점들을 알아야 한다.Client - Server 모델HTTP는 클라이언트-서버 아키텍처를 기반으로 한다. 클라이언..
링크 계층에서의 전송(1홉 통신) 시 문제 의식 우리가 네이버에서 제공하는 서비스들을 이용하려면 먼저 네이버 서버와 통신을 해야 하고, 그 방법들 중 가장 보편적으로 www.naver.com 의 도메인 주소로 접속합니다. www.naver.com이란 도메인은 DNS 서버에서 매핑되어 있는 네이버의 ip로 바꿔 전송해 줍니다. 즉, 우리는 네이버의 ip주소를 이용해 네이버 서버와 통신을 하게 되는 것이고, 이는 네트워크 계층 통신이라고 이해할 수 있습니다. 실제 네트워크 계층은 Internet Protocol을 이용하고, 이 ip를 통해 멀티홉 통신을 합니다. 하지만 네트워크 통신의 계층적 구조를 생각해 보면, 멀티홉 통신을 하기 위해서는 결국 1홉 통신이 먼저 가능해야 합니다. 어떻게 보면 멀티홉 통신은..
Layered Architecture OSI 7 계층에 대해 공부하기 전에, 우리는 네트워크 통신을 왜 7개나 되는 계층으로 나눈 것인가에 대해 궁금해야 합니다. 이에 대한 답을 우리 일상 생활에서 예를 들어 보겠습니다. 우리가 어딘가로 비행기를 타고 여행을 가야하는 상황이라고 생각해 보겠습니다. 먼저 티켓을 구매하고, 짐을 붙입니다. 그런 다음 게이트를 통과하고 비행기에 탑승 후 목적지로 출발합니다. 목적지에 도착을 하면 전의 과정들을 역순으로 행하면서 공항을 빠져나갑니다. 여기서 우리가 거치는 각각의 단계들은 기능별로 나뉘어 있습니다. 티켓을 사거나 확인하는 작업은 매표소에서 이루어지고, 짐을 붙이는 작업은 체크인 카운터 같은 곳에서 행해집니다. 이처럼 단계별로 행해지는 서비스도 다르고 직원들도 다릅..
소켓이란 소켓은 논리적으로 컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점이다. 이 말이 무슨 말이냐면, 네트워크를 이용해 데이터를 송수신 하고 싶은 프로그램들은 소켓을 거쳐야 한다는 것이다. 따라서 아래와 같은 위치에 소켓 레이어가 놓이게 된다. 네트워크 응용 프로그램들은 소켓을 거쳐 데이터를 통신 망으로 전달함으로써 데이터를 송수신 하게 된다. 여기서 응용 프로그램은 어플리케이션 계층, 통신 망은 전송계층이므로 소켓은 그 사이에 놓이게 된다. 즉 소켓은 응용 프로그램에서 TCP/IP를 이용하는 인터페이스 역할을 한다. 소켓의 특징 파일과 비슷한 데이터 타입 소켓은 파일 디스크립터와 비슷한 형식의 데이터로 생성과 설정 과정이 끝나면 이를 이용하여 통신과 관련된 다양한 작업을 할 수 있는 간편한 데..
- Total
- Today
- Yesterday
- spring mvc
- 스프링 mvc
- Computer_Networking_A_Top-Down_Approach
- JPA
- 패킷 스위칭
- 생활코딩 javascript
- Python Cookbook
- 쉘 코드
- 스프링 테스트
- git
- Gradle
- 지옥에서 온 git
- git branch
- Spring
- 방명록 프로젝트
- jsp
- 파이썬 for Beginner 솔루션
- 프로그래머스
- 운영체제 반효경
- 파이썬 for Beginner 연습문제
- 스프링 컨테이너
- Spring Boot
- Spring Data JPA
- 선형 회귀
- Thymeleaf
- git merge
- Do it! 정직하게 코딩하며 배우는 딥러닝 입문
- 김영환
- 스프링
- 쉽게 배우는 운영체제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |