본문 바로가기

분류 전체보기

(44)
[운영체제] CPU 스케줄링: multiprocessor 스케줄링 - (2) load balancing(부하 균등화) SMP 시스템에서, multiprocessor의 이점을 최대한 활용하기 위해서, 부하를 모든 프로세서에서 균등하게 유지하는 것이 중요하다. 그렇지 않으면, 다른 프로세서들이 ready 큐에서 기다리는 스레드들이 많은 부하가 큰 상태일때, 하나 이상의 프로세서가 유휴(idle) 상태일 수 있다. 부하 균등화(load balancing)는 SMP 시스템에서 모든 프로세서들의 부하를 동일하게 유지하도록 노력한다. 부하 균등화는 각 프로세서별로 자신만의 ready 큐를 가지는 시스템에서 필요하지만, 공통 ready 큐를 가지는 경우에는 필요하지 않다. 부하 균등화의 두 가지 방법 1. push migration (push 이주) 특정 task가 주기적으로 각 프로세서의 ..
[운영체제] CPU 스케줄링: multiprocessor 스케줄링 - (1) 여러 CPU가 사용 가능하면, 여러 스레드가 병렬로 실행될 수 있으므로 부하 공유(load sharing)가 가능하다. multiprocessor라는 용어는 다음과 같은 시스템 아키텍처에서 사용할 수 있다. 1) multicore CPUs 2) multithreaded cores 3) NUMA systems 4) Heterogeneous multiprocessing 이때, 1), 2), 3)의 경우에는 각 코어의 동작이 기능적으로 동일하고, 4)의 경우에는 각 코어의 동작이 기능적으로 동일하지 않다. multiprocessor 스케줄링에 대한 접근 방법 multiprocessor 시스템에서의 CPU 스케줄링 방법 1. 비대칭 다중 처리(asymmetric multiprocessing, AMP) maste..
[운영체제] CPU 스케줄링: 스레드 스케줄링 현대의 운영체제에서는 프로세스가 아닌 커널 수준의 스레드가 스케줄링된다. 사용자 수준의 스레드는 스레드 라이브러리에 의해 관리되고 커널은 사용자 수준 스레드를 알 지 못한다. 사용자 수준 스레드는 CPU상에서 실행되기 위해서 커널 수준 스레드에 매핑되어야 한다. contention scope(경쟁 범위) 사용자 수준 스레드와 커널 수준 스레드의 스케줄링 방식의 차이 1. 프로세스 경쟁 범위(process contention scope, PCS) 다대일과 다대다 모델에서 사용자 수준 스레드를 가용한 LWP에 스케줄링한다. 이때, 동일한 프로세스 내 스레드 간 CPU를 경쟁하기 때문에 프로세스 경쟁 범위라 한다. 2. 시스템 경쟁 범위(system contention scope, SCS) 일대일 모델에서 커..
[데이터베이스] 관계형 데이터베이스 설계 좋은 관계형 설계의 특징 두 릴레이션 instructor와 department를 자연 조인한 inst_dept 하나의 릴레이션으로 결합했다. 그 결과로 같은 학과 내의 교수에 대해서 학과 정보가 반복되게 된다. 이는 일관성 문제를 야기할 수 있다. 따라서 이는 좋지 못한 릴레이션이다. - 분해(Decomposition) inst_dept 릴레이션에서 정보의 반복 문제를 해결하는 방법은 inst_dept 릴레이션을 instructor과 department 두 개의 릴레이션으로 분해하는 것이다. 이때 분해된 각 릴레이션은 good form이어야 하고, 분해는 무손실 분해(lossless-join decomposition)여야 한다. 무손실 분해는 함수 종속(functional dependencies)를 이용..
[데이터베이스] E-R 모델을 사용한 데이터베이스 설계 - (2) 주 키 - 관계 집합에서의 키 관계 집합에 참여하는 개체 집합의 주 키의 조합이 관계 집합의 수퍼 키를 형성한다. 이진 관계 집합에서 주 키 선택은 관계 집합의 대응 카디널리티를 고려해서 선택하게 된다. 1. 다대다 관계의 경우, 두 개체 집합의 주 키의 합집합을 주 키로 선택한다. 2. 일대다 및 다대일 관계의 경우, "다" 쪽의 주 키를 관계 집합의 주 키로 선택한다. 3. 일대일 관계의 경우, 두 개의 주 키 중 하나를 관계 집합의 주 키로 선택한다. 역할(Role) 관계에서 개체가 행하는 기능을 개체의 역할이라고 한다. 관계 집합에 참여하는 개체 집합은 일반적으로 서로 구별되기 때문에 역할이 따로 명시되지 않는다. 예시) course_id와 prereq_id를 역할이라 한다. 비이진 관계 집합(N..
[데이터베이스] E-R 모델을 사용한 데이터베이스 설계 - (1) 데이터베이스 설계 단계 1. 데이터 분석과 요구 사항(requirement) : 데이터베이스 사용자가 필요로 하는 데이터를 충분히 규정한다. 2. 개념적 설계 단계(conceptual-design phase) : 데이터 모델을 선택하고, 선택한 데이터 모델의 개념을 적용해 요구 사항을 데이터베이스의 개념 스키마로 변환한다. E-R 모델링은 일반적으로 개념적 설계를 표현한다. 3. 데이터 모델(E-R 모델) 검토 : 스키마를 검토하여 모든 데이터 요구 사항을 만족하고, 서로 충돌하지 않는지 확인하고, 중복되는 사항을 제거한다. 4. 논리적 설계 단계(logical-design phase) : 상위의 개념 스키마를 사용할 데이터베이스의 구현 데이터 모델에 대응시킨다. 구현 데이터 모델은 일반적으로 관계형 데..
[데이터베이스] SQL - (3) 중첩 하위 질의(Nested Subuery) subquery는 다른 query 안에 중첩된 select-from-where 표현이다. - 멤버십 비교 in 접속사는 집합 멤버십을 테스트하는데, 집합은 select 절에 의해 생성된 값들의 집합이다. not in 접속사는 집합 멤버십의 부재를 테스트한다. 예시) select count (distinct ID) from takes where (course_id, sec_id, semester, year) in (select course_id, sec_id, semester, year from teaches where teaches.ID = 10101); in과 not in 연산자는 열거형 집합(enumerated set)에서 사용할 수 있다. 예시) sele..
[데이터베이스] SQL - (2) SQL에서의 연산 - 자연 조인(Natural Join) 자연 조인(Natural Join)은 공통으로 가지는 속성의 값이 일치하는 tuple들을 연결하여 만들어진 tuple을 포함하는 테이블을 생성한다. 예시) select * from instructor natural join teaches; 자연 조인(Natural Join)을 사용할 때 속성을 잘못 동일시 하지 않도록 주의해야 한다. 예시) 학생의 이름과 그 학생이 수강했던 과목을 나열하라. incorrect version: select name, title from student natural join takes natural join course; 이유: student와 takes의 자연 조인은 (ID, name, dept_name, tot_c..