본문 바로가기

전체 글339

4-1. Kernel Object 윈도우 핸들 A라는 프로세스가 윈도우를 만들어서 3000번이라는 핸들을 받았다고 가정한다. 이 3000번이라는 번호를 B 프로세스에게 전달한다고 했을 때 B 프로세스가 A 프로세스가 만든 핸들을 조작할 수 있을까? OK 윈도우 핸들은 모든 프로세스에 개방적이다. 그렇다면 CreatePen의 반환값인 Pen 객체는 어떨까? CreatePen의 반환값으로 나온 Pen도 같은 방법으로 B 프로세스에 전달한다면? B 프로세스가 A 프로세스가 만든 펜의 핸들을 조작할 수 있을까? NO GDI 핸들은 그걸 만든 하나의 프로세스만 사용할 수 있다. 그럼 어떤건 되고 어떤 건 안되는데 이걸 어떻게 판별해야 할까? 이 접근권한은 Object Category라는 카테고리로 분류된다. Object Category User .. 2022. 9. 13.
3장-5. 재귀 함수 재귀란 무엇인가? for문이나 while문 이외에 반복을 구현하는 또 다른 방법 자신의 정의 내에서 자기 자신을 호출하는 것 재귀는 반복적인 작업을 수행하는데 명쾌하고 강력한 대안을 제시한다! 계승 함수 양의 정수 n의 계승(n!)는 1부터 n까지의 정수곱이다. n = 0이라면 n!는 1로 정의된다. 더 일반적으로는 n >= 0이다. 5! = 5 x 4 x 3 x 2 x 1 = 120 이런 n!를 나타내기 위해 factorial(n) 이라는 표현을 사용한다. 계승 함수는 재귀적인 공식을 제시하는 방법으로도 정의된다. factorial(5) = 5 * (4 * 3 * 2 * 1) = 5 * factorial(4) 그래서 일반적으로 양에 정수에 대해 factorial(n)은 n * factorial(n-1).. 2022. 9. 13.
1주차-1. 2979번 트럭 주차, 카운팅 배열에 대한 개념 2979번 트럭 주차 문제 문제의 요지는 주차된 차량 별 3가지 요금을 입력 받아서,주차된 차량이 몇 대냐에 따라 1대 당 요금을 다르게 책정하고최종적으로 발생하는 비용을 물어보는 문제였다. 먼저 무작정 풀어보기 값을 입력 받고, for문의 범위를 정하기 위해 최대 / 최소를 구하는 로직 int A, B, C; cin >> A >> B >> C; int arr[3][2] = {}; int min = 101, max = -1; for (int i = 0; i > arr[i][j]; if (arr[i][j] >= max) max = arr[i][j]; if (arr[i][j] > A >> B >> C; int sum = 0;.. 2022. 9. 12.
3-3. 가상 주소 공간과 DLL 가상 주소 공간이란? 두 프로세스 A, B가 켜져 있을 때, A가 물리메모리 0x10000000번대 주소를 사용하고, B가 물리메모리 0x20000000번대 주소를 사용하는 경우를 가정해보자. 어쩌다 A가 실수로 0x21000000번대 주소로 접근해서 잘못 참조할 수 있다. 이걸 막으려면 두 프로세스는 가상의 주소공간을 갖고, 실제 물리 메모리는 운영체제가 관리 해주는게 좋을 것 같다. 물리 메모리를 직접 사용하면 안되는 이유 프로세스 간 안정성이 떨어짐 사용할 수 있는 주소에 제약이 있음 (다른 프로세스의 주소를 피해야 하므로) Page Table 이에 대한 방안으로 Page Table이라는 방안을 통해 해결한다. 페이지테이블은 위와 같은 문제들을 방지하기 위해서 물리 주소와 가상 주소를 매핑해주는 역.. 2022. 9. 12.