강의 내용 정리(126)
-
데이터베이스(11), 함수적 종속성과 정규화
함수적 종속성 부록 Closure test 위첨자로 +를 붙여서 이를 사용한다. Y는 어트리뷰트 집합을 의미한다. Closure: 어트리뷰트들의 집합이 결정할 수 있는 모든 어트리뷰트를 모아놓은 것 Closure를 구하는 방법 1. 처음에는 Y+ = Y로 둔다. ex) Y = {C, D} => Y+ = {C, D} 2. Y+에 포함된 X가 다른 어트리뷰트를 결정지으면 이를 Y+에 포함시킨다. ex) X E Y+, X -> A => Y+에 A를 포함 예 요구사항에 따라 ABCD를 ABC와 AD로 분해한다. 이때 ABC와 AD의 함수적종속성을 알아야한다. ABC의 함수적 종속성: AB -> C AD의 함수적 종속성: D -> A 분해된 릴레이션에서는 C -> D의 함수적 종속성이 사라졌다. 또한 원래 있던 ..
2022.12.25 -
데이터베이스(10), 릴레이션 정규화
릴레이션 정규화 1. 정규화 개요 원래의 릴레이션에는 중복이 있기에 이를 작은 릴레이션으로 분할한다. 이때 함수적 종속성을 사용한다. 좋은 관계 데이터베이스 스키마를 설계하는 목적 정보가 중복되면 갱신이상이라는 주요한 문제가 발생한다. 어떤 시스템을 개발할 때에는 정확하게 구현하는 것부터 시작해서 퍼포먼스를 고려해야한다. 데이터 베이스 설계에서도 기능을 요구사항대로 구현할 수 있는지 따지고, 그 뒤 성능에 대해 고려한다. 갱신 이상(update anomaly) (1) 수정 이상(modification anomaly) (2) 삽입 이상(insertion anomaly) (3) 삭제 이상(deletion anomaly) 회사의 방침이 바뀌어서 부서가 3개나 1개만 속할 수 있다고 하면 스키마를 바꿔야한다. ..
2022.12.20 -
운영체제(12), I/O Systems
I/O Systems I/O 디바이스의 일반적인 동작 1. Computer System Operation 1) I/O operation I/O 요청이 오면 이를 수행하고, 이를 모두 수행하면 인터럽트를 보내서 수행이 끝났다는 것을 전달한다. I/O컨트롤러도 작은 컴퓨터이기에 CPU가 IR에 명령어를 적재하고, DR에 데이터를 적재하면 이후 I/O가 명령어를 수행한다. CPU가 주기적으로 체크하면서 읽어오는 것을 폴링이라 한다. 실제로 I/O 디바이스가 수행한 결과를 CPU에 전달하는데 이 크기가 작으면 CPU 레지스터로 I/O가 전달하는데 이를 programmed I/O라고 한다. 아니면 디스크와 같이 CPU에 알려줄 수 없는 경우에는 DMA를 사용한다. CPU가 명령을 내리지 않은 상태에서 인터럽트가 ..
2022.12.19 -
운영체제(11), Mass-Storage Structure
Mass-Storage Structure I/O 장치 관리 제일 중요한 I/O 장치는 세컨더리 스토리지이다. 이게 있어야지 저장하고 관리할 수 있다. 세컨더리 스토리지 HDD 오른쪽 위에 있는 것이 디스크, 디스크 arm과 헤드가 존재해 원하는 위치로 이동해서 데이터를 읽는다. SSD 오른쪽 아래에 있는 것은 SSD이다. ARM CPU가 있어서 플래시 메모리를 읽는다. RAM disk 운영체제의 파일시스템이 존재하는데 HDD나 SSD에 이를 저장한다. 하지만 어떤 경우에는 Ram disk가 존재해서 이 곳에 저장을 하기도 한다. 이를 사용하면 전원을 껐다가 켜면 메모리가 초기화된다. IP time은 리눅스 파일시스템의 원본을 압축해서 플래시 메모리에 가지고 있다가 전원을 켜면 메인 메모리에 램 디스크를 ..
2022.12.18 -
운영체제(10), Virtual memory
Virtual memory 피지컬 메모리가 무한대인 것처럼 지원하기 위해 세컨더리 스토리지를 사용해서 피지컬 메모리에서 잘 안쓰이는 것은 세컨더리 스토리지에 저장해서 필요할 때 가져온다. Demand paging Paging을 요구할 때 Paging을 한다. 페이지가 세컨더리 메모리에 있다가 피지컬 메모리에 왔다갔다하는 것을 swapping이라 한다. 페이지 단위의 swapping이 demand paging이 된다. Swapping은 전체 프로세스를 세컨더리 스토리지에 올리고, 내리는 것을 의미하기도 한다. 여기서의 swapping은 page 단위로 하는 것을 의미한다. TLB라는 캐시가 높은 성능을 보장하는 것은 로컬리티의 특징 때문이다. 디맨드 페이징 또한 로컬리티의 특징을 가지기에 이는 좋은 성능을..
2022.12.18 -
운영체체(9), Main Memory
Memory Management 메모리 관리의 목표 개발자가 메모리가 어떻게 되어있는지를 몰라도 쉽게 사용할 수 있도록 돕는다. 비싼 자원인 메모리를 효율적으로 사용할 수 있도록 하고, 메모리 프로텍션(두 개 이상의 프로세스를 독립적으로 만들어서)을 제공하는 목표를 가지고 운영체제가 메모리를 관리한다. 개발자가 몰라도 잘 사용할 수 있도록 추상화를 잘 해준다. Batch programming - monitor가 프로그램을 메모리에 올리고 이를 모니터링하다가 job을 처리하는 식으로 진행했다. 이때는 프로그램 하나가 메모리를 모두 썼다. 실제 ram의 주소를 사용해서 처리했다. 어차피 프로그램을 하나만 올려서 사용했기 때문이다. Multiprogramming - 여러 프로세스가 메모리에 올라가서 동작해야하..
2022.12.18