flow-vector
애플리케이션 계층 - 웹과 HTTP
Computer Science/Network 2023. 3. 22. 11:19

1990년대초, 네트워크 애플리케이션인 월드와이드웹이 등장하였다. 웹은 기존의 TV나 라디오 송출과는 달리 온디맨드 방식으로 사용자가 원할 때, 원하는 페이지를 수신하고 웹상에 사용자가 원하는 정보를 발행할 수도 있다. HTTP 개요 HTTP 프로토콜은 웹의 어플리케이션 계층 프로토콜이다. HTTP 프로토콜은 클라이언트와 서버 프로그램으로 구현된다. 각 프로그램들은 서로 메세지 교환을 통해 통신을 한다. 따라서 HTTP 프로토콜은 주고 받는 메세지의 구조, 어떻게 메세지를 교환하는지에 대해 정의하고 있다. 구성 요소 웹 페이지 (web page) 웹 페이지는 여러 객체들로 이루어지는데 여기서 객체란 단일 URL로 지정할 수 있는 하나의 파일이다. 파일의 예시 : HTML 파일, JPEG 이미지, 자바스크..

애플리케이션 계층 - 네트워크 애플리케이션의 원리
Computer Science/Network 2023. 3. 12. 00:12

가장 기본적인 네트워크 애플리케이션으로는 종단시스템에서 실행되는 웹 브라우저와 웹 서버 호스트에서 실행되는 웹 서버 프로그램이 있다. 네트워크 애플리케이션을 개발한다고 하는 것은 종단시스템에서 작동하는 소프트웨어를 개발하는 것이다. 네트워크 애플리케이션의 구조 현대 네트워크 애플리케이션 구조에는 잘 알려진 아래의 2가지 대표 구조가 있다. 클라이언트 - 서버 구조 (client -server architecture) 서버 항상 작동하고 있는 호스트를 서버라고 한다. 여러 클라이언트들로 부터 서비스 요청(request)을 받는다 클라이언트 가끔 혹은 항상 작동하고 있을 수 있다. 웹 브라우저 특징 클라이언트들은 서로 직접적으로 통신하지 않고 서버를 거쳐서 통신하게 된다. 서버는 고정 ip를 가지는데 이는 ..

C++ - new, delete 연산자
Computer Science/C,C++ 2023. 3. 11. 18:20

new, delete 연산자 c의 malloc, free 시스템 콜 함수에 대응되는 c++에서 생긴 메모리 할당/해제 연산자이다. 사용법 및 특징 // 변수 동적할당 int* a; a = new int(123); // int 크기만큼 메모리를 할당하고 123이라는 값으로 초기화 delete a; // a 메모리 할당 해제 // 배열 동적할당 int* b; b = new int[5]; // 길이 5인 int형 배열 동적 할당 delete[] b; // 배열 b 메로리 할당 해제 // 객체의 동적할당 class A { public: A(std::string name); }; A *a = new A("hello"); // A 클래스가 사용하는 생성자를 사용하여 동적할당 delete a; new 연산자로 객체를..

C++ - 참조자(reference)
Computer Science/C,C++ 2023. 3. 11. 17:42

참조자는 c++에서 새롭게 추가된 기능이다. 변수의 별명(alias)을 정의하게 된다 별명을 정의한다는 것은 하나의 변수에 두개의 이름이 생기게 되어 별명으로 변수를 사용할 수 있게 된다는 것으로 볼 수 있다. 참조자 사용 방법 및 특징 int a = 10; int b = 11; int& c = a; int& d; c = a; // compile error c = b; // a : 10위와 같은 방법으로 참조자를 선언 할 수 있다. 1) 참조자는 선언과 동시에 초기화 되어야 한다. 예외의 경우 함수의 매개변수로 참조자를 받을때 : 함수가 호출될 때 실제 인수로 초기화 된다. 클래스의 멤버로 사용할 때 : 생성자에서 반드시 초기화 해야함 변수를 extern 선언할 때 : 레퍼런스의 초기식이 이미 외부에 선..

article thumbnail
메모리 가상화 - 페이징 속도 개선 (TLB)

"운영체제 : 아주 쉬운 세가지 이야기"를 읽으면서 핵심 내용을 정리하였습니다. 이화여대 반효경 교수님의 운영체제 강의를 듣고 복습 차원에서 책 한권을 완독해 보고자 합니다. 잘못된 정보가 있다면 댓글 남겨주시면 감사하겠습니다! 페이징의 한계 페이징을 잘 못 구현하면 큰 성능 저하가 올 수 있는데 이유는 아래와 같다 가상 주소 변환을 위해 주소 변환에 필요한 정보를 담고 있는 페이지 테이블을 접근(메모리 읽기 작업 느림)해야 되기 때문에 성능저하 발생 TLB 란? 페이징의 한계를 해결하기 위해 하드웨어의 도움을 받는다. 변환 색인 버퍼(translation-lookaside buffer, TLB)는 MMU의 일부로서 자주 참조되는 가상 주소의 변환 정보를 저장하는 하드웨어 캐시이다. 주소 변환 캐시(ad..

article thumbnail
메모리 가상화 - 페이징 기법

"운영체제 : 아주 쉬운 세가지 이야기"를 읽으면서 핵심 내용을 정리하였습니다. 이화여대 반효경 교수님의 운영체제 강의를 듣고 복습 차원에서 책 한권을 완독해 보고자 합니다. 잘못된 정보가 있다면 댓글 남겨주시면 감사하겠습니다! 세그멘테이션의 한계 논리적인 의미를 가지는 가변크기의 공간으로 메모리를 나눠서 물리메모리에 올리게 되면 외부 단편화가 발생할 수 있는 태생적인 한계를 가지고 있다. 이를 해결 하기 위해 동일 크기의 공간으로 분할하는 아이디어에 대해 연구가 이루어졌고 이를 페이징(paging)이라고 부르게 되었다. 페이징에서는 프로세스의 주소공간을 고정 크기의 단위로 나누게 되고 물리 메모리 또한 페이지 프레임(page frame)이라는 고정크기로 나누게 되었다. 페이징의 간단한 예시 위의 그림과..

article thumbnail
메모리 가상화 - 세그멘테이션

"운영체제 : 아주 쉬운 세가지 이야기"를 읽으면서 핵심 내용을 정리하였습니다. 이화여대 반효경 교수님의 운영체제 강의를 듣고 복습 차원에서 책 한권을 완독해 보고자 합니다. 잘못된 정보가 있다면 댓글 남겨주시면 감사하겠습니다! 동적 재배치의 한계 지금까지 메모리를 가상화하는데 필요한 주소변환의 원리에 대해 알아 보았다. 동적 재배치라는 하드웨어의 지원을 받아 주소를 변환하는 방법은 간단하였지만 다음과 같은 한계가 있었다. 프로그램의 전체 주소공간을 물리 메모리에 탑재하여 발생하는 내부 단편화 상기 그림의 힙과 스택사이의 큰 빈공간 그림의 예시는 작은 주소 공간을 가정하였지만 32비트 컴퓨터의 경우 4GB의 주소공간을 가지고 있다 프로그램은 실제 수 메가바이트에 그치지만 4GB를 모두 물리메모리에 올려야..

BOJ 9375 패션왕 신해빈
PS/BOJ 2023. 2. 8. 11:35

문제 링크 https://www.acmicpc.net/problem/9375 시간, 공간 제한 시간 : 1초 공간 : 128 MB 문제 접근 방향 - 경우의 수 문제라고 생각하고 접근을 하였는데 같은 카테고리에 몇개가 들어 있는지만 중요하다는 생각을 하였음. - key value 자료 구조 필요하다고 생각함 map - 조합을 통해 문제를 해결하려고 생각하였는데 막혔음. - 아무것도 입지 않았을 때를 경우에 수에 추가를 하면 쉽게 풀 수 있다는 것을 풀이를 보고 알게됨 - 모든 경우의 수에서 아무 것도 입지 않았을 때 경우의 수 1을 빼주면 답이됨 #include #include using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(..