분류 전체보기 290

C++ 가상 함수 (virtual) - 기본

가상 함수 (Virtual)기본 클래스의 포인터로 호출하더라도 파생 클래스에 재정의된 함수를 호출하도록 만들려면 기본 클래스의 멤버 함수를 가상 함수로 선언해야 한다.- 기본 클래스를 상속받은 파생 클래스에 같은 함수가 있다면 파생 클래스의 함수는 무시되고 기본 클래스의 함수로 실행이 됩니다.- 파생 클래스의 함수를 실행시키고 싶다면 virtual 키워드를 사용해야 합니다. 이전에 상속에서 예를 들었었던 Shape를 예로 들어 이어나가겠습니다.   Shape 클래스 선언부- void Draw() const; 함수에 가상함수 키워드가 없는 이전의 예제입니다. 가상함수 키워드를 사용하지 않고 Draw 함수를 호출하게 되면 아래와 같은 결과가 나옵니다.  파생 클래스(Rectangle, Eclipse)의 Dr..

C++ 상속

객체 지향 프로그래밍이 제공하는 상속이라는 특징은 상속 그 자체로도 의미가 있지만 상속에 의해서 다형성이 제공된다는 점에서 그 의미가 큽니다. 클래스형 변환 규칙클래스와 관련된 형 변환 규칙을 클래스형 변환 규칙이라고 합니다. 규칙들은 아래와 같습니다.- 파생 클래스의 객체는 기본 클래스의 객체로 형 변환 가능하다.- 파생 클래스의 포인터는 기본 클래스의 포인터로 형 변환 가능하다.- 파생 클래스의 레퍼런스는 기본 클래스의 레퍼런스로 형 변환 가능하다. 클래스형 변환 규칙 중 객체 간의 형 변환은 자주 사용되지 않습니다. 주로 포인터 간의 형 변환이나 레퍼런스 간의 형 변환이 사용됩니다. 백문이 불여일견, 예를 통해서 알아보겠습니다.   도형과 사각형, 원의 관계를 예로 들겠습니다.Rectangle과 E..

프로세스와 스레드

프로세스프로세스는 수 많은 요소들로 구성된 개체로 생각될 수 있습니다. 프로세스의 두 필수적인 요소는 프로그램 코드, 코드와 연계된 데이터의 집합입니다. 처리기가 프로그램 코드를 수행한다고 가정하면, 그 수행중인 개체가 프로세스입니다.- 수행 중인 프로그램- 컴퓨터 상에 수행 중인 프로그램의 인스턴스- 처리기에 할당되어 수행될 수 있는 개체- 명령들의 순차 수행, 현재 상태, 연계된 시스템 자원들의 집합 등에 의해 특징지어지는 활동 단위- 프로세스는 여러개의 스레드를 가질 수 있습니다. (다중 프로세스라고 가정할 때)- 자원 소유권 : 자신의 이미지를 위한 가상 주소 공간을 포함합니다. + 프로세스 이미지 : 프로세스 제어 블록에 정의되어 있는 프로그램, 데이터, 스택 등의 집합 + 주기억장치, 입출력 ..

Basics/OS 2014.11.07

CPU 스케줄링 알고리즘

CPU 스케줄링요즘과 같은 다중프로그래밍 환경에서 가장 중요한 부분은 스케줄링이라고 할 수 있습니다.- "응답시간과 처리량, 효율성을 증대시키기 위해 CPU가 다음에 실행할 프로세스를 선택하는 것"이라고 할 수 있습니다. 선점과 비선점선택함수라고도 하는데 다음번 실행을 위해 준비 큐에서 대기중인 프로세스 하나를 고를 때 사용하는 알고리즘을 이야기합니다. 비선점 모드- 프로세스가 일단 실행 상태에 진입하면 종료되거나 자발적으로 CPU를 놓을 때 까지는 CPU를 빼앗기지 않습니다.- 자발적으로 CPU를 놓는다는 것은 프로세스가 종료되거나 입출력 요구 및 시스템 서비스 호출 등으로 인해 스스로 블록되는 현상을 말합니다.- 모든 프로세스에게 공정하고 응답시간의 예측이 가능합니다.- 짧은 프로세스가 작업시간이 긴..

Basics/OS 2014.11.07

TCP, UDP의 특징 비교

TCP와 UDP는 OSI 7계층 중 전송계층의 프로토콜로 포트를 사용한 두 종단 호스트 간의 데이터 전달을 담당합니다. TCP TCP(Transmission Control Protocol)는 두 종단간의 연결을 설정한 후에 데이터를 8비트 바이트 스트림으로 교환하는 연결형 프로토콜 입니다. TCP와 IP의 도메인을 비교하면, - IP : 호스트 대 호스트, 컴퓨터 레벨간의 통신이며 목적지 호스트에게만 메시지를 전달할 수 있습니다. - TCP : 응용 프로그램(프로세스)간에 메시지를 전달하며 포트 번호를 이용합니다. TCP의 연결 설정 및 해제 TCP는 송신측과 수신측이 서로 연결 설정을 위해 3단계로 신호를 교환합니다. 1. 송신측이 수신측에 SYN 세그먼트를 보내 연결 설정을 요청한다. 2. 수신측이 ..

Problem 11. 20x20의 격자 안에 인접한 숫자 4개의 곱 중 가장 큰 값은?

Project Euler - Problem 11. In the 20×20 grid below, four numbers along a diagonal line have been marked in red. 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91 22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 ..

Problem 10. 2백만 이하 소수들의 합

Project Euler - Problem 10. The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17. Find the sum of all the primes below two million. - 10 이하의 소수들의 합은 2+3+5+7 = 17이다. 그렇다면 200만 이하의 소수들의 합은? 이런 식으로 구할 수 있습니다. 하지만, 100만개의 루프(짝수 제외)를 돌아야하기 때문에 해가 나오길 꽤나 오랜시간 기다려야합니다. - 저도 못기다려서 실행중에 껐습니다. 연속된 소수를 구하는 방법에는 에라토스테네스의 체 라는 방법이 있습니다. 에라토스테네스의 체 소수를 구하는 방법으로 조금만 생각해보면 유추해낼 수 있는 방법입니다. 1. 1은 소수가 아니므로 제외합니다...

Problem 8. 1000자리의 숫자 중 인접한 13자리의 곱중 가장 큰 수는?

Project Euler - Problem 8. The four adjacent digits in the 1000-digit number that have the greatest product are 9 × 9 × 8 × 9 = 5832. 73167176531330624919225119674426574742355349194934 96983520312774506326239578318016984801869478851843 85861560789112949495459501737958331952853208805511 12540698747158523863050715693290963295227443043557 66896648950445244523161731856403098711121722383113 622298934..

Problem 7. 10001번째 소수는?

Project Euler - Problem 7. By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13. What is the 10 001st prime number? - 여섯개의 소수를 보면 2, 3, 5, 7, 11, 13이 있습니다. 6번째 소수는 13인걸 알 수 있습니다. 그렇다면, 10001번째 소수는 몇일까요? - 소수는 자신이 아닌 숫자로는 나누어 떨어지지 않는 숫자입니다. - 1은 소수가 아닙니다. - 소수는 짝수가 아닙니다. 답은 10001번째 소수는 104743 입니다.