전체 글 103

6. Processor Design

1. review 0) 학습 큰 그림 전체적인 datapath와 control의 개념을 먼저 이해하고 명령어와 데이터가 어떻게 관리되는지 아는 것이 이 장의 목표이다. 처음에는 single cycle 디자인부터 시작해서 multi cycle 디자인으로 확장해 나가는 방식으로 학습하는 큰 그림을 그려야함 1) Processor의 구성요소 Datapath, control 개념 정리 컴퓨터 시스템의 연산 기능을 담당하는 하드웨어인 Processor에 대해서 정리한다. 그 중 Datapath와 Control 관점에서 정리할것이다. 대표적으로 사용하는 데스크탑, 스마트폰 등 뿐만 아니라 가전제품의 인공지능, IOT와 같은 컴퓨터 시스템이 일상생활에서도 적용되고 있습니다. 이런 다양한 장치를 컴퓨터에 범주에 포함시..

6-3. SQL 스키마 변경문

1. 스키마 삭제 DROP 명령 이전에서 다루었던 갱신 연산은 투플 단위로 일어나는 갱신 연산이었다. 스키마 변경문 갱신 연산에 대해 알아본다. 1) cascade 설명 테이블에서 투플의 삭제 연산을 수행할 때 cascade 옵션에 대해 우선적으로 설명한다. cascade 개념이 뭔지 알기 위해서임. DEPARTMENT의 Dnumber 중 111이라는 번호를 제거하는 연산을 한다고 생각해보자. 이때 EMPLOYEE의 Esn(외래키) 는 Dnumber를 참조하기 때문에 삭제 연산이 거부되지면 옵션2인 cascade 옵션을 사용하면 연쇄 삭제로 아래와 같이 삭제가 가능하다. DEPARTMENT의 Dnumber 중 111 삭제 -> EMPLOYEE의 Esn중 111을 가진 EMPLOYEE relation의 t..

6-2. 사용자 주장으로 제약 조건 만들기 / SQL view

1. SQL에서 주장으로 일반 제약 조건 명시 1) CREATE ASSERTION 주장 SQL에서 이전까지는 기본키, 유일 키, 엔티티 무결성, 참조 무결 성 등 기본적인 제약 조건들은 CREATE TABLE 문에서 table(relation)을 생성할 때 명시된다. 그리고 만들어진 테이블의 투플들이 지정된 제약 조건들을 무시하면 제약 조건 위반이 발생되게 됩니다. 또한 CREATE TABLE 절 끝에 CHECK 절을 통해 table의 투플들을 제한할 수 있습니다. 이때 이런 CHECK 절이나 CREATEA TABLE 안에 지정된 제약 조건들은 table의 투플 수정, 추가, 삭제 등 업데이트 작업이 이루어질 때만 적용됩니다. 이제 아래의 코드를 우선 보면 CREATE ASSERTION M1 CHECK ..

6. 데이터 링크층

1. 데이터 링크층 1) 노드의 뜻, 서비스 인터넷은 라우터, 스위치 같은 장치들을 연결하는 네트워크의 조합이다. 데이터 링크층에서 통신은 노드-대-노드 단위로 이루어진다. 점-대-점 링크를 생각해보며 두 개의 종단 호스트와 그 중간 라우터들은 모두 노드로써 노드 사이의 네트워크로 나타내는 것이 일반적이다. 한 노드에서 다른 노드로 이동하는데 LAN과 WAN은 라우터를 통해서 연결된다. 물리층은 데이터 링크층에게 서비스를 제공하고 데이터 링크층은 네트워크층에 서비를 제공하는 것이다. 예를 들어 물리층이 데이터 링크층에 제공하는 서비스로는 전달하려는 데이터를 디지털 신호로 보낼지 아날로그 신호로 보낼지를 결정한다. 그리고 실제 전달 매체를 통해 데이터가 전달되는 것을 정의한다. 따라서 데이터 링크 층에서는..

6-1. 추가 SQL 명령어: 중첩 질의

1. More Complex SQL Search Query 1) NULL의 3가지 값 SQL 에서는 NULL 값이 3가지 상태를 의미한다. 알려지지 않은 값 어떤 사람의 나이는 알려지지 않을 수 있다. 이용할 수 없거나 보류해둔 값 어떤 사람은 자신의 번호를 가지고 있지만 알려주고싶지 않은 경우가 있음 적용할 수 없는 애트리뷰트 고졸인데 대학을 쓰는 애트리뷰티에서는 NULL 값을 써야함 SQL에서는 어떤 애트리뷰트가 NULL 값을 가질 때 위 3가지 경우 중 어떤 경우인지 모르는 경우도 있다. 따라서 SQL에서는 NULL 값에 의미를 두지 않는다. SQL에서 각 릴레이션에 있는 투플들의 NULL 값은 서로 다르다. 일반적으로 SELECT-FROM-WHERE 문에서 WHERE 문에는 해당 논리식을 참으로 ..

7. Buffered IO

1-1. 도입: HDD는 왜 느린가? (하드웨어적 관점) HDD는 왜 느린가? RAM을 왜 사용하는가? HDD는 굉장히 느리다. 왜 느리냐면 HDD의 구조를 뜯어보면 disk 라는 동그란 CD 같은 원판이 있다. 이곳에 데이터가 기록된다. 이 CD 원판은 회전을 하는데 reder라고 하는 일종의 핀이 있다. 이 핀이 읽고 쓰는 역할을 담당하는 ‘막대기’ 같은 것이다. 예를 들어 디스크로 read 명령이 주소 단위로들어온다. 그럼 디스크는 해당 주소의 위치에 있는 데이터를 읽어야한다. 디스크 원판은 회전을 하는데 위 read 명령에 의해 디스크에서 접근해야하는 주소가 방금 회전을 해서 지나갔다? => 그럼 한바퀴 돌아 해당 주소가 핀에 도달할 때까지 다시 기다려야한다. 이는 아무리 짧다해도 물리적인 시간이..

5. 추가적인 System Call

1-1. System call: lseek() #include #include off_t lseek(int fd, off_t pos, int origin); 파일 디스크립터를 처음 open하면 offset은 당연히 0이다. (참고로 offet은 메타 데이터가 아니다. !!) 그리고 파일을 읽을 때 마다 offset이 뒤로 이동한다. 이 offset을 이동 시키는 시스템 콜이다. 첫 번째 매개변수인 파일 디스크립터의 파일의 offset의 원래 위치인 origin 값에서 pos만큼 뒤로 이동하라는 의미가 된다. 이때 origin이 아래 2가지 상수 값을 가질 수 있다. SEEK_CUR : 현재 offset위치를 반환 SEEK_END : 현재 파일의 offset을 걍 맨 마지막 끝으로 이동하라는 것이다. 또한..

4. 시스템 콜: buffer 정리

0. buffer 기본 개념 버퍼라는 것의 역할은 프로세스1 과 프로세스2 사이 속도의 차이를 완화해주는 것이다. 우리가 키보드를 통해 내용을 치는데 모니터에 안나오고 갑자기 모니터에 쭉 나오는 현상이 발생한다. 컴퓨터를 관리하는 것이 OS인데 OS는 CPU 자원을 할당해서 프로세스를 구동시키는 역할을 한다. 우리 컴퓨터를 보면 엄청나게 많은 프로세스가 실행되고 있고 CPU는 1개이다.(코어 1개라고 가정) 운영체제가 여러 프로세스를 동시에 실행하는 것처럼 보이지만 실제로는 프로세스를 한번에 하나씩 조금씩 실행해서 차례로는 CPU에서 하나하나 실행된 결과이다. 키보드로부터 입력하는 데이터를 화면에 출력하는 프로세스 A 가 있을 것이다. 사용자의 키보드 타이핑은 A프로그램이 스케줄링되는 떄에 맞춰 타이핑하..

3. System Call: read, write

1-1. read 시스템 콜 read라는 시스템 call의 함수 역할은 파일을 읽는 역할을 한다. 따라서 read전에 open을 먼저해줘야하고 open으로 리턴 받은 파일의 파일 디스크립트 값을 read 의 첫 매개변수로 준다. 그러면 read 파일 디스크립터는 파일의 맨 처음을 가리켜 읽을 수 있게 된다. buf는 파일로부터 데이터를 읽어서 저장할 공간을 buf에 지정한다. 즉 문자열의 주소의 주소 값을 전달한다. buf의 void 형태는 무슨 형태(문자열인지, 숫자인지, 2진수인지 모름) 의 데이터 형태인진 모르겠으나 offset부터 len 길 만큼에 파일에서 읽어 저장하는 인자이다. read함수는 파일 디스크립터가 처음 호출될때는 처음을 가리키고 len만큼 read한 만큼 파일 디스크립터가 가리키는..