본문 바로가기

분류 전체보기77

Visual Studio에서 scanf 오류를 해결하는 방법 Visual Studio에서 scanf 오류를 해결하는 방법프로그램을 실행 시 입력값을 scanf 함수로 받을 때, 비주얼 스튜디오는 scanf_s 함수 사용을 권장하며 오류 메세지를 띄울 수 있습니다.scanf 함수는 버퍼 오버플로우라는 취약점이 존재하기 때문에 컴파일러가 반강제적으로 이 함수의 호출을 막는 것입니다. 참고로 버퍼 오버플로우(Buffer Overflow)는 입력값의 크기가 버퍼 사이즈보다 커서 입력값을 버퍼에 다 담지 못할 때 문제가 되는 취약점을 뜻합니다. 버퍼 오버플로우가 발생할 경우, 메모리 상에서 버퍼를 초과하는 부분이 덮어씌여지기 때문에 버퍼 이후의 메모리값이 바뀌게 됩니다. 어쨋든 메모리 관리를 잘 할 자신이 있다면 scanf 함수를 써서 입력을 받으면 되는데, 다음과 같은 .. 2018. 7. 7.
Visual Studio에서 input.txt로 입력 리다이렉션하는 방법 Visual Studio에서 input.txt로 입력 리다이렉션하는 방법프로그램을 만들 때나 알고리즘 문제를 풀 때 긴 입력값을 받아야할 때가 있습니다. 입력값을 손수 치는 것보다 빠르게 입력할 수 있도록 입력 리다이렉션하는 방법에 대해서 알아봅니다. 1. 소스 파일을 우클릭하고 [추가] - [새 항목]을 선택합니다. 2. 이름을 ['파일명'.txt]로 지정하고 [추가] 해줍니다. 3. ['파일명'.txt] 파일이 생겼습니다. 4. 이제 프로젝트를 우클릭하고 [속성]을 클릭합니다. 5. 왼쪽 [구성 속성]에서 [디버깅]을 선택한 뒤, [명령 인수]에 [ 2018. 7. 6.
Visual Studio에서 컴파일 후 콘솔 창 유지하는 방법 Visual Studio에서 컴파일 후 콘솔 창 유지하는 방법Visual Studio에서는 Ctrl + F5 키를 이용해 컴파일 후 프로그램을 실행할 수 있습니다. 이 때 명령 프롬프트 창이 실행되고 창에서 프로그램의 결과값을 확인할 수 있습니다. 그런데 프로그램이 종료될 때 이 콘솔 창이 사라지게 되면 프로그램의 결과값을 확인할 수 없게 됩니다. 이렇게 프로그램의 결과값을 확인할 수 없는 문제를 해결하기 위해서 콘솔 창을 유지시키는 방법에 대해 알아봅니다. 1. 프로젝트를 [우클릭]한 뒤 [속성]을 클릭합니다. 2. 왼쪽의 [구성 속성] - [링커]에서 [시스템]을 클릭하고 [하위 시스템] 에서 [콘솔(/SUBSYSTEM:CONSOLE)]을 선택합니다. 3. 이제 [Ctrl + F5]를 눌러 크로그램을.. 2018. 7. 6.
9.3 커널 동기화 9.2 커널 동기화9.2.1 동시성 문제공유자원에 접근하는 코드영역을 '임계영역'이라고 한다.이 임계영역이 동시에 실행되면 경쟁상태가 되어 동시성 문제가 발생할 수 있다. 동시성 문제의 원인1) 인터럽트: 커널 코드가 공유 자원을 사용하는 중에 인터럽트가 발생하여 인터럽트 핸들러가 공유 자원을 사용함.2) 지연함수: 커널 타이머나 tasklet이 특정 함수를 호출함.3) 선점형 커널: 프로세스가 커널에서 실행 중일 때 다른 프로세스를 스케줄링할 수 있음.4) SMP 시스템: 2개 이상의 CPU가 동시에 공유 자원에 접근. 9.2.2 세마포어태스크가 임계영역에 도달하면 세마포어를 1 감수시킨 후 진입한다.세마포어가 0인 경우 태스크는 잠이 든다. (임계영역에 다른 태스크가 있는 경우임)태스크가 임계영역을 .. 2018. 7. 6.