면접 대비용으로 공부하면서 정리한거라 다소 두서가 없어 보일 수 있음. 1. 참조형 변수는 생성하자마자 초기화 해야함 예 int ace = 10; int& son = ace; 1.1 참조를 한 변수 (위에서 son)를 변경하면 원본(위에서 ace)도 변경된다. 1.2 클래스 멤버 변수는 생성하자마자 초기화를 해주지 않아도 된다. 1.3 숫자와 같은 것들은 참조를 할 수 없다. 예 int& ronaldo = 7; --> 생각해보면 말이 안된다. 변경을 할 수가 없는데 어찌 참조하나 * 그대신 const 키워드가 있으면 가능하다 const int& ronaldo = 7 뭐 이런식으로 말이지. 1.4 참조형 변수는 한 번 선언할 때 초기화 되면 참조 대상은 절대 바뀌지 않는다. 단지 값만 바뀔 수 있다. 1...
- 저장하는 기능은 사실 다 memory 이다. (통상 RAM을 메모리라고 부름) - 메모리라고 할 수 있는건 RAM , 레지스터(cpu안에 있는) , 캐쉬(cpu에 근접해 있는 것.CPU에 남는 공간에 존재) 디스크 등등이 존재. cpu(레지스터) - 캐시 - 메모리 - 하드 디스크 이렇게 생각하면 됨 1. 캐시 메모리 - 프로그램의 특성(한번 접근하면 다시 또 접근하는 것) --> Temporal Locality - 프로그램의 특성2(이미 접근을 한 곳 근처에 접근하는 것, 배열을 for문 돌린다고 생각해보자) --> Spacial Locality 2. 가상 메모리 - 페이지 : 가상메모리 블럭 - 페이지 프레임 : 실제 RAM 블럭 - MMU : 메모리 관리하는 유닛 - 스왑파일 : 하드디스크가 이..
1. 유저 모드 동기화 vs 커널 모드 동기화 - 유저 모드는 시스템콜을 하지 않기 때문에 성능이 좋음. 다만 기능 제한 - 커널 모드 동기화는 시스템콜을 하기 때문에 상대적으로 불리. 다만 유저모드에서 사용하지 못하는 기능 사용 가능 1. 유저모드 동기화 - Critical Section : 원하는 영역을 Enter Leave로 잠금 - Interlocked : 전역으로 생성된 단 하나의 변수를 ++ 하거나 -- 하는 것이라면 동기화는 이게 더 낫다. 단 한줄로 동기화가 가능하기 때문 LONG interlockedIncrement(LONG volatile* 변수) LONG interlockedDecrement(LONG volatile* 변수) 다른 인터락 함수도 있음 MSDN https://docs.m..