분류 전체보기(33)
-
프로세스, 스레드, 동기화
프로세스 실행 중인 프로그램을 프로세스라고 한다. 메모리 관점에서의 프로세스: 코드-데이터-힙-스택 영역과 레지스터 상태. 프로세스 상태 변화 new> ready: 프로세스 생성 ready> running: 스케줄러가 해당 프로세스를 Run 시킴 running > ready : 스케줄링 우선순위에서 밀렸거나 작업 완료 run > waiting: 프로세스가 I/O 진행 등의 이유로 블락됨. waiting> ready : I/O 종료 등의 이유로 블락이 해제됨. waiting> terminated : 프로세스 종료 컨텍스트 스위칭 실행 중인 프로세스 변경 시, 작동하는 절차를 컨텍스트 스위칭이라고 한다. 구체적으로, 현재 프로세스의 context(register set 등)를 PCB에 저장 실행될 프로세스의..
2023.05.10 -
[C++] 모던 C++(C++11) 기초
1. auto 키워드 : 타입을 추론(type deduction)하는 역할을 한다. 기본 auto는 const, &(참조) 를 무시하기때문에 조심해야한다. 가독성이 나빠지기 때문에, 타이핑이 지나치게 길어지는 경우에만 사용한다. 2. 중괄호 초기화 stl vector와 같은 Container에서 유용하게 사용할 수 있다. 축소 변환을 방지한다. (int > double 불가능) 만든 클래스에서 중괄호 초기화를 통한 생성자를 받아주고 싶다면, initialize_list를 인자로 하는 생성자를 정의해야 한다. 이 때, 다른 생성자보다 initialize_list 생성자가 우선순위가 더 높으므로, 다른 생성자가 무시될 수 있다. (주의!) 3. nullptr 그저 0의 의미를 갖는 NULL과 다르게, nul..
2023.05.09 -
[C&C++] const 키워드
const는 변수를 상수화시켜주는 키워드이다. (msdn왈, const 변수의 값이 상수임을 지정하고 프로그래머가 수정하지 못하도록 컴파일러에 지시하는 키워드) 그렇다면, const 변수가 선언된 메모리를 참조해서 값을 바꾸면 어떻게 될까? int main() { const int a = 5;//a const로 선언 int b = 4;//b 변수 선언 int* c = &b; c= c-2;//포인터 c로 a의 메모리 영역을 가리키게 한다. *c = 2;//a의 메모리 공간을 2로 바꾼다. printf("%d\n", a);//a값을 출력한다. printf("%d\n", *c);//c 포인터가 가리키는 값을 출력한다. return 0; } 이 코드를 실행하면, 실제로 메모리 공간이 바뀐다. 그러나, 컴파일러에..
2023.04.25 -
[C/C++] 소켓 API
소켓 API 정리 SOCKET socket(int af, int type, int protocol) : 소켓 생성 인자: af: AF_INET(IPv4), type: SOCK_STREAM(TCP), SOCK_DGRAM(UDP), protocol: 0(TCP,UDP) 반환: 소켓 생성 int closesocket(SOCKET s) : 소켓 닫기 인자: s: 닫을 소켓 반환: 성공: 0, 실패: SOCKET_ERROR int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData) : Winsock DLL 사용 시작 인자: wVersionRequested(버전.MAKEWORD(2,2)), lpWSAData(WSADATA 변수의 주소) 반환: 성공:0, 실패:오류코드..
2023.04.06 -
TCP의 작동 방식
네트워크 계층별 데이터 단위 L1~L2: Frame L3: Packet - Packet의 최대 크기: MTU(Maximum Transmission Unit) = 1500byte (MSS + TCP Header(20) ,IP Header(20)) L4: Segment - Segment의 payload 최대 크기: MSS(Maximum Segment Size) = 1460byte. TCP Socket: Stream(연속적으로 이루어진 크기가 큰 데이터), 이 Stream을 MSS 단위로 잘라서 Segment들로 만든다. 참고로 UDP는 Datagram 단위이다. TCP 헤더의 Sequence Number, Acknowledgement Number Sequence Number: 보낸 데이터의 순서, 즉 현재 ..
2023.04.06 -
네트워크 작동 방식
네트워크는 어떻게 작동할까? 알아보기에 앞서 기본 개념을 정리해본다. LAN과 WAN LAN은 Local Area Network의 단축어로, 근거리 통신망이다. 가정이나 사무실 등의 컴퓨터를 서로 연결하는 등 작은 범위의 네트워크를 의미한다. WAN은 Wide Area Network의 단축어로, 이 LAN들을 서로 이어주는 네트워크이다. 주로 ISP(인터넷 서비스 제공업체)에서 관리한다. IP주소 IP(Internet Protocol) 주소는 L3계층의 인터넷 상 호스트(컴퓨터)의 고유한 주소이다. (L3 계층) x.x.x.x 의 [0~255] 범위의 숫자 네개로 이루어진다.(IP v4) 이 IP주소는 다시 서브넷에 할당되는 네트워크 번호와, 각각의 컴퓨터에 붙는 호스트 번호로 나뉜다. 위의 사진과 같이..
2023.02.01