CS 10

Chater03. 운영체제 - 메모리

3.2 메모리 CPU는 그저 '메모리'에 올라와 있는 프로그램의 명령어들을 실행할 뿐이다. 메모리 계층과 메모리 관리를 알아보자. 3.2.1 메모리 계층 메모리 계층은 레지스터, 캐시, 메모리, 저장장치로 구성되어 있다. 레지스터 : CPU안에 있는 작은 메모리, 휘발성, 속도 가장 빠름, 기억 용량이 가장 적다. 캐시 : L1, L2 캐시를 지칭한다. 휘발성, 속도 빠름, 기억 용량이 적다. 참고로 L3 캐시도 있다. 주기억장치 : RAM을 가리킨다. 휘발성, 속도 보통, 기억용량이 보통이다. 보조기억장치 : HDD, SSD를 일컬으며 비휘발성, 속도 낮음, 기억 용량이 많다. 램은 하드디스크로부터 일정량의 데이터를 복사해서 임시 저장하고 이를 필요 시마다 CPU에 빠르게 전달하는 역할을 한다. 계층 ..

Chater03. 운영체제 - 운영체제와 컴퓨터

3.1 운영체제와 컴퓨터 하드웨어와 소프트웨어(유저 프로그램)를 관리하는 일꾼인 운영체제와 CPU, 메모리 등으로 이루어진 컴퓨터를 알아보겠다. 3.1.1 운영체제의 역할과 구조 운영체제의 역할 운영체제의 역할은 크게 네 가지가 있다. CPU 스케줄링과 프로세스 관리 : CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리한다. 메모리 관리: 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리한다. 디스크 파일 관리 : 디스크 파일을 어떠한 방법으로 보관할지 관리한다. I/O 디바이스 관리 : I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고받은 것을 관리한다. 운영체제의 구조 유저 프로그램이 맨 위에 있고 그 다음으로 GUI, 시스템콜, ..

Chater02. 네트워크 - HTTP

2.5 HTTP 2.5.1 HTTP/1.0 HTTP/1.0은 기본적으로 한 연결 당 하나의 요청을 처리하도록 설계되었다. 이는 RTT 증가를 불러오게 되었다. RTT 증가 서버로부터 파일을 가져올 때마다 TCP의 3-웨이 핸드셰이크를 계속해서 열어야 하기 때문에 RTT가 증가하는 단점이 있다. RTT 패킷이 목적지에 도달하고 나서 다시 출발지로 들어오기까지 걸리는 패킷 왕복 시간 RTT의 증가를 해결하기 위한 방법 매번 연결할 때마다 RTT가 증가하니 서버에 부담이 많이가고 사용자 응답 시간이 길어졌다. 이를 해결하기 위해 이미지 스플리팅, 코드 압축, 이미지 Base64 인코딩을 사용하곤 한다. 이미지 스플리팅 많은 이미지를 다운로드받게 되면 과부하가 걸리기 때문에 많은 이미지가 합쳐 있는 하나의 이미..

Chater02. 네트워크 - IP 주소

2.4 IP 주소 앞서 인터넷 계층에 IP주소를 쓴다고 했는데 IP주소에 대해 조금 더 자세히 알아보겠다. 2.4.1 ARP 컴퓨터와 컴퓨터 간의 통신은 흔히들 IP 주소 기반으로 통신한다고 알고 있지만 정확히 이야기하자만 IP주소에서 ARP를 통해 MAC주소를 찾아 MAX 주소를 기반으로 통신힌다. ARP(Address Resolution Protocol)란 IP주소로부터 MAC 주소를 구하는 IP와 MAC 주소의 다리 역할을 하는 프로토콜이다. ARP를 통해 가상 주소인 IP주소를 실제 주소인 MAC주소로 변환한다. 이와 반대로 RARP를 통해 실제 주소인 MAC 주소를 가상 주소인 IP주소로 변환하기도 한다. 앞의 그림처럼 장치가 ARP Request 브로드캐스트를 보내서 IP 주소인 120.70...

Chater02. 네트워크 - 네트워크 기기

2.3 네트워크 기기 네트워크는 여러 개의 네트워크 기기를 기반으로 구축된다. 2.3.1 네트워크 기기의 처리 범위 네트워크 기기는 계층별로 처리 범위를 나눌 수 있다. 물리 계층을 처리할 수 있는 기기와 데이터 링크 계층을 처리할 수 있는 기기 등이 있다. 그리고 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만 그 반대는 불가하다. 예를 들어 L7 스위치는 애플리케이션 계층을 처리하는 기기로 그 밑의 모든 계층의 프로토콜을 처리할 수 있다. 하지만 AP는 물리 계층밖에 처리하지 못한다. - 애플리케이션 계층 : L7 스위치 - 인터넷 계층 : 라우터, L3 스위치 - 데이터 링크 계층 : L2 스위치, 브리지 - 물리 계층 : NIC, 리피터, AP 2.3.2 애플리케이션 계층을 처리하는 기..

Chater02. 네트워크 - TCP/IP 4계층 모델

2.2 TCP/IP 4계층 모델 인터넷 프로토콜 스위트(internet protocol suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 집합이며, 이를 TCP/IP 4계층 모델로 설명하거나 OSI 7계층 모델로 설명하기도 한다. 이 책에서는 TCP/IP(Transmission Control Protocol/Internet Protocol) 4계층 모델을 중심으로 설명하며, 이 계층 모델은 네트워크에서 사용되는 통신 프로토콜의 집합으로 계층들은 프로토콜의 네트워킹 범위에 따라 네 개의 추상화 계층으로 구성된다. 2.2.1 계층 구조 TCP/IP 계층은 네 개의 계층을 가지고 있으며 OSI 7계층과 많이 비교한다. 앞의 그림처럼 TCP/IP 계층과 달리 OSI 계층은 애플리케이..

Chater02. 네트워크 - 네트워크의 기초

2.1 네트워크의 기초 네트워크란 노드(node)와 링크(link)가 서로 연결되어 있으며 리소스를 공유하는 집합을 의미한다. 여기서 노드란 서버, 라우터, 스위치 등 네트워크 장치를 의미하고 링크는 유선 또는 무선을 의미한다. 2.1.1 처리량과 지연 시간 네트워크를 구축할 때는 '좋은' 네트워크로 만드는 것이 중요하다. 좋은 네트워크란 많은 처리량을 처리할 수 있으며 지연 시간이 짧고 장애 빈도가 적으며 좋은 보안을 갖춘 네트워크를 말한다. 처리량 처리량은 링크 내에서 성공적으로 전달된 데이터의 양을 말하며 보통 얼만큼의 트래픽을 처리했는지를 나타낸다. "많은 트래픽을 처리한다 = 많은 처리량을 가진다"라는 의미다. 단위로는 bps(bits per second)를 쓴다. 초당 전송 또는 수신되는 비트..

Chater01. 디자인 패턴과 프로그래밍 패러다임 - 프로그래밍 패러다임

1.2 프로그래밍 패러다임 프로그래밍 패러다임은 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론이다. 예를 들어 객체지향 프로그래밍은 프로그래머들이 프로그램을 상호 작용하는 객체들의 집합으로 볼 수 있게 하는 반면에 함수형 프로그래밍은 상태 값을 지니지 않는 함수 값들의 연속으로 생각할 수 있게 해준다. 어떤 언어는 특정한 패러다임을 지원하기도 하는데, jdk 1.8 이전의 자바는 객체지향 프로그래밍을 지원하는 반면에, 하스켈은 함수형 프로그래밍을 지원한다. 여러 패러다임을 지원하는 언어로는 C++, 파이썬, 자바스크립트가 있으며 자바의 경우 jdk 1.8 부터 함수형 프로그래밍 패러다임을 지원하기 위해 람다식, 생성자 레퍼런스, 메서드 레퍼런스를 도입했고 선언형 프로그래밍을 위해..

Chater01. 디자인 패턴과 프로그래밍 패러다임 - 디자인 패턴(2)

1.1.5 프록시 패턴과 프록시 서버 앞서 설명한 프록시 객체는 사실 다지인 패턴 중 하나인 프록시 패턴이 녹아들어 있는 객체이다. 프록시 패턴 프록시 패턴은 대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴이다. 이를 통해 객체의 속성, 변환 등을 보완하며 보안, 데이터 검증, 캐싱, 로깅에 사용한다. 이는 앞서 설명한 프록시 객체로 쓰이기도 하지만 프록시 서버로도 활용된다. 프록시 서버에서의 캐싱 캐시 안에 정보를 담아두고 캐시 안에 있는 정보를 요구하는 요청에 대해 다시 저 멀리 있는 원격 서버에 요청하지 않고 캐시 안에 있는 데이터를 활용하는 것을 말한다. 이를 통해 불필요하게 외부와 연결하지 않기 때문에 트래픽을 줄일 수 있다는 장점이 ..

Chater01. 디자인 패턴과 프로그래밍 패러다임 - 디자인 패턴(1)

라이브러리 vs 프레임워크 라이브러리 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것을 의미한다. 폴더명, 파일명 등에 대한 규칙이 없고 프레임워크에 비해 자유롭다. 예를 들어 무언가를 자를 때 '도구'인 '가위'를 사용해서 '내가' 직접 컨트롤하여 자르는데, 라이브러리는 이와 비슷하다. 프레임워크 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것을 의미한다. 폴더명, 파일명 등에 대한 규칙이 있으며 라이브러리에 비해 좀 더 엄격하다. 다른 곳으로 이동할 때, '도구' 인 비행기를 타고 이동하지만 '비행기'가 컨트롤하고 나는 가만히 앚아 있는다 프레임워크는 이와 비슷하다. 1.1 디자인 패턴 디자인 패턴이란 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 ..