KOCW
-
10일차 - 관계 데이터 연산CS지식/데이터베이스 2021. 5. 6. 23:17
지금까지 데이터베이스 모델링과 이상현상을 없애기 위한 정규화에 대해 배웠다. 오늘은 릴레이션끼리 연산을 하거나 하나의 릴레이션에 연산을 하여 원하는 릴레이션을 얻는 관계 데이터 연산에 대해 배웠다. 1. 관계 데이터 연산이란 관계 데이터 연산은 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것으로 관계 대수와 관계 해석이 존재한다. 관계 대수는 원하는 결과를 얻기 위해 데이터의 처리과정을 순서대로 기술한 것이고 관계 해석은 원하는 결과를 얻기 위해 처리를 원하는 데이터가 무엇인지만 기술한 것이다. 정의를 보았을 때는 무엇을 의미하는지 감이 안 올 것이다. 지금부터 관계 대수에 대해 자세히 알아보자. 2. 관계 대수 언어 관계 대수는 위에서 정의한대로 결과를 얻기 위해 릴레이션의 처리과..
-
10일차 - Memory Management(1)CS지식/운영체제 2021. 5. 4. 23:42
오늘부터는 메모리를 어떻게 관리하는지에 대해 배웠다. 지난 시간동안 프로세스들이 CPU를 얻는 과정에서 발생하는 일들을 배웠는데 오늘은 프로세스가 실행되고 물리적인 메모리에 올라가면서 발생하는 일들 중 일부분을 배울 수 있었다. 1. memory management의 기본 우선 메모리 관리를 배우기 전에 메모리에 대해 잠깐 언급하자면 메모리는 주소를 통해 접근하는 매체이다. 여기서 주소는 logical address와 physical address로 나뉜다. 1) logical address logical address는 가상주소(virtual address)와 같은 말로 프로세스마다 독립적으로 가지는 주소 공간이다. 각 프로세스마다 주소할당은 0번부터 시작한다. 2) physical address ph..
-
9일차 - 정규형과 정규화 예제CS지식/데이터베이스 2021. 5. 3. 23:00
오늘은 정규형에 대해 배우고 저번 시간에 배운 정규화를 직접 예제를 통해 해보는 시간을 가졌다. 정규형에서는 3정규형까지만 배워서 BCNF형, 제 4형, 5형에 대해 따로 알아봐야 할 필요성을 느꼈다. 1. 정규화란 (복습) 정규화는 함수 종속성을 이용해 릴레이션을 연관성 있는 속성들로만 구성되도록 분해해서 이상 현상이 발생하지 않는 바람직한 릴레이션으로 만들어 가는 과정이다. 여기서 릴레이션을 분해할 때 무손실 분해되어야 한다. 무손실 분해가 의미하는 것은 릴레이션이 의미적으로 동등한 릴레이션들로 분해되어야하고 분해로 인한 정보의 손실이 발생하지 않아야한다는 것이다. 또한, 분해된 릴레이션들을 자연 조인하면 분해 전의 릴레이션으로 복원 가능해야한다. 2. 정규형(NF, Noraml Form) 오늘 배운..
-
9일차 - Deadlock(교착상태)CS지식/운영체제 2021. 5. 1. 23:08
오늘은 Deadlock에 대해 배웠다. 프로세스 동기화를 배우면서 deadlock상황에 대해 간단히 언급이 되었는데 오늘은 더 저세하고 처리방법에 대해 알 수 있었다. 1. Deadlock이란 deadlock은 일련의 프로세스들이 서로가 가진 자원을 기다리며 block된 상태를 말한다. 즉, 자신이 가지고 있는 자원들은 내어놓지 않고 다른 프로세스가 가지고 있는 자원을 요청하는 상태여서 진행이 되지 않는 상태이다. 여기서 말하는 자원은 하드웨어, 소프트웨어 등을 포함하는 개념으로 I/O device, CPU cycle, memory space, semaphore 등을 뜻한다. deadlock 상태인 예를 들어 얘기해보자. 시스템에 2개의 tape drive A, B가 존재하고 프로세스1은 A를 가지고 있..
-
8일차 - Process Syncronization(2)CS지식/운영체제 2021. 4. 28. 23:31
저번 시간에 이어 프로세스 동기화에 대해 배웠다. 오늘은 동기화 시에 발생하는 대표적인 문제에 대해 알아보고 코드를 보면서 해결법을 알아보는 시간을 가졌다. 1. Bounded-Buffer Problem (Producer-Consumer Problem) 동기화 문제 중 첫 번째로 Bounded-Buffer Problem이다. 버퍼의 크기가 유한한 환경에서의 producer(생산자)와 consumer(소비자)의 문제이다. 버퍼에는 Producer 프로세스와 consumer 프로세스 2가지가 존재하고 버퍼는 공유되어 사용된다. producer 프로세스는 공유버퍼에 데이터를 집어넣는 역할을 하고 consumer 프로세스는 공유 버퍼에서 데이터를 꺼내는 역할을 한다. 여기서 발생하는 동기화 문제는 어떠한게 있을..
-
7일차 - 관계 데이터 모델링: 실습CS지식/데이터베이스 2021. 4. 27. 23:34
오늘은 저번시간에 배운 관계 데이터 모델링에 대한 이론을 바탕으로 실습을 해보는 시간을 가졌다. 5일차 때는 요구사항명세서를 바탕으로 E-R다이어그램을 작성하는 실습을 해봤는데 오늘은 E-R다이어그램을 바탕으로 릴레이션(릴레이션 스키마)를 작성해보는 시간을 가졌다. (지난 5일차 게시글: straw961030.tistory.com/26) 1. 논리적 설계 관계 데이터 모델링은 데이터베이스 설계 5단계 중 3단계에 해당하는 논리적 설계에서 이루어진다. 논리적 설계의 목적은 DBMS에 적합한 논리적 스키마를 설계하고 개념적 스키마를 논리적 데이터 모델을 이용해 논리적 구조로 표현하는 것이다. 논리적 설계의 결과물은 릴레이션 스키마이다. 개념적 설계 단계의 결과물인 E-R다이어그램을 바탕으로 릴레이션 스키마를..
-
7일차 - Process Syncronization(1)CS지식/운영체제 2021. 4. 25. 22:24
오늘은 프로세스 동기화에 대해서 배웠다. 프로세스는 여러 개 존재하고 여러 개의 프로세스가 하나의 데이터 공간에서 공유할 경우 발생할 수 있는 문제에 대해 알아보고 해결법에 대해 알 수 있었다. 1. 데이터 접근 process syncroization에 대해 배우기 전에 데이터의 접근 방법에 대해 알아보자. 데이터를 접근할 때는 다음과 같은 패턴을 가진다. 데이터 저장소에서 필요한 데이터를 가져오고 연산장치에서 연산을 한 후 연산결과를 다시 데이터 저장소에 보내게 된다. 데이터 저장소에는 memory, 디스크, 각 프로세스의 주소공간이 대표적인 예이고 연산장치에는 CPU, 컴퓨터 내부, 프로세스가 대표적인 예이다. 이렇게 데이터 저장소를 하나의 연산장치가 사용할 경우에는 별다른 문제가 없을 것이다. 하지..
-
6일차 - 관계 데이터 모델링CS지식/데이터베이스 2021. 4. 23. 23:39
오늘은 관계 데이터 모델링에 대해 배웠다. 지난 시간에 배운 개념 데이터 모델링의 결과물인 E-R다이어그램을 토대로 진행되는 것으로 데이터베이스 설계에서는 3단계(논리적 설계)에 해당하는 내용이다. 1. 관계 데이터 모델의 기본개념 관계 데이터 모델은 개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델로 하나의 개체에 대한 데이터를 하나의 릴레이션에 저장하는 것이다. 예를 들어 개념 데이터 모델링을 통해 학생이라는 개체가 나왔다면 이 학생이라는 하나의 개체에 대한 데이터를 모아서 릴레이션에 저장한다는 것이다. 릴레이션은 하나의 개체에 대한 데이터를 2차원 테이블 구조로 저장한 것이다. 2차원 테이블이라고 하면 표와 비슷한 구조인데 표는 행과 열로 구성되어 있다. 릴레이션에서는 행을 튜플이라 부르고 ..