Chapter 9 페이징 (Paging)연습문제9.1 논리적 주소와 물리 주소의 다른 점을 기술하시오.- CPU가 생성하는 주소를 일반적으로 논리 주소라 하고 메모리가 취급하게 되는 주소(즉, 메모리 주소 레지스터(MAR)에 주어지는 주소)는 일반적으로 물리 주소라 한다.논리 주소는 가상적인 공간에 만들어지며, 모든 프로그램에 대해 0 주소를 할당하는 것이 가능하며, 이론적으로 크기 제한이 없다. 물리 주소는 실제 물리 주소를 가리키며, 하나의 0번 주소에서 시작하여 배열처럼 연속된 주소 공간을 가진다. 크기의 물리적인 한계가 반드시 존재한다.논리 주소를 쓰는 이유는 물리 주소만 사용하게 되었을 때 메모리의 사이즈에 따라서 주소비트가 커져 인스트럭션을 구성하거나 인스트럭션을 수행하는데 비효율적이다.9.2 내부 단편화(Internal fragmentation)와 외부 단편화(external fragmentation) 사이의 차이점을 설명하고, 어떻게 다른지 설명하시오.- 외부 단편화는 세그먼테이션에서 세그먼트 단위로 메모리에 적재시키는데 best-fit, first-fit, worst-fit의 알고리즘을 사용하여 적재되는데 세그먼트와 세그먼트 사이의 공간이 다른 세그먼트는 들어갈 수 없을 정도의 빈 공간이 생기는 것을 말한다.내부 단편화는 페이징에서 페이지 단위로 메모리에 적재시키는데 프로그램의 사이즈가 정해진 단위의 블록으로 나뉘다가 정해진 단위의 사이즈보다 조금 커져 조금 큰 부분을 하나의 블록에 저장하게 되어 블록 안에 생기는 빈 공간을 말한다.9.3 다음의 할당 알고리즘을 설명하시오.a. 최초 적합(first-fit) : 첫 번째 사용 가능한 가용 공간을 할당한다. 검색은 집합의 시작에서부터 하거나 지난 번 검색이 끝났던 곳에서 시작될 수 있다. 충분히 큰 가용 공간을 찾았을 때 검색을 끝낼 수 있다.b. 최적 적합(best-fit) : 사용가능한 공간들 중에서 가장 작은 것을 택한다. 리스트가 크기순으로 되어 있지 않다면 전 리스트를 검색해야만 한다. 이 방법은 아주 작은 가용 공간을 만들어 낸다.c. 최악 적합(worst-fit) : 가장 큰 가용 공간을 택한다. 이 때 자유 공간들이 크기순으로 정렬되어 있지 않으면 전 리스트를 다 검색해야만 한다.9.4 어떤 프로세스가 롤-아웃(roll-out) 되면 당분간은 CPU를 사용할 수 없다. 그러나 어떤 프로세스가 롤-아웃 되지 않았는데도 CPU를 사용할 수 없는 경우를 설명하시오.- 롤-아웃이란 주기억장치의 내용을 보조기억장치로 옮기는 것인데, 어떤 프로세스가 롤-아웃 되지 않았는데도 CPU를 사용할 수 없는 경우는, 프로세스가 I/O를 기다릴 때이다. 프로세스가 I/O 장치버퍼에 올라가야 할지도 모르기 때문에 프로세스가 롤 아웃 될 경우 버퍼에 의해 이전에 차지되었던 메모리가 어떤 다른 프로세스에게 할당된다면 I/O 장치는 새로 차지한 프로세스의 메모리 공간을 읽게 되어 잘못된 수행을 하게 된다.9.5 100K, 500K, 200K, 300K, 600K 순으로 메모리 분할이 이루어져 있을 때 최초 적합, 최적 적합, 최악 적합의 알고리즘은 212K, 417K, 112K, 426K 순의 프로세스를 어떻게 할당 하는가? 어느 알고리즘이 메모리를 가장 효과적으로 사용하는가?- 최초 적합 : 212K는 500K에, 417K는 600K에, 112K는 다시 처음부터 검색해서 (500-112)K에, 426K는 적재할 수 없다.- 최적 적합 : 전체를 검색한 후 212K는 300K에, 417K는 500K에, 112K는 200K에, 426K는 600K에 적재한다.- 최악 적합 : 전체를 검색한 후 212K는 600K에, 417K는 500K에, 112K는 (600-212)K에, 426K는 적재할 수 없다.9.6 프로그램이 코드와 데이터 부분으로 나누어질 수 있는 시스템을 생각해 보자. CPU는 명령어를 원하는지 (instruction fetch) 또는, 데이터를 원하는지(data fetch 또는 store)를 알고 있다. 그러므로 두 개의 기준-한계쌍이 제공된다(명령어를 위해 하나, 데이터를 위해 하나). 명령어 기준-한계 레지스터 쌍은 자동적으로 읽기 전용이며, 프로그램은 다른 사용자 사이에서 공유된다. 이 기법의 장?단점을 논하시오.- 장점 : 하드웨어가 자동으로 코드 부분과 데이터 부분을 구분해주므로 코드 부분과 데이터 부분을 분리 가능하므로 서로 다른 프로세스들 간에 코드부분 공유가 가능해진다.- 단점 : 코드와 데이터 부분을 나누는 것이 단순하지 않기 때문에 크기를 확장하거나 변형하는데 다른 시스템에 비해 용이하지 않을 수 있다.9.7 페이지의 크기는 항상 2의 멱승인 이유를 설명하시오.- 논리주소를 쉽게 페이지 넘버와 페이지 오프셋으로 변환할 수 있고 페이지 넘버와 오프셋은 몇 개의 비트로써 표현할 수 있게 된다.9.8 1024 워드를 가진 페이지들이 8개 모여 구성된 논리 주소 공간이 있다. 이들이 32개의 페이지 프레임(실제 기억 공간)으로 매핑되는 것을 생각해 보자.a. 논리 주소에 몇 개의 비트(bit)가 있는가? 1024 = 210. ∴10비트.b. 물리 주소에 몇 개의 비트(bit)가 있는가? 8개가 모여 42개의 페이지 프레임에 매핑되므로 4개의 옵셋이 존재하고 이 옵셋은 2bit로 표현되므로 12비트.9.9 페이징 시스템에서 프로세스는 자신이 소유하지 않은 메모리를 접근할 수 없는 이유는 무엇인가? 운영 체제는 어떻게 다른 메모리에 대한 접근을 허용하는가? 허용한다면 그 이유는 무엇이며, 안한다면 그 이유는 무엇인지 설명하시오.- 물리적 기억장치와 논리적 주소공간도 고정된 크기의 프레임과 페이지로 나뉘기 때문에 프로세스가 실행될 때 그것의 페이지는 사용 가능한 어떤 프레임에도 할당될 수 있는 방식이다. 그래서 직접적으로 메모리에 엑세스 되지는 못한다.9.10 메모리에 페이지 테이블(page table)을 저장하는 페이징 시스템을 생각해 보자.a. 만약 메모리 참조가 200nsec 걸린다면 페이지로 이루어진 메모리의 참조는 얼마나 걸리는가?- 메모리 참조가 200nsec라면 페이지 테이블 접근하는데 200nsec, 페이지 테이블에서 다시 메모리 참조하는데 200nsec해서 400nsec 걸릴 것이다. (순수히 참조하는데 걸리는 시간)b. 만약 연관 레지스터(associative register)를 가지고 있어 모든 페이지 테이블 참조의 75%를 연관 레지스터에서 찾는다면 메모리 접근 시간은 얼마나 줄어들게 되는가? (단, 연관 레지스터에 페이지 테이블 항목이 있다면 시간이 걸리지 않는다고 가정하시오.)- 0.75×200 + 0.25×400 = 250nsec9.11 페이지 테이블에서 2개의 항목이 기억장치 속의 같은 페이지 프레임을 가리키도록 하면 그 결과는 어떻게 될까? 이것은 많은 양의 기억 공간을 한 장소에서 또 다른 장소로 복사하기 위해 필요한 시간의 양을 감소시키는 데 사용될 수 있는가? 그 이유는 무엇인가? 한 페이지의 내용이 업데이트 될 경우 다른 페이지에 미치는 효과는 무엇인가?- 두 개의 프레임을 사용하지 않고도 두 개를 사용한 효과를 가져와 메모리 절약이 가능하고 복사하기 위해 재접근하고 읽고 저장하는 과정이 생략되어 시간 절약의 효과도 가져온다. 그러나 참조하는 페이지가 업데이트 되어 페이지 테이블에서 가리키는 프레임 번호가 바뀌었을 때에는 같이 참조하던 페이지에 상관없이 독립적으로 업데이트가 가능하고 한 프로세스의 접근에 의해 프레임의 페이지가 업데이트 될 경우 다른 프로세스가 참조할 때 독립성이 보장되지 않아 잘못된 수행을 하게 될 수 있다.9.12 세그먼테이션과 페이징을 많이 결합하여 사용하는 이유는 무엇 때문인가?- 세그먼테이션과 페이징을 썼을 때 발생하는 단편화의 문제나 페이징에서 반복문이 잘려져 2번씩 계속 반복하는 문제나 세그먼테이션이 극단적으로 커져 다른 세그먼테이션이 계속 대기해야하는 것을 방지하기 위해 두 기법을 결합하여 융통성 있게 세그먼테이션으로 나누고 다시 페이징을 하여 각각의 단점들을 보완하기 위함이다.9.13 한 세그먼트가 두 개의 프로세스 주소 공간에 속할 수 있는 메커니즘을 설명하시오.- 각 프로세스는 세그먼트 테이블이 주어지는데 두 프로세스의 세그먼트 테이블이 한 물리 주소를 가리키게 되면 곧 공유가 이루어지는 것이다. 이 때 공유는 세그먼트 수준에서 일어나며 어떤 정보도 공유되려면 세그먼트 수준에서 공유되도록 해야 한다. 세그먼트가 여러 개라도 공유될 수 있고, 따라서 여러 개의 세그먼트로 구성된 프로그램도 공유될 수 있다.9.14 순수 페이징보다도 세그먼테이션을 사용하여 재진입(reentrant) 모듈을 공유하는 것이 왜 쉬운지 이유를 설명하시오.- 순수한 페이징의 페이지 접근 방식보다 세그먼테이션은 단지 하나의 세그먼테이션을 접근하는 주소만 알면 되므로 주소 표시가 간단해지고 페이지 번호와 옵셋을 자동으로 분리하기 때문에 사용자가 신경 쓰지 않아도 된다.
Chapter 8 교착 상태연습문제8.1 컴퓨터 시스템 환경과 관련되지 않은 교착 상태의 예를 세 개만 열거하시오.- 철수가 영희에게 만원을 갚으라고 하는데 영희는 민철이가 만원 갚으면 갚는다고 하고 민철이는 철수가 만원 갚으면 된다고 서로 주지 않고 있을 때- 외길에서 사람 둘이 만나 서로 비켜주기만을 바라고 있는 상태- 지하철에서 타려는 사람 마음이 급해서 내리는 사람 안 비켜주고 서있을 때8.2 단지 한 개의 프로세스만 포함하는 교착 상태도 존재 가능한가? 당신의 답을 설명하시오.- 존재할 수 없다. 한 개의 프로세스로부터 한 가지의 요구밖에 들어오지 않으므로 다른 요구와 교착 상태를 만들어 낼 수 없다.8.3 [그림 8.11]에 보인 교통의 교착 상태를 생각해 보자.a. 이 예에서 교착 상태를 위한 네 가지 필요조건이 정말로 성립함을 보이시오.b. 이 시스템에서 교착 상태를 회피하는 간단한 법칙을 설명하시오.- Mutual exclusion : 길 위의 공간은 차의 크기만큼 차지하며 그 공간은 공유 불가능하다.- Hold-and-wait : 공간을 차지한 채 앞의 차들이 빠져나가기만을 기다린다.- Nopreemption : 앞에 있는 차를 강제로 없애고 지나갈 수 없다.- Circular wait : 모든 차가 ‘앞의 차가 지나가면’이라는 요청으로 꼬리를 물어 결국 자신에게 돌아오는 순환으로 이루어졌다.- 회피할 법칙 : 순환을 막기 위해서 사거리에서 정지하는 것을 금한다.8.4 시스템이 불안전 상태에 있다고 가정하자. 프로세스들이 교착 상태로 되지 않고 실행을 종료하는 것이 가능함을 보이시오..- 불안전 상태에 있으면 교착 상태가 일어날 수 있으므로 불안전 상태의 프로세스 중 하나를 중지 시키고 그 메모리에 다른 프로세스가 대기를 해제하고 메모리로 올려 교착 상태로 빠지는 것을 막을 수 있다.8.5 교착상태를 예방하는 가능한 한 해결안은 다른 모든 자원보다 반드시 먼저 요구되어야 하는 하나의 높은 순위의 자원을 갖는 것이다. 예를 들면, 만일 다수의 스레드가 다섯 개의 Java 객체 A...,E를 위한 락에 접근하려고 시도한다면, 교착상태가 가능하다. 우리는 여섯 번째 객체F를 추가함으로써 교착상태를 예방할 수 있다. 한 스레드가 객체 A...,E중의 객체를 위한 락을 획득하기를 원한다면, 그 스레드는 반드시 먼저 객체 F를 위한 락을 획득해야 한다. 이 해결안은 봉쇄(containment)라고 알려져 있다. 객체 A...,E를 위한 락은 객체 F를 위한 락에 포함되어 있다. 이 기법을 8.4.4 절의 순환-대기 방법과 비교해 보시오.- 순환-대기 방법은 모든 자원 타입들에게 전체적인 순서를 부여하여, 각 프로세스가 열거된 순서대로 오름차순으로 자원을 요청하도록 하여 교착상태를 예방하는 방식이지만 봉쇄는 락을 얻기 위한 추가 객체 하나를 생성함으로써 락을 얻어 자원을 할당하는 방식으로 둘다 순차적인 접근을 하도록 하여 교착상태를 예방하도록 하는 방법들이다.8.6 Synchronized 메서드가 다른 synchronized 메서드를 호출하여 교착상태가 되는 예를 보이는 Java 프로그램을 작성하시오.8.7 별도의 메서드가 서로 다른 세마포에 연산을 수행하려고 시도하여 교착상태가 되는 예를 보이는 Java 프로그램을 작성하시오.8.8 세 개의 프로세스에 의해 공유되는 동일한 타입의 네 개의 자원으로 구성된 시스템을 고려해 보자. 이들 각 프로세스는 최대 두 개의 자원을 필요로 한다. 시스템에 교착상태가 발생하지 않음을 보이시오.- 각 프로세스가 최대 두 개의 자원을 필요로 하고 자원은 네 개이므로 두 개의 프로세스는 하나의 자원을 점유하여 쓸 수 있으므로 자원의 사용을 끝내면 접근하는 방식으로 지속적인 대기 없이 이루어질 수 있다.8.9 n개의 프로세스들이 공유하는 동일한 타입의 자원 m개로 구성한 시스템을 고려해 보자. 자원들은 단지 한 번에 한 개씩 프로세스들에 의해 요청되고 방출될 수 있다. 다음의 두 조건이 성립하면, 시스템이 결코 교착 상태가 될 수 없음을 설명하시오.a. 각 프로세스의 최대 수요는 1과 m개 사이의 자원이다.b. 모든 최대 수요의 합은 m +n개 보다 작다.- 각 프로세스는 최소 1개의 수요를 가지고 있으므로 최소 m +n개 이상은 되어야 순환할 수 있는 노드가 될 수 있는데, m +n보다 작으므로 순환할 수 없다. 따라서 이 조건으로 교착상태가 될 수 없다.8.10 시스템이 자신의 프로세스 중 일부가 기아 상태인 것을 탐지할 수 있는가? 만일 당신의 답이 “예”이면 그 이유를 설명하시오. 만일 답이 “아니오”이면, 어떻게 시스템이 기아 문제를 처리할 수 있는지 설명하시오.- 예, 프로세스가 단지 한정된 시간 동안만 희생자로 선정된다는 것을 반드시 보장하거나 비용 요소에 후퇴의 횟수를 포함시키는 방법이 있다.8.11 다음의 자원 할당 정책을 고려해 보자. 자원에 대한 요청과 할당은 언제나 가능하다. 자원이 사용 가능하지 않아서 자원에 대한 요청이 충족될 수 없다면, 우리는 자원을 기다리며 봉쇄된 프로세스들을 검사한다. 만약 이들이 원하는 자원을 가지고 있으면, 이들 자원들을 회수해 요청 프로세스에게 공급한다. 대기 프로세스가 기다리는 자원들의 벡터가 회수된 자원을 포함하기 위해 증가된다.예를 들어, 3개의 자원 타입과(4, 2, 2,)로 초기화된 벡터 가용(Available)을 가진 시스템을 고려해 보자. 프로세스 P0가 (2, 2, 1)을 요청하면, 이들을 즉시 얻을 수 있다. 만약 P1이 (1, 0, 1)을 요청하면, 이들을 얻을 수 있다. 그 후 P0가 (0, 0, 1)을 요청하면, 이용 가능한 자원이 없기 때문에 봉쇄된다. 만약 P2가 이제 (2, 0, 0)을 요청하면, 가용한 (1, 0, 0)과 P0에 할당된 것 하나를 획득한다(P0가 봉쇄되어 있으므로). P0의 할당(Allocation) 벡터는 (1, 2, 1)로 내려가고, 이것의 요구(Need) 벡터는 (1, 0, 1)로 올라간다.
Chapter 7 프로세스 동기화연습문제7.1 두 개의 스레드를 위한 임계 구역 문제에 대한 최초의 정확한 소프트웨어 해결책은 Dekker에 의해 개발되었다. 그것을 [그림 7.42]에 보였다. 두 스레드들 T0와 T1은 클래스 Dekker의 객체를 공유하여 활동을 조정한다. 알고리즘이 임계 구역을 위한 세 가지 요구를 전부 만족시키는 것을 보이시오.public class Dekker extends MutualExclusion{public Dekker() {flag[0] = false;flag[1] = false;turn = TURN_0;}public void enteringCriticalSection(int t) {int other;other = 1 - t;flag[t] = true;while (flag[other] == true) {if (turn == other) {flag[t] = false;while (turn == other)Thread.yield();flag[t] = true;}}}public void leavingCriticalSection(int t) {turn = 1 - t;flag[t] = false;}private volatile int turn;private volatile boolean[] flag = new boolean[2];}[그림 7.42] 상호 배제를 위하 Dekker의 알고리즘7.2 5장에서, 우리는 메시지 전달을 사용하는 한정된 버퍼 문제에 대한 다중 스레드 해결안을 보였다. MessageQueue 클래스는 스레드에 대해 안전하지 않은 것으로 고려된다. 즉, 다수의 스레드가 병행으로 큐를 접근하려고 시도하면 경쟁 상황이 발생할 수 있다. Java 동기화를 사용하여 MessageQueue 클래스를 병행하여, 스레드에 대해 안전하도록 만들어 보시오.7.3 이진 세마포를 구현하는 BinarySemaphore 클래스를 만드시오.7.4 모든 Java 프로그램 예의 wait() 문은 while루프의 일부였다. 왜 당신이 wait()를 사용할 때는 항상 while 문을 사용할 필요가 있는지, 그리고 왜 당신이 if 문을 결코 사용하지 않는 지 설명하시오..- Java monitor는 항상 while loop내에서 깨어난 다음 깨어나야 하는 조건이 만족하는지를 확인해야만 한다. 그리고 만약 condition이 만족되지 않을 경우에는 다시 wait()을 실행해야 한다. 이렇게 반복적으로 깨어났다가 조건을 확인하고 다시 wait()하기 위해서는 반드시 while loop를 사용해야 한다. if문으로는 condition 확인을 단 한번밖에 할 수 없기 때문에 if문 안에서 wait()을 사용하면 깨어난 후에 condition을 확인하지 못하게 되므로 올바른 수행을 보장할 수 없다.7.5 Readers-writers 문제에 대한 해결안은 대기하는 writer가 기아하는 것을 막지 못한다. 만일 데이터베이스가 읽혀지고 있고 그리고 대기하는 writer가 있으면, 후속 reader들은 writer가 쓰기를 할 수 있기 전에 데이터베이스를 읽도록 허용될 것이다. 이 해결안을 병경하여 대기하는 writer가 기아하지 않도록 해 보시오.7.6 식사하는 철학자 문제에 대한 모니터 기반의 해결안을 7.7절에서 보였다. 이 해결안은 Java 비슷한 의사 코드로 작성되었으며, 조건 변수를 사용하였다. Java동기화를 사용하여 식사하는 철학자 문제에 대한 해결안을 만들어 보시오.7.7 식사하는 철학자에 대해 우리가 제시한 해결안은 철학자가 기아하는 것을 막지 못한다. 예를 들면, 두 철학자(이를테면, 철학자1과 철학자3)는 철학자2가 결코 먹을 수 없도록 먹기와 생각하기를 교대로 수행할 수 있다. Java 동기화를 사용하여, 식사하는 철학자에 대해 철학자가 기아하는 것을 방지하는 해결안을 개발해 보시오.7.8 7.4절에서, 인터럽트 불능화(disabling interrupt)는 시스템 클락에 종종 영향을 줄 수 있다고 하였다. 기 이유를 설명하고, 아울러 이 영향을 최소화할 수 있는 방법을 설명하시오.- 단일 처리기 시스템에서는 공유된 변수가 변경되려할 때 인터럽트를 허락하지 않으면 그 작업을 완수할 수 있게 된다. 그러나 다중 처리기 환경에서는 인터럽트를 허락하지 않는 것은 상당한 시간을 소비할 수 있게 될 수 있고 각 임계 구역에 들어가는 메시지 전달을 지연시켜 시스템 효율을 떨어뜨린다. 이때는 인터럽트에 의한 클럭의 갱신을 막으면 된다.7.9 이 장에서, 우리는 instance 메서드와 함께 synchronized문을 사용하였다. 인스턴스 메서드를 호출하는 것은 그 메서드를 하나의 객체와 연관시킬 것을 필요로 한다. Synchronized메서드에 들어가려면, 그 객체의 락을 소유할 것을 필요로 한다. Static 메서드는 그들이 호출될 때 한 객체와의 연관을 요구하지 않는다는 점에서 인스턴스 메서드와 다르다. Static메서드를 역시 synchronized로 선언하는 것이 어떤 방법으로 가능한지 설명하시오.- 인스턴스 메서드에서는 자신과 연관된 하나의 락을 가지므로 호출되고 있을 경우 락이 무시되는 방식으로 쓰이게 된다. 그러나 static 메서드는 그러한 하나의 락을 가지고 호출하지 않기 때문에 각 메서드를 synchronized로 선언함으로써 경쟁 상황을 막아야 한다.7.10 잠자는 이발사(Sleeping Barber)문제. 이발소는 n개의 의자를 갖춘 대기실과 하나의 이발용 의자를 갖춘 이발소로 구성된다. 이발할 고객이 없으면, 이발사는 잠을 잔다. 고객이 이발소에 들어왔을 때 모든 의자들이 이미 점유되어 있으면, 그 고객은 이발소를 떠난다. 이발사가 바쁘더라도 비어있는 의자가 있으면, 고객은 비어 있는 의자에 앉는다. 이발사가 잠들어 있으면, 고객이 이발사를 깨운다. 이발사와 고객이 협조하는 프로그램을 Java 동기화를 이용하여 작성하시오.7.11 흡연가(Cigarette Smoker) 문제. 세 개의 흡연가 프로세스와 한 개의 에이전트(agent) 프로세스를 가진 시스템을 생각하여 보라. 각 흡연가는 계속하여 담배를 만들고 이어 그 것을 피운다. 담배를 만들고 또한 피우기 위하여, 흡연가는 세 개의 원료 즉, 연초, 종이 그리고 성냥이 필요하다. 흡연가 프로세스들 중의 하나가 종이를 갖고, 다른 프로세스가 연초를 갖고, 세 번째의 프로세스가 성냥을 갖고 있다. 에이전트는 세 가지 재료들을 모두 한없이 제공한다. 에이전트가 테이블 위에 두 가지의 재료를 올려놓는다. 그러면 나머지 재료를 가진 흡연가가 담배를 만들어서 피우로, 에이전트에게 종료 신호를 보낸다. 에이전트는 그러면 또 두 가지의 재로를 올려놓고 이런 사이클이 반복된다. 에이전트와 흡연가가 동기화를 수행하는 프로그램을 Java 동기화를 이용하여 작성하시오.
20011616 인터넷학과 최성훈Chapter 2 관계 데이터 모델과 제약조건연습문제1. 다음 용어들을 간략히 설명하라.? 릴레이션 : 행과 열들로 표현되는 2차원의 테이블(스프레드 시트와 유사).? 차수 : 한 릴레이션에 들어 있는 애트리뷰트들의 수? 카디날리티 : 릴레이션의 투플 수? 릴레이션 스키마 : 릴레이션의 이름과 릴레이션의 애트리뷰트들의 집합? 릴레이션 인스턴스 : 릴레이션에 어느 시점에 들어 있는 투플들의 집합? 내포 : 릴레이션 스키마? 외연 : 릴레이션 인스턴스? 기본 키 : 한 릴레이션에 후보 키가 두 개 이상 있으면 설계자 또는 데이터베이스 관리자가 이들 중에서 하나를 선정한 키? 후보 키 : 각 투플을 고유하게 식별하는 최소한의 애트리뷰트들의 모임? 대체 키 : 선정된 기본 키가 아닌 후보키? 수퍼 키 : 한 릴레이션 내의 특정 투플을 고유하게 식별하는 하나의 애트리뷰트? 외래 키 : 관계 데이터베이스에서 릴레이션들 간의 관계를 나타내기 위해 사용되는 어떤 릴레이션의 기본 키를 참조하는 애트리뷰트2. 관계 데이터 모델이 무엇인가? 관계 데이터 모델의 기본적인 구성요소들을 설명하라.- 동일한 구조(릴레이션)의 관점에서 모든 데이터를 논리적으로 구성하여 선언적 질의어로 데이터를 접근하도록 하여 데이터의 높은 독립성을 제공하는 가장 단순한 개념의 모델 중 하나이다.? 릴레이션 : 2차원의 테이블애트리뷰트 : 릴레이션에서 가진 하나의 열튜플 : 릴레이션이 나타내는 엔티티의 특정 인스턴에 관한 사실(값)의 모임(레코드의 공식적 이름)3. 올바른 문장을 고르라. (3)(1) 도메인은 릴레이션의 한 열(column)이다.(2) 도메인은 릴레이션의 한 열의 부분집합이다.(3) 도메인은 릴레이션의 한 열을 포함한다.4. 릴레이션의 특성을 설명하라.- 각 릴레이션은 오직 하나의 레코드 타입만 포함한다.- 한 애트리뷰트 내의 값들은 모두 같은 유형이다.- 애트리뷰트들의 순서는 중요하지 않다.- 릴레이션이 투플들의 집합이기 때문에 동일한 투플이 두 개 이상 투플의 각 애트리뷰트는 원자값을 갖는다.- 투플들의 순서는 중요하지 않다.- 각 애트리뷰트의 이름은 한 릴레이션 내에서만 고유하다.5. 아래의 테이블들이 관계 데이터 모델의 릴레이션이 될 수 있는가? 그 이유는 무엇인가?R1ABCDa1b2c5d1a1b4^d3a1b4c5d3…………R2ABCDa1{b1, b2}c1d4a1b8c2d5a1b4c5d3…………- 될 수 없다. R1은 기본 키가 중복된 값을 가지고 있다. R2는 각 애트리뷰트의 값은 원자값을 가져야 하는데 집합을 구성하고 있으므로 될 수 없다.6. R(A, B)가 도메인 A, B상에서의 릴레이션이다. domain(A) = {a1, a2}, domain(B) = {0, 1, 2}라고 가정하자. 아래 질문에 답하라.(1) R(A, B)가 R(B, A)와 동등한가? - 동등하다.(2) R의 가능한 릴레이션 인스턴스 개수는 얼마인가? - 3개(3) (a0, 0)이 R의 투플이 될 수 있는가? 될 수 있다.(4) R의 차수가 얼마인가? - 2차7. 무결성 제약조건이 무엇인가?- 데이터베이스 상태가 만족시켜야 하는 조건이고 사용자에 의한 데이터베이스 갱신이 데이터베이스의 일관성을 깨지 않도록 보장하는 수단이다. 무결성 제약조건의 목적은 일관된 데이터베이스 상태를 정의하는 규칙들을 묵시적으로 또는 명시적으로 정의하는 것이다.8. 도메인 제약조건이 무엇인가?- 각 애트리뷰트 값이 반드시 원자값이어야 한다. 애트리뷰트 값의 디폴트 값, 가능한 값들의 범위 등을 지정할 수 있다.9. 키 제약조건이 무엇인가?- 키 애트리뷰트에 중복된 값이 존재해서는 안 된다.10. 엔티티 무결성 제약조건이 무엇인가?- 기본 키는 투플을 고유하게 식별하고, 효율적으로 빠르게 접근하는데 사용되는데 두 개 이상의 투플이 동일한 기본 키 값을 가질 수 없는데, 기본키를 구성하는 애트리뷰트가 널값을 가지면 투플들을 고유하게 식별할 수 없으므로 릴레이션의 기본 키를 구성하는 어떤 애트리뷰트도 널값을 가질 수 없다는 것이다.11. 참조 무결성 제약조건레이션의 연관된 투플들 사이의 일관성을 유지하는데 사용된다. 관계 데이터베이스가 포인터 없이 오직 릴레이션들로만 이루어지고, 릴레이션 사이의 관계들이 다른 릴레이션의 기본 키를 참조하는 것을 기반으로 하여 묵시적으로 표현되기 때문에 외래 키의 개념이 중요하다.12. 올바른 문장을 고르라. (1)(1) 관계 DBMS는 구체적인 응용과 독립적으로 엔티티 무결성과 참조 무결성을 유지한다.(2) 사용자가 엔티티 무결성과 참조 무결성을 유지하는 책임을 진다.(3) 사용자가 데이터베이스 스키마에 엔티티 무결성 또는 참조 무결성을 정의할 수 있다.13. 회사 데이터베이스에 두 개의 릴레이션이 포함되어 있다. EMPLOYEE 릴레이션의 DEPTNO 애트리뷰트는 DEPT 릴레이션에 대한 외래 키이다. 10번 부서를 삭제하려 한다. 이 때 참조 무결성을 유지하는 방안들을 설명하라.EMP(EMONO, EMPNAME, SALARY, DEPTNO)DEPT(DEPTNO, DEPTNAME, MGRNO)- DEPT릴레이션의 DEPTNO의 10번을 지우면 EMP릴레이션의 외래키의 DEPTNO의 10번 역시 지우도록 한다.14. 학생, 수강, 과목 릴레이션을 사용하여 다음 연산들에 대해 어떻게 참조 무결성 제약조건을 시행하는지 답하라. 각 문항이 현재의 그림 2.18의 관계 데이터베이스 인스턴스에 독립적으로 적용되었다고 가정한다.학생학번이름…11002이홍근…24036김순미…30419김순미수강학번과목번호학점11002CS310A011002CS313B+24036CS345B030419CS310A+과목과목번호과목이름CS310데이터베이스CS313운영 체제CS345자료 구조CS326자바[그림 2.18] 관계 데이터베이스 인스턴스(1) 학생 릴레이션에서 ‘24036’ 투플을 삭제: 수강 릴레이션에서 참조하는 투플이 기본키로 있기 때문에 참조 무결성 제약조건을 위배한다. 따라서 제한으로 거부한다. 혹은 연관되는 수강 릴레이션의 24036, CS345 투플과 과목 릴레이션의 CS345 투플까지 삭제한다면 가능이션에서 ‘30419’ 투플을 삭제: 수강 릴레이션에서 참조하는 투플이 기본키로 있기 때문에 참조 무결성 제약조건을 위배한다. 따라서 제한으로 거부한다. 혹은 30419, CS310 투플과 함께 연관되는 과목 릴레이션의 CS310 투플을 삭제하고 학생 릴레이션의 30419와 11002 투플을 삭제한다면 가능하다.(3) 학생 릴레이션에서 ‘11002’를 ‘13452’로 수정: 학생 릴레이션에서만 수정이 일어날 경우 참조 무결성 제약조건을 위배하게 되므로 일관성을 위하여 연쇄를 명시하여 수강 릴레이션의 값 역시 수정하도록 한다.(4) 학생 릴레이션에 새로운 ‘42531’ 투플을 삽입: 문제 없다.(5) 수강 릴레이션에 새로운 투플 (30419, CS366, A0)을 삽입: CS366이라는 과목번호 투플이 존재하지 않으므로 삽입할 수 없다. 과목 릴레이션에서 먼저 CS366을 삽입함으로써 투플을 삽입할 수 있다.(6) 수강 릴레이션에 새로운 투플 (24036, CS313, B+)을 삽입: 문제 없다.(7) 수강 릴레이션에 새로운 투플 (32517, CS313, B0)을 삽입: 참조되는 학생 릴레이션에 존재 하지 않으므로 참조 무결성 제약조건을 위배한다. 따라서, 제한으로 거부한다. 또는 학생 릴레이션에 32517 투플을 삽입한 후 삽입한다면 가능하다.(8) 과목 릴레이션에서 ‘CS326' 투플을 삭제: 문제 없다.(9) 과목 릴레이션에서 ‘CS313' 투플을 삭제: 수강 릴레이션에서 참조하는 투플이 기본키로 있기 때문에 참조 무결성 제약조건을 위배한다. 따라서 제한으로 거부한다. 또는 학생 릴레이션의 11002까지 참조하고 있으므로 학생 릴레이션의 11002와 과목 렐레이션의 CS310까지 함께 삭제한다면 가능하다.(10) 과목 릴레이션에서 ‘CS345'를 ’CS321'로 수정: 과목 릴레이션만 수정하게 되면 참조 무결성 제약조건에 위배되므로 연쇄 옵션을 명시하여 수강 릴레이션의 값 역시 수정되도록 한다.15. 아래의 세 릴레이션 스키마에서 기본 키와 외래 키를 모줄(비행기#, 출발지, 도착지, 총좌석수)- 기본 키 : 비행기- 외래 키 : 없음고객(고객#, 고객이름)- 기본 키 : 고객- 외래 키 : 없음예약(비행기번호, 고객#, 날짜)- 기본 키 : 고객- 외래 키 : 고객, 비행기번호16. 그림 2.19의 학생 릴레이션에서 학번이 기본 키이다.(1) (학번, 이름)이 수퍼 키인가?- 그렇다.(2) 이름이 후보 키인가? 그 이유를 설명하라.- 학번과 이름 모두 고유의 기본 키가 될 수 있는데, 여기에서는 학번이 기본 키이므로 후보 키가 된다.(3) (이름, 이메일)이 수퍼 키인가?- 그렇다.(4) 차수가 얼마인가?- 3(5) 카디날리티가 얼마인가?- 3학생학번이름이메일11002이홍근sea@hanmail.net24036김순미smkim@venus.uos.ac.kr13427박상웅blue@hanmir.com[그림 2.19] 학생 릴레이션17. 릴레이션 스키마 사원(주민등록번호, 사원번호, 사원이름, 주소, 생년월일)가 있다. 기본 키가 (사원이름, 생년월일)이고, 그 밖의 대체 키1은 주민등록번호, 대체 키2는 사원번호라고 가정하자.(1) (주민등록번호, 주소)는 후보 키인가? 그 이유는 무엇인가?- 아니다. 각 사원에게 주민등록번호가 중복되거나 널값이 올 수 없지만 주소의 경우 널값이 오게 될 경우도 있으므로 기본 키를 대체할만한 후보 키가 될 수 없다.(2) 사원번호는 수퍼 키인가? 그 이유는 무엇인가?- 그렇다. 각 사원에게 하나씩 부여되는 번호이므로 수퍼 키가 될 수 있다.(3) 생년월일이 널값을 가질 수 있는가?- 아니다. 기본 키이므로 가질 수 없다.(4) 주소가 널값을 가질 수 있는가?- 그렇다.18. 아래의 설명 중에서 틀린 것은? 그 이유를 설명하라.- (a), 후보 키는 고유하게 식별하는 최소한의 애트리뷰트들의 모임이지만 수퍼 키는 다른 것과 포함되어 집합으로도 쓰일 수 있기 때문에 후보 키가 될 수 없는 경우도 있다.(a) 수퍼 키는 후보 키도 된다.(b) 기본 키는 후보 키도 된다.(c) 기본 키는 최.
Chapter 6 CPU 스케줄링연습문제6.1 CPU 스케줄링 알고리즘은 스케줄 된 프로세스의 실행을 위한 순서를 결정한다. 하나의 처리기상에서 스케줄 되기 위한 n개의 프로세스들이 있다면 얼마나 많은 다른 스케줄이 있겠는가? n을 사용하여 수식을 제시하시오.- n!6.2 선점과 비선점형 스케줄링의 차이점을 정의하시오. 왜 엄격한 비선점형 스케줄링이 컴퓨터 센터에서 사용될 가능성이 없는지 설명하시오.- 선점 : 프로세스가 CPU를 점유하고 있을 때 다른 프로세스가 점유되어 있는 프로세스로부터 CPU를 빼앗아 점유하여 실행하는 경우를 말하며, 높은 우선순위를 가지거나 시급한 프로세스들의 처리를 요구하는 시스템에 쓰일 수 있다.- 비선점 : 작업의 길이에 상관없이 모든 프로세스들을 동일하게 처리한다. 응답시간의 예측이 가능하지만 작업의 길이에 따라 비효율적일 수 있다. 따라서 CPU에 점유되어 있는 작업이 대기상태로 있거나 길어질 경우 사용자의 요구에 시스템이 효과적으로 반응할 수 없게 되어 사용하기 힘들다.프로세스버스트 시간우선순위P1103P211P323P414P5526.3 다음 프로세스들의 집합을 생각해보자. CPU 버스트 시간 단위는 밀리초이다.프로세스들은 0에 P1, P2, P3, P4, P5 순서로 도착된다고 가정한다.a. 선입 선처리, SJF, 비선점 우선순위(작은 우선순위 값이 높은 우선순위를 의미) 그리고 라운드 로빈(할당량=1) 스케줄링을 이용해 프로세스들의 실행을 높이는 Gantt 차트를 그리시오.[선입 선처리]P1P2P3P4P50 10 11 13 14 19[SJF]P2P4P3P5P10 1 2 4 9 19[비선점 우선순위]P2P5P1P3P40 1 6 16 18 19[라운드 로빈]P1P2P3P4P5P1P3P5P1P5P1P5P1P5P10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 19b. a에서 각 스케줄링 알고리즘의 각 프로세스에 대한 총 처리시간은 얼마인가?선입선처리SJF비선점 우선순위라운드 로빈P110191619P211112P3134187P4142194P5199614c. a에서 각 스케줄링 알고리즘의 각 프로세스에 대한 대기시간은 얼마인가?선입선처리SJF비선점우선순위라운드 로빈P109610P210001P3112165P4131183P514419d. a에서 어느 스케줄이 최소의 평균 대기시간(모든 프로세스들에 대해)을 갖고 있는가?- SJF (평균 3.2)6.4 다음 프로세스들이 표시된 시간에 도착한다고 가정하자. 각 프로세스는 열거된 시간만큼 실행한다. 질문에 답하는 데 있어서, 비선점형 스케줄링을 사용하고 모든 결정을 결정이 필요할 때 갖고 있는 정보에 근거하시오.프로세스도착시간버스트 시간P10.08P20.44P31.01a. 선입 선처리 알고리즘을 사용할 경우 이들 프로세스들의 평균 총 처리시간은 얼마인가?- {(8-0.0) + (8+4-0.4) + (8+4+1-1.0)} / 3 = 10.53b. SJF 스케줄링 알고리즘을 사용할 경우 이들 프로세스들의 평균 총 처리시간은 얼마인가?- {(8-0.0) + (8+1-1.0) + (8+1+4-0.4)} / 3 = 9.53c. SJF 스케줄링 알고리즘이 성능을 개선할 것이지만, 두 개의 더 짧은 작업이 곧 도착하리라는 것을 모르기 때문에 시간 0에 프로세스 P1을 선택하였음에 유의하시오. CPU가 첫 번째 1시간 단위 동안 쉬고, 그리고 SJF 스케줄링이 사용된다면 평균 총 처리시간이 얼마인지 계산하시오. 프로세스 P1과 P2는 이 유휴 시간동안 대기하기 때문에 평균 대기시간이 증가할 수 있음을 상기하시오. 이 알고리즘은 장래 지식 스케줄링(future-knowledge-scheduling)이라고 부를 수 있을 것이다.- {(1-0.0) + (1-1.0+1) + (1-0.4+4) + (1+1+4+8)} / 3 = 6.866.5 준비완료 큐의 항이 프로세스 제어 블록에 대한 포인터인 변형된 라운드 로빈 스케줄링 알고리즘을 고려해 보자.a. 준비완료 큐에 동일한 프로세스에 대한 두 개의 포인터를 넣는 효과는 무엇인가?- 준비완료 큐에서 선입 선출 큐로 유지하기 때문에 두 개의 포인터로 그 프로세스의 빠른 작업을 기대할 수 있다.b. 이 방식의 주요한 두 개의 장?단점은 무엇인가?- 여러 개의 포인터의 접근을 통하여 우선순위를 올리는 효과처럼 특정한 프로세스의 작업을 빨리 얻어낼 수 있고 작업의 응답시간의 예측이 가능하다. 반면에 잘못된 접근이 일어날 경우 프로세스의 작업에 손실이 올 수도 있고 뒤로 밀린 프로세스들은 준비완료 큐에서 계속해서 머무는 현상이 일어날 수 있는 단점이 있다.c. 복제한 포인터를 사용하지 않고도 동일한 효과를 달성하려면 기본 라운드 로빈 알고리즘을 어떻게 변경해야 하는가?- 우선순위가 높은 프로세스의 버스트 시간을 조각내어 우선적으로 처리 되도록 알고리즘을 변경해야 한다.6.6 다단계 큐잉 시스템의 서로 다른 수준마다 상이한 시간 할당량을 부여할 때의 장점은 무엇인가?- 어떤 프로세스가 CPU 시간을 너무 많이 사용하면, 낮은 우선순위의 큐로 이동되는 형태와 같이 낮은 우선순위의 큐에서 너무 오래 대기하는 프로그램들은 높은 우선순위의 큐로 이동하여 기아 상태를 예방한다.(aging)6.7 동적으로 변화하는 우선순위에 기반한 다음의 선점형 우선순위 스케줄링 알고리즘에 대해 생각해 보자. 우선순위 값이 클수록 높은 우선순위를 의미한다. 프로세스가 CPU를 대기할 때 (준비완료 큐에 있으나 실행되지는 않는) 그 프로세스들의 우선순위는 α의 비율로 변화한다. 프로세스가 실행되면 우선순위는 β비율로 바꾼다. 준비완료 큐에 들어올 때 모든 프로세스들의 우선순위는 0으로 주어진다. 매개 변수 α와 β의 값에 따라 여러 가지 다른 스케줄링 알고리즘이 만들어진다.a. β>α>0이면 무슨 알고리즘인가? 선입 선처리b. α