본문 바로가기

전체 글58

Boxing UnBoxing 대부분 언어에서 변수는 참조 변수와 값 변수가 존재한다.C#에서도 이 두 종류의 변수가 있는데 이들간 서로 전환하는 방법을 Boxing / UnBoxing 이라고 한다. Boxing : 값 변수를 참조 변수로 변환하는 기법UnBoxing : 참조 변수를 값 변수로 변환하는 기법 1. Boxing 과정 1) 값 변수를 객체화 하기 위한 메모리(Box)를 힙 영역에 생성한다. 2) 값 변수의 값을 힙 영역에 생성한 Box로 복사한다. 3) 참조 변수가 박스를 가리키도록(참조하도록) 한다. 2. UnBoxing 과정 1) 해당 객체가 지정한 값타입을 Boxing한 값인지 확인한다. 2) 객체의 값을 값타입 변수에 복사한다. int p = 100;object o = p; //Boxingif(o is int) /.. 2015. 10. 6.
가상 함수 C++은 다형성을 지원하기 위해서 virtual 키워드를 제공한다.부모 클래스에서 virtual 키워드가 붙여진 함수는 자식 클래스에서 재정의 될 수 있다.이 재정의하는 것을 오버라이딩이라고 한다. 설명을 위해 하나의 클래스와 이를 상속받는 자식클래스를 정의하겠다.class Parent{virtual void Print(){printf("%s", "Parent Print");}}class Child : public Parent{void Print(){printf("%s", "Child Print");} //상속받는 클래스에서의 virtual 키워드는생략가능} Parent* p = new Child;p->Print(); //-> 포인터가 실제 가리키는 클래스인 Child 클래스의 Print가 호출된다. 컴.. 2015. 10. 6.
우선순위 스케줄링 우선순위가 가장 높은 프로세스에게 먼저 CPU를 할당하는 방법이다. 우선순위가 같은 프로세스들의 경우에는 FCFS 방법을 적용한다. 우선순위는 프로세스 실행자의 직위 또는 프로세스의 중요성 등에 의해 결정디고 PCB(Process Control Block)에 저장된다.우선순위 스케줄링의 문제점으로는 프로세스의 우선순위가 낮으면 오랜 시간 동안 대기할 수 있다는 점이다. 이 경우 에이징(aging)이라는 해결책이 있는데 이는 일정 시간동안 실행되지 않으면 우선순위를 한 단계씩 높여주는 방법이다. 2015. 10. 6.
라운드 로빈(Round Robin) 스케줄링 라운드 로빈 스케줄링은 CPU를 하나의 프로세스가 종료될 때까지 배정하는 것이 아니라 여러 프로세스들이 CPU를 조금씩 돌아가며 할당받아 실행되는 방식이다.프로세스들은 시간 할당량(time quantum) 동안 CPU를 할당받아 실행되며 이 시간 동안 모든 일을 완료하지 못하면 운영체제에 의해 준비 상태로 쫓겨나고 준비 큐의 다른 프로세스에게 중앙처리장치를 할당한다.라운드 로빈 방식에서는 시간 할당량의 크기가 성능에 큰 영향을 미친다. 만약 프로세스들의 실행이 종료될 수 있을만큼 시간할당량이 커지면 FCFS 스케줄링과 비슷해지므로 프로세스들의 평균 대기 시간이 길어지게 된다. 반면 시간 할당량이 매우 적으면 문맥 전환이 자주발생하므로 실행보다 문맨 전환하는데 많은 시간을 소모하게 된다. 따라서 적절한 시.. 2015. 10. 6.