정처산기 13

[DB] 트랜잭션의 4가지 특성(ACID)

트랜잭션(Transaction)💡 데이터베이스 관리 시스템(DBMS)에서 데이터의 상태를 변환시키는 하나의 작업 단위사용자가 수행하는 일련의 작업들을 하나의 논리적 단위로 묶은 것으로, 주로 데이터베이스의 일관성을 유지하기 위해 사용된다. 트랜잭션의 특성(ACID)원자성(Atomicity)트랜잭션 내의 작업이 모두 완벽하게 실행되거나, 전혀 실행되지 않아야 함을 의미한다. 트랜잭션의 수행 중 일부만 완료되는 상황은 발생할 수 없고, 성공하면 모든 작업이 완료되고, 실패하면 모든 작업이 취소되어야 한다. 이로 인해 트랜잭션 내의 작업들이 하나의 단일 작업처럼 취급된다. 예시은행에서 계좌 이체를 할 때, 송금 계좌에서 출금과 수신 계좌에 입금이 하나의 트랜잭션이다. 이 두 작업 중 하나라도 실패하면, 전체 ..

[Network] ARQ

ARQ(Automatic Repeat Request)자동 재전송 요청을 의미하며, 데이터 통신에서 오류가 발생했을 때 데이터의 신뢰성을 보장하기 위한 메커니즘 송신된 데이터에서 오류가 감지되거나, 송신자가 ACK를 받지 못했을 때 자동으로 재전송을 요청하는 방식이다.이를 통해 네트워크 상에서 데이터 무결성을 보장하고, 오류가 있는 데이터를 수신자에게 올바르게 전달할 수 있게 해준다.용어 정리ACK(Acknowledge) : 수신 측에서 이상 없이 프레임을 받았을 경우에 보내는 확인 응답NAK(Negative Acknowledge) : 프레임을 제대로 전송받지 못한 경우 송신 측에서 보내는 신호ARQ의 종류Stop-and-Wait ARQ 방식수신 측으로부터 ACK를 받을 때까지 대기하는 방식한 번에 하나..

[Network] 네트워크 프로토콜의 기본 요소, 특징, 예시

프로토콜(Protocol)💡 컴퓨터 네트워크에서의 프로토콜은 서로 다른 시스템이나 기기들 간의 데이터 교환을 원할히 하기 위해 표준화된 통신 규약 프로토콜의 기본 요소기본 요소설명구문(Syntax)시스템 간의 정보 전송을 위한 데이터 형식(Format), 부호화(Coding), 신호 레벨(Signal Level) 등을 규정의미(Semantic)시스템 간의 정보 전송을 위한 제어 정보로 조정과 에러 처리를 규정타이밍(Timing)시스템 간의 정보 전송을 위한 속도 조절과 순서 관리를 규정 프로토콜의 특징단편화(Fragmentation)전송이 가능한 작은 블록으로 나누어지는 기법 네트워크를 통해 전송되는 데이터는 여러 이유로 작게 분할될 필요가 있다.예를 들어, 각 네트워크는 최대 전송 단위(MTU)가 다..

[SW] V-모델과 테스트 레벨

V-모델(V-Model)소프트웨어 개발 생명 주기(SDLC) 모델 중 하나로,각 단계별로 개발자 관점에서의 공정 과정상 검증과 사용자 관점에서의 최종 산출물에 대한 확인을 지원하기 위한 테스트 모델V-모델은 폭포수 모델(Waterfall Model)의 발전된 형태로, 단계별 테스트를 강조하는 것이 특징이다.테스트 레벨(Test Level)소프트웨어 개발 과정에서 각 단계에 맞게 수행되는 테스트의 수준함께 편성되고 관리되는 테스트 활동의 그룹이다.프로젝트에서 책임과 연관되어 있다.각각의 테스트 레벨은 서로 독립적이다.V-모델과 테스트 레벨 단위 테스트(Unit Test)소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춘 테스트사용자의 요구사항을 기반으로 한 기능성 위주의 테스트를 수행한다.명세..

[SW] 테스트 시각에 따른 분류(검증, 확인)

검증(Verification)💡 소프트웨어가 명세서나 요구사항에 맞게 제대로 구현되고 있는지 확인하는 과정우리가 올바르게 소프트웨어를 만들고 있는가?소프트웨어 개발 과정을 테스트한다.올바른 제품을 생산하고 있는지 검증한다.이전 단계에서 설정된 개발 규격과 요구를 충족시키는지 판단한다.개발자 혹은 시험자의 시각으로 소프트웨어가 명세화된 기능을 올바로 수행하는지 알아보는 과정이다. 확인(Validation)💡 소프트웨어가 사용자의 요구사항을 제대로 충족하는지를 실제 환경에서 테스트하는 과정우리가 올바른 소프트웨어를 만들었는가?소프트웨어 결과를 테스트한다.만들어진 제품이 제대로 동작하는지 확인한다.최종 사용자 요구 또는 소프트웨어 요구에 적합한지 판단한다.사용자의 시각으로 올바른 소프트웨어가 개발되었는지 ..

[Network] TCP 연결 해제 과정(4-way 핸드셰이크)

TCP 연결 해제 과정(4-way 핸드셰이크)TCP 연결을 설정할 땐 3-way 핸드셰이크가 사용되지만, 연결을 해제할 때는 양방향에서 안전하게 데이터 전송이 종료되었음을 확인하기 위해 4-way 핸드셰이크가 사용된다. 1. FIN 전송(송신자 → 수신자)데이터 전송이 끝난 송신자가 더 이상 데이터를 전송할 필요가 없으면, FIN 플래그가 설정된 패킷을 수신자에게 보낸다.이 FIN 패킷은 "더 이상 데이터를 보내지 않겠다"는 신호이다. 2. ACK 전송(수신자 → 송신자)수신자는 FIN 패킷을 받으면 ACK 패킷을 송신자에게 보낸다이 ACK 패킷은 "FIN 패킷을 잘 받았다"는 응답이다.이 시점에서 수신자는 송신자가 더 이상 데이터를 보내지 않는다는 것을 알게된다.그러나, 수신자는 여전히 데이터를 보낼 ..

[DB] 정규화, 이상 현상, 함수 종속, 반 정규화

정규화(Normalization)관계형 데이터 모델에서 데이터의 중복성을 제거하여 이상 현상을 방지하고, 데이터의 일관성과 정확성을 유지하기 위해 테이블을 여러 단계로 나누는 과정(무손실 분해하는 과정) 정규화 단계(원부이 결다조)단계조건제1정규형(1NF)원자값으로 구성제2정규형(2NF)부분 함수 종속 제거(완전 함수적 종속 관계)제3정규형(3NF)이행 함수 종속 제거보이스-코드 정규형(BCNF)결정자 후보 키가 아닌 함수 종속 제거제4정규형(4NF)다치(다중 값) 종속 제거제5정규형(5NF)조인 종속 제거 1. 제1정규형(1NF; First Normal Form)모든 속성이 원자값을 가져야 한다. 즉, 각 칸에 하나의 값만 저장되어야 한다.테이블 내의 속성값은 원자값을 가지고 있어야 한다.원자값 : 쪼..

[Network] OSI 7계층

OSI(Open System Interconnection) 7계층OSI 7계층은 국제 표준화 기구인 ISO(International Standardization Organization)에서 개발한컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 개방형 시스템 상호 연결 모델OSI 7계층을 나눈 이유는 통신이 일어나는 과정을 단계별로 알 수 있고, 7단계 중 특정한 곳에 이상이 생기면 다른 단계와 독립적으로 그 단계만 수정할 수 있기 때문이다.각 계층은 서로 독립적으로 구성되어 있고, 하위 계층의 기능을 이용하여 상위 계층에 기능을 제공한다.   물리 계층(Physical Layer)데이터를 전기적, 광학적 신호로 변환해 물리 매체를 통해 전송하는 계층0과 1의 비트 정보를 회선에 보내기 위..

[OS] 메모리 할당 알고리즘(최초 적합, 최적 적합, 최악 적합)

메모리 관리 개념메모리 관리는 프로그램의 실행이 종료될 때까지 메모리를 가용한 상태로 유지 및 관리하는 방법 메모리 관리 기법메모리 관리 기법에는 반입 기법, 배치 기법, 할당 기법, 교체 기법이 있다. 메모리 배치 기법메모리 배치 기법에는 최초 적합, 최적 적합, 최악 적합이 있다.기법설명최초 적합(First Fit)- 프로세스가 적재될 수 있는 가용 공간 중에서 첫 번째 분할에 할당하는 방식최적 적합(Best Fit)- 가용 공간 중에서 가장 크기가 비슷한 공간을 선택하여 프로세스를 적재하는 방식- 공백 최소화 장점이 있음최악 적합(Worst Fit)- 프로세스의 가용 공간 중에서 가장 큰 공간에 할당하는 방식 최초 적합(First Fit)메모리에서 프로세스가 필요로 하는 크기 만큼의 빈 공간을 가장..

[OS] 운영체제 기본 명령어 활용

운영체제 제어운영체제를 제어하기 위한 방법은 CLI와 GUI가 있다. 운영체제 제어 방법CLI(Command Line Interface)사용자가 직접 명령어를 입력, 컴퓨터에 명령을 내리는 방식텍스트 기반 인터페이스이다.주로 개발자나 고급 사용자가 선호하며, 명령어를 통해 직접 시스템 자원에 접근할 수 있다.경량이고 빠르며 정확한 제어가 가능하지만, 명령어를 기억하고 입력해야 하기 때문에 초보자에게는 다소 어렵게 느껴질 수 있다. GUI(Graphic User Interface)마우스로 화면을 클릭하여 그래픽 위주로 컴퓨터를 제어하는 방식일반 사용자에게 친숙하고 사용하기 쉬운 인터페이스이다.복잡한 명령어를 입력할 필요 없이 그래픽 요소로 작업을 수행할 수 있다.복잡한 작업을 처리할 때는 제어가 제한적일 ..