경쟁상태, Race Condition
·
Computer Science
목차경쟁 상태란?경쟁 상태는 언제 발생하는가?경쟁 상태 해결 방법은?경쟁 상태란?공유 자원에 대해 여러 프로세스가 동시에 접근할 때, 결과값에 영향을 줄 수 있는 상태를 말한다.동시 접근 시 자료의 일관성을 해치는 결과가 나타난다.경쟁 상태는 언제 발생하는가?데이터에 대해서 작업을 수행하던 도중 다른 프로세스가 해당 데이터에 작업을 하게 되면, 데이터가 일관성있게 남아 있지 않게 된다.특정 데이터에 대한 작업을 원자성을 가지도록 하고, 자원에 하나의 프로세스/스레드만 접근할 수 있도록하여 해결한다.경쟁 상태 해결 방법은?공유 자원에 대해 한 번에 하나의 스레드/프로세스만 작업을 할 수 있도록 보장해야한다.락공유 자원에 접근하는 프로세스/스레드는 락을 먼저 획득해야하만 접근할 수 있다. 만약 락을 획득할 ..
교착상태, DeadLock
·
Computer Science
목차데드락이란?데드락은 언제 발생할까?데드락 처리 방법데드락이란?데드락이란 한정된 자원에 접근하려 할때 서로가 서로의 자원을 대기하여 영원히 자원을 할당받지 못하고 대기하는 상태를 말한다.데드락은 언제 발생할까?데드락은 다음의 4가지 조건을 모두 만족할 때 발생한다.상호 배제, Mutual Exclusion자원은 한번에 하나의 프로세스만 접근 가능하다.공유 불가능한 자원의 동시 사용을 피하기위한 알고리즘이라고도 한다.점유 및 대기, Hold and Wait하나 이상의 자원을 점유하고 있으면서 다른 자원을 할당받기 위해 대기하고 있는 프로세스가 존재해야 한다.비선점, No Preemption다른 프로세스에게 할당된 자원은 빼앗을 수 없고 사용이 종료될 때까지 대기해야한다.순환 대기, Circular Wai..
CPU 스케줄링
·
Computer Science
목차스케줄링이란?스케줄링이 왜 필요한가?프로세스 상태와 전이란?CPU 스케줄링 종류와 간단한 설명CPU 스케줄링이란?CPU를 효율적으로 사용하기 위해 프로세스에게 CPU를 할당해주는 방법오버헤드를 낮추고CPU 사용률을 높이고기아 현상을 낮춘다.CPU 스케줄링이 왜 필요할까?아래의 이유들로 인해 CPU 스케줄링이 필요하다.CPU보다 프로세스의 수가 훨씬 많다.모든 프로세스에게 CPU를 할당해줄 수 없기 때문에 누구에게 CPU를 할당할지 정해야한다.I/O 작업과 CPU 작업의 균형어떤 프로세스는 I/O 작업으로 인해 대기하는 시간이 많고, 어떤 프로세스는 CPU 작업을 하는 시간이 많다.이 프로세스들을 적절히 사용해야 I/O 장치와 CPU 모두 바쁘게 활용할 수 있다.응답 시간 보장대화형 프로세스가 CPU를..
IPC, Inter Process Communication
·
Computer Science
IPC 란?프로세스는 독립적으로 실행된다. 즉, 다른 프로세스에게 영향을 받지 않는다.스레드는 프로세스 안에서 자원을 공유하므로 영향을 받는다.이런 독립된 구조를 가진 프로세스 간의 통신을 해야 하는 상황이 있을 것이다. 이를 가능하도록 해주는 것이 바로 IPC 통신이다.쉽게 말하면 하나의 운영체제 내에서 실행 중인, Spring Boot와 MySQL이 통신하는 상황이 있을 것이다.프로세스는 커널이 제공하는 IPC 설비를 이용해 프로세스간 통신을 할 수 있게 된다.커널이란?운영체제의 핵심 설계 원칙 중 하나는 유저 공간과 커널 공간의 분리이다.유저 공간: 우리가 작성하는 일반적인 애플리케이션이 실행되는 영역, 이 공간의 프로그램들은 제한된 권한을 가지고 실행커널 공간: 운영체제의 핵심 코드가 실행되는 영..
PCB와 Context Switching
·
Computer Science
목차PCB 란?PCB가 왜 필요한가?Context Switching Overhead란?PCB와 Context Switching의 관계는?PCB(Process Control Block)란?프로세스의 모든 정보를 저장하고 관리하는 "데이터 구조체"이다.다음의 구조를 가진다.스택: 함수 호출과 관련된 지역 변수, 매개 변수, 반환 주소 등이 저장힙: 개발자가 직접 동적으로 메모리를 할당하고 해제하는 영역데이터: 프로그램의 전역 변수, 정적 변수 등이 저장되는 영역코드: 실행 가능한 코드 즉, 기계어 명령어들이 저장되는 영역프로그램 실행 -> 프로세스 생성 -> 프로세스 주소 공간에 (코드, 데이터, 스택) 생성 -> 이 프로세스의 메타데이터들이 PCB에 저장PCB가 왜 필요할까?운영체제가 프로세스를 관리하고 ..
TLS: Transport Layer Security 프로토콜
·
Computer Science
무엇인가?애플리케이션 계층에 기밀성, 인증, 무결성을 제공합니다.HTTPS, FTPS, SMTPS 등에서 사용기밀성: 제3자에게 데이터를 숨깁니다.인증: 정보를 교환하는 당사자가 요청된 당사자임을 보장무결성: 데이터가 위조되거나 변조되지 않았는지 확인합니다.왜 사용할까?애플리케이션 계층 프로토콜에 기밀성, 인증, 무결성을 제공해주기 위해서 사용한다.TLS 인증서란?인증 기관이 도메인을 소유한 사람 혹은 비즈니스에게 TLS 인증서를 발행 인증서는 서버의 공개 키와 더불어 누가 도메인 소유자인지에 대한 중요한 정보를 포함하며, 이 두가지는 서버의 신원을 확인하는데 중요- 인증기관의 공개 키로 복호화하여 진짜 서버인지를 확인할 수 있다.TLS 1.2 handshake1. Client Hello클라이언트가 서버..
데이터베이스 인덱스
·
Computer Science
인덱스인덱스란 RDBMS에서 검색 속도를 높이기 위한 기술로 Table의 Column을 색인화하여 따로 파일로 저장하고 이를 조회에 사용한다. 조회할 때 해당 테이블의 모든 레코드를 스캔하지 않고 색인화 된 인덱스 파일 검색으로 검색 속도를 향상한다.이때 B Tree 구조를 사용하여 트리의 높이를 일관되게 유지하기 때문에 데이터들간의 조회 성능 차이를 최소화한다. 또한, 항상 정렬 상태를 유지하고 있기 때문에 탐색이 빨라진다.어떻게 사용할까?CREATE INDEX ON 절을 통해 컬럼을 색인화할 수 있다.언제 사용할까?WHERE, JOIN 조건, ORDER BY, GROUP BY 절에서 자주 사용되는 컬럼에 생성한다.WHERE: 조건에 맞는 레코드를 탐색할 때 모든 튜플을 조회하지 않아도 되므로 효과적이..
SQL(RDBMS)와 NoSQL 데이터베이스
·
Computer Science
RDBMS(SQL)관계형 데이터베이스는 다음의 두 가지 특징이 있다.데이터는 정해진 데이터 스키마에 따라 테이블에 저장된다.데이터는 관계를 통해 여러 테이블에 분산된다.정해진 스키마데이터는 테이블에 저장되는데, 각 테이블마다 명확하게 정의된 구조가 있다.따라서 스키마를 준수하지 않은 레코드는 테이블에 추가할 수 없다. 즉, 스키마를 수정하지 않는 이상 정해진 구조에 맞는 레코드만 추가가 가능한 것이 관계형 데이터베이스의 특징 중 하나다.관계데이터의 중복을 피하기 위해 '관계'를 이용한다. 하나의 테이블에서 중복 없이 하나의 데이터만을 관리하기 때문에 다른 테이블에서 부정확한 데이터를 다룰 위험이 없어지는 장점이 있다. 데이터의 모순이 발생하거나 무결성이 깨지는 것을 중복을 제거하여 관계를 통해 방지한다...