728x90

OS 94

24.06.13 C++

C++RAII와 동적메모리 자원 관리RAII(Resource Acuquisition Is Intialization)는 C++에서 강조되는 디자인 테크닉 중 하나이다.C++ 프로그래밍에서 자원의 획득과 해제를 객체의 생명 주기와 결합하여 자동으로 관리하는 기법이다.이 기법은 메모리, 파일 핸들, 소켓 등 다양한 자원을 효율적으로 관리하고, 자원 누수(Resource Leak)를 방지하는 데 매우 유용하다.기본 개념RAII의 핵심 아이디어는 객체가 생성될 때 자원을 획득하고, 객체가 소멸될 때 자원을 해제하는 것이다.이 방식은 C++ 소멸자(destructor) 호출 메커니즘을 활용하여 자원을 자동으로 정리해준다.장점자동 자원 해제객체의 생명 주기가 끝날 때 자동으로 자원을 해제하여 자원 누수를 방지한다.예..

포인터 변수와 참조, Malloc과 New

포인터 변수와 참조, Malloc과 New참조자(reference)실체가 있어야 하며 선언 즉시 할당되어야 한다. 즉 NULL, nullptr로 할당 불가능하다.레퍼런스는 초기화리스트를 사용하여 먼저 초기화해야하는데(modern c++의 초기화리스트와는 다르다. 생성자의 초기화리스트를 의미한다.) 이는 생성자 내부에서의 초기화는 먼저 null로 생성한 뒤 값을 넣는 방식이기 때문이다. 또한 한번 할당하면 다른 곳에 재할당 불가능하다.포인터(Pointer) 타입 변수주소값을 저장할수 있는 타입의 변수이다.실체가 없이 NULL이 가능하며, 언제든 할당할 수 있다. 또한 동적 메모리 할당에 사용된다.Malloc과 New의 차이Malloc : 단순한 메모리 할당, 할당 시 메모리의 사이즈를 입력해서 할당받는다...

언어/C++ 2024.06.12

24.06.12 C++

C++포인터 변수와 참조, Malloc과 New참조자(reference)실체가 있어야 하며 선언 즉시 할당되어야 한다. 즉 NULL, nullptr로 할당 불가능하다.레퍼런스는 초기화리스트를 사용하여 먼저 초기화해야하는데(modern c++의 초기화리스트와는 다르다. 생성자의 초기화리스트를 의미한다.) 이는 생성자 내부에서의 초기화는 먼저 null로 생성한 뒤 값을 넣는 방식이기 때문이다. 또한 한번 할당하면 다른 곳에 재할당 불가능하다.포인터(Pointer) 타입 변수주소값을 저장할수 있는 타입의 변수이다.실체가 없이 NULL이 가능하며, 언제든 할당할 수 있다. 또한 동적 메모리 할당에 사용된다.Malloc과 New의 차이Malloc : 단순한 메모리 할당, 할당 시 메모리의 사이즈를 입력해서 할당받..

24.06.11 C++

C++객체지향과 C++C++은 객체지향 언어는 아니고 멀티 패러다임이다.(객체지향과 절차지향 두가지를 전부 지원하기 때문이다.)절차적 프로그래밍과 객체지향 프로그래밍의 차이절차적 프로그래밍(Procedural Programming)프로그램 설계 시 기능 구현을 위해 프로시저(함수)를 중점으로 사용하여 구조/로직을 설계하는 방법객체지향(Object-Oriented Programming(OOP))프로그램 설계 시 프로그램을 수 많은 객체로 나누고 이 객체들의 상호작용으로 서술하는 방법객체지향의 장점코드 재사용 용이높은 확장성유지보수성이 뛰어남객체지향의 특징캡슐화(Encapsulation)데이터를 보호하고 객체의 내부 상태를 은닉하며, 외부로부터의 직접적인 접근을 제한하는 것을 말한다.데이터와 그 데이터를 처..

24.06.10 복습

복습프록시(Proxy)프록시는 클라이언트와 서버 사이에 중간 매개체 역할을 하는 서버이다.프록시는 클라이언트의 요청을 받아서 대신 서버에 전달하고, 서버의 응답을 받아서 클라이언트에 전달한다.주요 용도캐싱자주 요청되는 웹 리소스를 캐싱하여 클라이언트 요청에 대한 응답 시간을 줄이고 서버 부하를 줄인다.익명성클라이언트의 IP 주소를 숨기고 프록시 서버의 IP 주소를 사용하여 요청을 전송함으로써 클라이언트의 익명성을 보장한다.접근 제어특정 웹사이트나 리소스에 대한 접근을 제한하거나 허용한다.로깅 및 모니터링트래픽을 로깅하고 모니터링하여 사용 패턴을 분석하거나 보안 위협을 탐지한다.부하 분산여러 서버에 트래픽을 분산시켜 서버의 균형 있게 유지한다.콘텐츠 필터링악성 웹사이트나 부적절한 콘텐츠를 필터링하여 클라이..

24.06.09 복습

복습CGI(Common Gateway Interface)CGI는 웹 서버와 외부 프로그램 간의 인터페이스를 정의하는 표준이다. 이를 통해 웹 서버는 동적인 콘텐츠를 생성하기 위해 외부 프로그램을 실행할 수 있다.CGI 프로그램은 웹 서버가 클라이언트로부터 요청을 받을 때마다 실행되며, 그 결과를 웹 서버가 클라이언트에게 전달한다.CGI 특징독립적 언어CGI 프로그램은 다양한 언어로 작성될 수 있다.프로세스 기반요청마다 새로운 프로세스를 생성하여 실행되므로 오버헤드가 크다.보안잘못된 CGI 프로그램은 보안 문제를 초래할 수 있다.구현CGI 프로그램은 서버 측에서 동작하며 클라이언트와의 상호작용은 웹 서버를 통해 이루어진다.Web Server웹 서버는 클라이언트(주로 웹 브라우저)로부터 HTTP 요청을 받아..

24.06.08 복습

복습파일 디스크립터(File Descriptor, FD)운영 체제에서 파일이나 입출력 자원에 접근하기 위해 사용되는 추상적인 핸들 또는 참조 번호이다.주로 유닉스 계열 운영 체제(리눅스 포함)에서 많이 사용되며, 파일 디스크립터는 프로세스가 열어놓은 파일, 소켓, 파이프 등을 식별하는 데 사용한다.특징정수 형태파일 디스크립터는 정수 형태의 값으로, 각 파일 디스크립터는 프로세스 내에서 고유하다.표준 파일 디스크립터0 : 표준 입력(Standard Input, stdin)1 : 표준 출력(Standard Output, stdout)2 : 표준 오류(Standard Error, stderr)Datagram Socket vs Stream SocketDatagram 소켓과 스트림 소켓은 네트워크 프로그래밍에서 ..

24.06.07 복습

복습소켓(Socket)소켓은 네트워크 통신의 끝점을 의미하며, 프로세스 간의 네트워크 통신을 가능하게 한다.소켓을 생성하는 함수는 ‘socket()’이다.socket() 함수새로운 소켓을 생성하다.바인드(Bind)바인드는 소켓에 IP 주소와 포트 번호를 할당하는 작업이다.서버 소켓은 특정 IP 주소와 포트에서 수신 대기하기 위해 바인드해야 한다bind() 함수소켓에 IP 주소와 포트 번호를 할당한다.리슨(Listen)리슨은 소켓이 클라이언트의 연결 요청을 수신 대기하도록 설정하는 작업이다.서버 소켓이 연결 요청을 수신하기 위한 준비 작업이다.listen() 함수소켓이 연결 요청을 수신 대기하도록 한다.엑셉트(Accept)엑셉트는 클라이언트의 연결 요청을 수락하는 작업이다.이 함수는 클라이언트와의 연결을 ..

24.06.06 복습

복습네트워크 계층1. 물리 계층(Physical Layer)역할물리적 매체를 통해 데이터의 전송을 담당주요 기능전기적, 기계적, 절차적 특성 정의비트 전송 : 0과 1의 전기 신호, 빛 신호 또는 무선 신호로 데이터를 전송하드웨어 요소 : 케이블, 스위치, 네트워크 인터페이스 카드2. 데이터 링크 계층(Data Link Layer)역할물리 계층에서 발생할 수 있는 오류를 탐지하고 수정, 데이터 프레임의 전송을 관리주요 기능프레임(Frame)으로 데이터 포장MAC 주소를 통해 물리적 주소 지정오류 검출 및 흐름 제어주요 프로토콜 : 이더넷, PPP(Point-to-Point Protocol)3. 네트워크 계층(Network Layer)역할서로 다른 네트워크 간 데이터 전송을 관리주요 기능논리적 주소(IP ..

24.06.05 복습

복습세마포어와 뮤텍스세마포어와 뮤텍스는 멀티스레딩 환경에서 동기화 문제를 해결하기 위한 도구이다.여러 스레드가 공유 자원에 동시에 접근하지 못하게 하여 데이터 일관성을 유지하고 경쟁 상태(race condition)를 방지한다.세마포어(Semaphore)정의세마포어는 정수 값을 사용하여 접근을 제어하는 동기화 도구이다.세마포어는 주로 두 가지 종류가 있다카운팅 세마포어임의의 정수 값을 가질 수 있으며, 공유 자원 개수를 관리한다.이진 세마포어0과 1의 값만을 가지며, 뮤텍스처럼 작동한다.주요 연산P(Wait) 연산세마포어 값을 감소시키는 연산으로, 세마포어 값이 0이면 대기 상태가 된다.V(Signal) 연산세마포어 값을 증가시키는 연산으로, 대기 중인 프로세스가 있으면 깨운다.뮤텍스(Mutex)정의뮤텍..

728x90