TIL 220908

강지훈·2022년 9월 7일
0

[PCB와 컨텍스트 스위칭]
PCB(Process Control Block)는 운영체제에서 프로세스에 대한 메타데이터를 저장한 '데이터'를 말합니다. 프로세스 제어 블록이라고도 합니다. 프로세스가 생성되면 운영체제는 해당 PCB를 생성합니다. 프로그램이 실행되면 프로세스가 생성되고 프로세스 주소 값들에 앞서 설명한 스택, 힙 등의 구조를 기반으로 메모리가 할당됩니다.
그리고 이 프로세스의 메타데이터들이 PCB에 저장되어 관리됩니다. 이는 프로세스의 중요한 정보를 포함하고 있기 때문에 일반 사용자가 접근하지 못하도록 커널 스택의 가장 앞부분에서 관리됩니다.

PCB의 구조
PCB는 프로세스 스케줄링 상태, 프로세스 ID 등의 다음과 같은 정보로 이루어져 있습니다.
-프로세스 스케줄링 상태: '준비','일시중단' 등 프로세스가 CPU에 대한 소유권을 얻은 이후의 상태
-프로세스 ID: 프로세스 ID, 해당 프로세스의 자식 프로세스 ID
-프로세스 권한: 컴퓨터 자원 또는 I/O 디바이스에 대한 권한 정보
-프로그램 카운터: 프로세스에서 실행해야 할 다음 명령어의 주소에 대한 포인터
-CPU 레지스터: 프로세스를 실행하기 위해 저장해야 할 레지스터에 대한 정보
-CPU 스케줄링 정보: CPU 스케줄러에 의해 중단된 시간 등에 대한 정보
-계정정보: 프로세스 실행에 사용된 CPU 사용량, 실행한 유저의 정보
-I/O 상태 정보: 프로세스에 할당된 I/O 디바이스 목록

컨텍스트 스위칭
컨텍스트 스위칭은 앞서 설명한 PCB를 교환하는 과정을 말합니다. 한 프로세스에 할당된 시간이 끝나거나 인터럽트에 의해 발생합니다. 컴퓨터는 많은 프로그램을 동시에 실행하는 것처럼 보이지만 어떠한 시점에서 실행되고 있는 프로세스는 단 한개이며, 많은 프로세스가 동시에 구동되는 것처럼 보이는 것은 다른 프로세스와의 컨텍스트 스위칭이 아주 빠른 속도로 실행되기 때문입니다.
참고로 사실 현대 컴퓨터는 멀티코어의 CPU를 가지기 때문에 한 시점에 한 개의 프로그램이라는 설명은 틀린 설명입니다. 하지만 컨텍스트 스위칭을 설명할 때는 싱글코어를 기준으로 설명합니다.

비용: 캐시미스
컨텍스트 스위칭이 일어날 때 프로세스가 가지고 있는 메모리 주소가 그대로 있으면 잘못된 주소 변환이 생기므로 캐시클리어 과정을 겪게 되고 이 때문에 캐시미스가 발생합니다.

스레드에서의 컨텍스트 스위칭
참고로 이 컨텍스트 스위칭은 스레드에서도 일어납니다. 스레드는 스택 영역을 제외한 모든 메모리를 공유하기 때문에 스레드 컨텍스트 스위칭의 경우 비용이 더 적고 시간도 더 적게 걸립니다.

[데이터베이스의 기본]
데이터베이스(DB, DataBase)는 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음입니다. 해당 데이터베이스를 제어, 관리하는 통합시스템을 DBMS(DataBase Management System)라고 하며, 데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리언어(Query Language)를 통해 삽입,삭제,수정,조회 등을 수행할수 있습니다. 또한 ,데이터베이스는 실시간 접근과 동시 공유가 가능합니다.
다음 그림치럼 데이터베이스 위에 DBMS가 있고 그위에 응용 프로그램이 있으며, 이러한 구조를 기반으로 데이터를 주고받습니다. 예를 들어 MySQL 이라는 DBMS가 있고 그 위에 응용 프로그램에 속하는 Node.js나 php에서 해당 데이터베이스 안에 있는 데이터를 끄집어내 해당 데이터 관련 로직을 구축할 수 있는 것이죠.

엔터티
엔터티(entity)는 사람,장소,물건,사건,개념 등 여러 개의 속성을 기닌 명사를 의미합니다.
예를 들어 회원이라는 엔터티가 있다고 해봅시다. 회원은 이름, 아이디 , 주소 ,전화번호의 속성을 갖겠죠?

물론 이보다 많은 속성이 있지만 서비스의 요구 사항에 맞춰 엔터티의 속성이 정해집니다. 예를 들어 주소라는 속성이 서비스의 요구 사항과 무관한 속성이라면 주소라는 속성은 사라지게 됩니다.

릴레이션
릴레이션(rlation)은 데이터베이스에서 정보를 구분하여 저장하는 기본 단위입니다. 엔터티에 관한 데이터를 데이터베이스는 릴레이션 하나에 담아서 관리합니다. 언터티 >> 릴레이션(데이터베이스로 올라가게 되면)

속성
속성(attribute)은 릴레이션에서 관리하는 구체적이며 고유한 이름을 갖는 정보입니다.
예를 들어 '차'라는 엔터티의 속성을 뽑아봅시다. 차 넘버, 바퀴 수, 차 색깔, 차종 등이 있겠죠?
이 중에서 서비스의 요구 사항을 기반으로 관리해야 할 필요가 있는 속성들만 엔터티의 속성이 됩니다.

도메인
도메인(domain)이란 릴레이션에 포함된 각각의 속성들이 가질 수 있는 값의 집합을 말합니다. 예를 들어 성별이라는 속성이 있다면 이 속성이 가질 수 있는 값은 {남,여}라는 집합이 됩니다.

profile
never stop

0개의 댓글