0. 프로그램이란?

 - "실행할 수 있는 파일 ( 무언가 작업하기 위해 ) "

 - ex) 윈도우의 exe 파일 

 

1. 프로세스 란?

 - " 실행되고 있는 컴퓨터 프로그램 (독립적) "

 - 각 프로세스는 각각의 자원을 할당 받는다.

 - 프로세스 간의 통신 위해서는 파이프, 소켓등을 사용해 통신한다. (비용이 상대적으로 많이 든다.)

 - Register, Counter, Stack, Heap, Code 으로 구성된다

 - 시작, 종료, 컨텍스트 스위칭 시 비용(시간) 이 많이 소요된다.

 - 프로세스 간의 전환에는 운영체제 호출을 필요로한다.

 

1-1. 프로세스 제어 블록(PCB) 란?

- 운영체제의 자료구조

- 프로세스에 정보를 저장하고 있다.

- 운영체제는 프로세스 생성과 함께 PCB를 생성한다.

- 프로세스 스위치가 발생하면 진행중이던 작업들은 PCB에 저장하고 CPU를 반환한다.

- 다시 CPU를 할당받으면 PCB에서 복원해와 종료시점부터 다시 작업을 수행한다.

- 프로세스 ID, 프로세스 상태, 프로그램 카운트(다음 실행 명령어의 주소), CPU레지스터 등이 저장된다.

 

 

2. 쓰레드 란?

 - " 프로세스의 하나의 실행 단위 "

 - 프로세스 안에서 각각의 작업을 처리한다.

 - 프로세스 안에서 동시성(concurrency)을 가지고 진행한다.

 - 한 프로세스 안의 여러개의 프로세스들은 Code, Data, Heap은 공유하고, 각각의 Stack을 가진다. 

 - 시작, 종료, 컨텍스트 스위칭 시 비용(시간) 이 적게 소요된다.

 - 쓰레드 간의 전환에는 운영체제를 호출할 필요가 없다.

 - 자원을 공유하는 만큼, 공유자원에 접근하고, 변경을 할 때 주의가 필요하다.

 

 

2-2. 멀티스레딩 이란?

- 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 성능을 향상시키는 기법

- 각각의 스레드는 각각의 스택과 PC레지스터 값을 가진다.

- 독립적 실행흐름을 위해서 스택은 필요하다. (각각 가지는 이유)

- 스레드는 하나의 실행 단위 이므로 PC레지스터를 통해 실행위치를 CPU할당에 따라 저장,복구하여 그 위치에서 다시 실행한다.

'학부생 공부 > 운영체제(os)' 카테고리의 다른 글

스케줄러(scheduler) 종류  (0) 2021.09.20
멀티 프로세스 VS 멀티 스레드  (0) 2021.09.19
Context Switching ( 문맥 교환 )  (0) 2021.05.27

0. 용어 정리

    릴레이션(Relation) : 행과 열로 구성된 테이블 (물리적 데이터 저장소 구조)

    속성(Attribute) : 열(Column) , 세로 값

    튜플(Tuple) : 행(Row) , 가로값

    차수 : 속성의 수, 즉 Column의 수 

    인스턴스 : 정의된 스키마에 따라 저장된 실제 데이터 집합

    스키마 : 릴레이션의 구성, 정보 등 기본적인 구조를 정의한 것 (논리적 데이터 구조)

    도메인 : 속성의 가질 수 있는 값의 집합 ( varchar(45), char(1), INT ..... )

    카디날리티(Cardinality) : 튜플의 수

    차수 (Degree) : 속성의 수

 

1. 관계형 데이터 베이스의 일반적인 형태

      1.0 관계형 데이터 모델이란?

           - 서로 관련된 데이터 포인트에 대한 접근 및 저장을 제공하는 데이터베이스 유형 

           - 그 형태가 간단하고 직관적이다.

           - 키 (key) 라는 고유의 ID가 포함된다.      

           - SQL이 부각되면서 더욱 널리 사용되게 되었다.

           - 컴퓨터에선 SQL을 이용하여 릴레이션을 생성 및 관리, 제약조건 선언, 연산 등을 수행한다.

 

      1.1 스키마 (예시)

       

      1.2 관계형 데이터베이스 릴레이션

         (위의 스키마를 이용하여 만든 릴레이션은 아님! )

       1.3 기본적인 특징

          - 중복된 튜플은 허용하지 않는다.

          - 하나의 속성의 값들은 모두 같은 도메인 값을 가진다.

          - 각 속성의 이름은 고유하다 (중복 x)

          - 순서는 상관 없다 (튜플, 속성)

          - 속성은 단일값이여야 한다. ( ex. 위의 릴레이션에서 이름에 박진성,박수진 을 동시에 넣을 수 없다)

 

 

2. 관계형 데이터베이스의 키 (KEY)

  2.1 후보키 ( Candidate KEY)

    - 튜플들을 구별할 수 있는 속성 또는 속성의 집합

    - 키가 되는 속성들의 튜플 값들은 모두 달라서 튜플들을 구별할 수 있어야 한다.

    - 하나의 속성으로는 키가 될 수 없지만, 두개의 속성을 묶어서 키로 사용하는 경우도 있다.

 

   2.2 기본키 (Primary KEY)

    - 후보키 중 선택된 key 

    - 후보키의 특징을 그대로 가지며, null 값을 가지고 있으면 안된다.

    - 키값의 변동이 있어선 안된다. 

 

   2.3 외래키 (Foreign key)

    - 관계형 데이터베이스에서 서로 다른 테이블끼리의 연결을 위해 중요한 역할을 하는 key

    - 관계된 다른 테이블간의 참조관계를 나타낸다

    - NULL 값을 가질 수 있다.

 

3. 관계형 데이터베이스의 무결성 제약조건

 

   3.1 도메인 무결성 제약조건

      - 각 튜플들은 속성의 도메인에 지정된 값 ( INT, VARCHAR(45), CHAR(1) 등 ) 만을 가져야 한다.

 

   3.2 개체 무결성 제약조건

      - 기본키(primary key)를 지정하고, 이 키는 릴레이션 내에 튜플들을 구별할 수 있도록 하는 고유한 값을 가져야 하          며, NULL은 허용되지 않는다는 조건을 만족해야 한다.

 

   3.3 참조 무결성 제약조건   

      - 외래키는 참조할 수 없는 값을 가질 수 없다.

      - 외래키 값은 참조 릴레이션의 기본키 값과 동일하거나  NULL이어야 한다.

      - 외래키 제약조건이라고도 한다.

      - 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 같아야 한다.

      - 자식 릴레이션의 값이 변경될 때, 부모 릴레이션의 제약을 받는다.

 

    3.4 키 (KEY) 무결성 제약조건

       - 한 릴레이션에는 최소한 하나의 키가 존재해야 한다.

+ Recent posts