<개인공부> 275

[C++] static_cast (타입캐스트 연산자)

안녕하세요 BlockDMask 입니다.오늘은 C++의 네가지 타입변환 연산자 static_cast, dynamic_cast, reinterpret_cast, const_cast 중 static_cast에 대해 알아보겠습니다. > static_cast 기본 형태 static_cast(대상); static_cast(expression)특징 (논리적으로 변환 가능한 타입을 변환한다) compile 타임에 형변환에 대한 타입 오류를 잡아줍니다. 실수와 정수, 열거형과 정수형, 실수와 실수 사이의 변환 등을 허용한다. arr -> point로 변경 가능합니다.function -> function pointer로 변경 가능합니다. 포인터 타입을 다른것으로 변환 하는 것을 허용하지 않습니다. (compile erro..

[운영체제] Banker's algorithm(은행원 알고리즘) 구현 - Deadlock

안녕하세요 BlockDMask 입니다.2017/11/24 - [/[Operating System]] - [운영체제] Deadlock(교착상태)에 대해서지난시간에 이어서 이번시간에는 Deadlock(교착상태)를 회피하거나 탐지할 때 사용할 수 있는 은행원 알고리즘(Banker's algorithm)을 구현해보겠습니다.문제는 공룡책 8th 7.10번 문제입니다.**직접 구현한 것이라,, 많이 부족할 수 있습니다. 보완이 필요한 부분은 댓글로 달아주시면 감사하겠습니다. 1. 구현할 내용현재 시스템의 상태를 아래와 같이 정의 하겠습니다. 프로세스가 안전한지(deadlock 이 발생하지 않는지) 확인할 수 있고 프로세스가 어떤 순서로 자원을 할당 받는지 볼 수 있도록 구현하겠습니다. Allocation Max A..

[운영체제] Deadlock(교착상태)에 대해서

안녕하세요. BlockDMask 입니다.오늘은 deadlock 에 대해서 알아볼까 합니다.deadlock 이 무엇인지, deadlock을 처리하는 전체적인 그림에 대해서 보겠습니다.뭐가 뭔지 전체적으로 그림이 잡히지 않아서 그려보았습니다.1. deadlock 이란.?deadlock(교착상태)란 둘 이상의 Process가 서로가 가진 Resource를 요구하면서 각자의 Resource를 놓지 않아서 더이상 작업수행을 할 수 없이 무한하게 대기 상태로 놓인 상태를 말합니다. 멀티프로세스나 멀티스레드 환경에서 여러 프로세스들이 한정된 자원을 사용하기 때문에 발생할 수 있습니다. deadlock은 4가지 필요조건이 성립할때 발생할 수 있습니다. 시스템이 deadlock 상태가 되지 않도록 보장하기 위하여 dea..

[데통] 왜 OSI 7계층을 나누었을까?

안녕하세요 BlockDMask 입니다. 오늘은 왜 굳이 OSI 7 계층으로 나누었나... 에 대해서 알아보겠습니다. 각 계층별 자세한 설명은2017/09/11 - [/[데이터 통신]] - [데통] OSI 7계층, Network의 구조, NIC2017/10/19 - [/[데이터 통신]] - [데통] OSI 7계층과 TCP/IP 4계층, 계층별 데이터 단위 위 두개의 포스트에 있습니다. " 통신그거 그냥 각자 알아서 하면되지, 굳이 OSI 7계층으로 나누었나.. ""휴 대답못했어" => 표준화를 통해서 다른 회사에서 만든 제품끼리도 통신이 될 수 있도록 하기위해(하드웨어 제조업체들의 공통의 플랫폼을 만들수 있다.) => 큰 단위의 데이터를 작은 단위로 나누고 나누어서 이해하기 쉽고 관리 및 문제 해결이 쉽게..

[이론] socket() 함수에 대해서

안녕하세요. BlockDMask 입니다. 오늘은 socket() 함수에 대해서 알아보겠습니다. 이전 글 2017/11/03 - [/[TCP/IP 소켓]] - [이론] 서버와 클라이언트 소켓의 흐름 에서 흐름을 보셨다면 아시겠지만 서버와 클라이언트가 통신을 하기 위해서는 소켓 라이브러리를 사용합니다. 이때 소켓을 만들기 위해서는 socket() 를 이용합니다.헤더파일 : , int socket(int domain, int type, int protocol);정의 : socket() creates an endpoint for communication and returns a descriptor. **출처 : unix 에서 man socket 치면 자세히 나와있습니다. ** 사실 이전시간에 socket 이라는..

[C언어/C++] define 매크로와 inline 함수에 대해서

안녕하세요. BlockDMask 입니다.오늘은 inline 함수와 define(매크로)에 대해 정리해볼까 합니다.A. 매크로(define)와 예시B. 매크로(define)함수와 예시C. 인라인(inline)함수와 예시D. 총 정리. A-1. 매크로(define)란 - 여러번 사용하게 될 상수를 문자로 표현하여 변경시에도 편리하게 사용할 수 있도록 하는 것.- 이러한 매크로 상수는 컴파일 전에 전처리기에 의해서 숫자로 치환 됩니다. #define [이름] [숫자] A-2. 매크로(define)사용 예시 123456789101112131415161718//매크로 예제 #include#define MAX_LEN 20 using namespace std;int main(void){ int * arr = new ..

[이론] 서버와 클라이언트 소켓의 흐름

안녕하세요. BlockDMask 입니다.오늘은 서버와 클라이언트의 일반적인(TCP) 소켓의 흐름을 알아보겠습니다.함수들을 알아 보겠다는 이야기 입니다. > 전체적인 그림 > 함수들의 설명제가 글씨를 못써서;;못알아 보시는 분들을 위해;; 서버는 socket() 함수를 이용하여 소켓을 열고, bind() 함수를 이용하여 ip와 port번호를 설정합니다.listen()을 통해서 클라이언트들이 접근을 할때 수신 대기열 을 만들어서몇개의 클라이언트를 대기 시킬지를 설정합니다.accept() 함수를 이용하여 클라이언트의 연결을 기다립니다. 클라이언트도 socket() 함수를 이용하여 소켓을 엽니다.connect() 함수를 이용하여 통신 할 서버의 ip와 port번호를 통해서서버에 통신을 시도 합니다. 클라이언트가..

[GitHub] branch 명령어

안녕하세요. BlockDMask 입니다.오늘은 깃허브 branch 명령어에 대해 정리 해보겠습니다.사실 정리는 아니고;제가 그때그때 확인하기 위해서;;; 써놓은거라불친절하게 써져있는점 죄송합니다.(형 누님들 그래도 보시면 이해하실껄요..?) $git branch branch 목록 확인, ' * ' 표시 된게 현재 branch$git checkout -b [브랜치이름]현재 repository 를 [브랜치이름] 으로 명명 후 생성$git checkout master 현재 브랜치를 master 브랜치로 바꾸는 방법$git merge —no-ff [브랜치이름] 현재 branch로 부터 merge하는 것을 기록으로 남겨주기 위함$git branch -d [브랜치이름]branch 삭제https://git-scm.c..

[데통] Port 번호 에 대해서

안녕하세요. BlockDMask 입니다.오늘은 Port 번호 (Port number)에 대해 알아보겠습니다. > Port Number 란?이전까지 학습한 내용을 살펴보면, TCP/IP 5 계층 중 1~2 계층(물리, 데이터링크)에서는 MAC address로 호스트의 NIC을 판별하고, 3 계층(네트워크)에서는 IP address로 호스트를 판별합니다. 이렇게 MAC address 와 IP address 를 통해서 데이터를 전송할 상대 컴퓨터까지 도달했습니다. 그러면 데이터를 받을 프로세스(process)가 어떤 것인지를 알아야 데이터가 제대로 전송이 되겠죠? 이때 사용하는 식별자를 Port Number(포트 번호)라 합니다.예를 들면, 우리가 물건(데이터)를 어떤 사람에게 전달해준다고 합시다. 그럼 우리..