전체 글142 [C++] 좌측값과 우측값 그리고 Move, Forward 함수 좌측값과 우측값 L-value이름이 있고 메모리 주소가 있는 값 R-value일시적인 값, 임시 객체 또는 계산 결과 등int x = 10; // x는 lvalue, 10은 rvalueint y = x + 5; // y는 lvalue, (x + 5)는 rvalue C++ remove_reference_t 함수 remove_reference_t 함수는 레퍼런스를 제거해주는 함수레퍼런스를 제외한 정확한 타입을 얻기위한 함수cout , int> , int> , int> Forwarding Reference 템플릿 함수에서 T&& 형태로 쓰일 때, 좌측값과 우측값 둘다 참조할 수 있다. int& : int 타입의 좌측값 참조int&& : int 타입의 우측값 참조T& : 임의 타입의 좌.. 2025. 5. 13. [백준 11266] C++ 단절점 DFS 문제https://www.acmicpc.net/problem/11266 풀이int dfs(int now, bool isRoot){ visited[now] = ++cnt; int ret = visited[now]; int child = 0; for (const int& next : graph[now]) { if (parent[now] == next) continue; if (visited[next]) { ret = min(ret, visited[next]); continue; } child++; parent[next] = now; int low = dfs(next, false); ret = min(ret, low); if (!isRoot && low >= visited[now]) .. 2025. 5. 7. C++ 그래프의 사이클 노드 찾기 사이클 노드 찾기https://k99812.tistory.com/147 [백준 11400] C++ 단절선 DFS문제https://www.acmicpc.net/problem/11400 풀이int dfs(int start){ visited[start] = ++cnt; int ret = visited[start]; for (const int& next : graph[start]) { if (parent[start] == next) continue; if (visited[next]) { ret = min(ret, visited[next]); continuek99812.tistory.com 위의 문제의 코드를 바탕으로 코드가 진행된다 vector visited, parent, inStack;int dfs(int .. 2025. 5. 7. [백준 11400] C++ 단절선 DFS 문제https://www.acmicpc.net/problem/11400 풀이int dfs(int start){ visited[start] = ++cnt; int ret = visited[start]; for (const int& next : graph[start]) { if (parent[start] == next) continue; if (visited[next]) { ret = min(ret, visited[next]); continue; } parent[next] = start; int low = dfs(next); ret = min(ret, low); if (low > visited[start]) { bridge.push_back({ min(start, next), .. 2025. 5. 7. [운영체제] 가상 메모리 가상 메모리 가상 메모리는 실제 물리적 메모리(RAM)보다 더큰 메모리를 사용할 수 있게 해주는 기술즉 CPU에서 사용하는 논리적인 메모리로 가상의 메모리를 통해 RAM과 디스크의 일정 공간을 한개의 메모리로 사용하는 것처럼 해주는 기술가상메모리가상 메모리는 프로세스를 일정 단위(페이지, 세그먼트)로 나누어 필요한 페이지(또는 세그먼트)를 물리 메모리(RAM)에 적재함 물리메모리에 올라가지 않은 페이지(또는 세그먼트)는 디스크에 존재. 운영체제는 테이블(페이지 테이블, 세그먼트 테이블)을 사용하여 물리메모리와 디스크가 하나의 메모리처럼 사용요구 페이징(Demand Paging)CPU가 필요한 페이지를 요청할 때 페이지를 RAM에 올리는 것프로세스의 모든 페이지를 올리지 않고 필요한 부분(CPU 요청)만 .. 2025. 4. 25. [운영체제] 멀티스레드 멀티스레드 멀티스레드프로세스 내에서 여러 개의 스레드를 생성해 동시에 작업을 수행멀티코어 활용각각의 스레드가 다른 코어에 배정되어 작업을 병렬로 실행장점성능 향상작업을 병렬로 실행 및 멀티코어 활용자원 절약멀티 스레드는 코드, 데이터 영역 등 자원을 공유그로인해 멀티프로세스 보다 자원이 적게 들고 컨택스트 스위칭 비용도 낮음응답성 개선안드로이드의 경우 메인 스레드에서 UI만 처리하고다운로드 등 다른 작업을 다른 스레드에서 처리하여 UI의 응답성을 개선단점동기화 문제여러 스레드가 동시에 같은 데이터에 접근하면 Race Condition이 발생할 수 있음뮤텍스, 세마포어, 락 등으로 해결해야 됨Race Condition 두 개 이상의 프로세스 또는 스레드가 공통 자원에 동시에 접근하여 읽기/쓰기 작업을 할 .. 2025. 4. 18. 공지사항 공지사항 이 블로그에서 보호되어 있는 글은 인프런사이트의 이득우의 언리얼 프로그래밍 강좌를 정리한 글입니다.글의 내용을 보고싶으시면 비밀번호 : 9981 을 입력하시면 됩니다. 2025. 4. 18. [운영체제] 멀티 프로세스 멀티 프로세스 멀티 프로세스하나의 프로그램을 여러 개의 프로세스로 구성하여 각각의 프로세스가 작업을 처리장점멀티 프로세스는 하나의 프로세스가 죽어도 다른 프로세스에 영향이 가지않음단 프로세스끼리 통신을 하고있을 때는 영향이 있을 수 있음단점Context Switching에서의 큰 오버헤드프로세스는 각각 독립된 메모리를 가지고 있어 Context Switching이 발생하면 필요한 메모리를 초기화 하는데 비용이 많이 듦프로세스간 통신(IPC)프로세스간 통신 or 프로세스의 변수 접근이 필요한 경우 별도의 IPC 로직을 선택하여 구현해야 됨 부모-자식 프로세스 구조 웹 브라우저탭마다 별도의 자식 프로세스를 실행 [chrome (메인 프로세스)] ├── [탭 프로세스 1] ├── [탭 프로세스 2] └.. 2025. 4. 11. [운영체제] 프로세스와 스레드 프로세스 프로그램컴퓨터가 실행할 수 있는 명령어의 집합(파일)실행프로그램을 실행시키면 메모리에 올라가 프로그램의 인스턴스가 생성됨프로그램은 디스크(HDD, SDD)에 저장되어 있음프로세스컴퓨터에서 실행중인 프로그램즉 메모리에 올라와 실행되고 있는 프로그램의 인스턴스운영체제 입장에서는 잡(Job)의 단위운영체제의 스케줄러가 프로세스를 선택하여 CPU에 할당프로세스의 실행 단계프로세스 생성스케줄러가 프로세스를 선택스케줄러가 프로세스 내의 스레드를 선택선택된 스레드를 CPU 코어에 할당프로세스는 운영체제로 부터 할당된 자원의 집합 (ex 메모리 공간, PCB, 스레드 등)운영체제가 잡을 실행하기 위한 정보, 자원을 프로세스에 할당 및 관리PCB운영체제가 프로세스를 관리하기 위한 정보들PID (프로세스 ID)상.. 2025. 4. 9. 이전 1 2 3 4 ··· 16 다음