Computer Science 17

[DB] 트랜잭션이란? Transaction

트랜잭션 하나의 작업을 수행하기 위해서 필요한 데이터베이스 연산을 묶어 놓은 것 데이터베이스 연산이라고하는것은 SELECT, UPDATE, INSERT, DELETE와 같은 행동을 한 것 예. 송금은 1. 보내는 사람의 계좌에서 돈을 빼고, 2. 받는 사람의 계좌에 돈을 추가하는 두 가지 행위가 묶인 한 작업이다. 트랜잭션 4가지 성질(ACID) Atomicity(원자성) : transaction의 작업이 부분적으로 성공하는 일이 없도록 보장하는 성질이다. 송금하는 사람의 계좌에서 돈은 빠져나갔는데 받는 사람의 계좌에 돈이 들어오지 않는 일은 없어야 한다. Consistency(일관성) : transaction이 끝날 때 DB의 여러 제약 조건에 맞는 상태를 보장하는 성질이다. 송금하는 사람의 계좌 잔고..

Computer Science 2022.03.11

[DB] 인덱스를 사용하는 이유

인덱스란 무엇인가?? 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조 실생활에서 보는 인덱스 백과사전이나 책들을 보면 색인(인덱스)라는 페이지를 앞쪽 혹은 뒤쪽에서 볼수있다. 인덱스 관리 인덱스는 항상 최신 상태를 유지해야 원하는 값을 빠르게 탐색할수있다. 하지만 인덱스에서는 DB와 달리 Insert, Delete, Update가 달라서 추가적인 작업이 필요하다. INSERT : 새로운 데이터에 대한 인덱스를 추가 DELETE : 삭제하는 데이터의 인덱스를 사용하지 않는다는 작업을 진행 UPDATE : 기존의 인덱스를 사용하지 않음 처리하고, 갱신된 데이터에 대해 인덱스를 추가 이러한 이유로 빈번한 DELETE와 UPDATE를 하면 내가 가진 DB의 ..

Computer Science 2022.03.10

[운영체제] 가상 메모리, Virtual Memory

가상 메모리란? 물리적인 메모리의 크기 한계를 극복하기 위한 기술 가상메모리를 사용하면 100MB메모리에 200MB의 프로세스를 수행할 수 있다. (수행에 필요한 프로그램의 일부분을 메모리에 올리는 방법) 가상메모리가 구동하는 아이디어 cpu가 프로세스의 공간을 참조할때에는 먼저 가상메모리를 참조한다. 가상메모리는 실제 메모리를 참조한다. 1→2 의 변환과정을 빠르게 해주기 위해서 MMU라는 하드웨어칩을 지원받는다. MMU(Memory Management Unit): CPU에 코드 실행 시, 가상 주소 메모리 접근이 필요할 때 해당 주소를 물리 주소값으로 변환해주는 하드웨어 장치. 페이징 시스템(Paging System) : 페이징 시스템은 가상메모리 구현에서 가장 많이 쓰이는 기술이다. Page : 고..

Computer Science 2022.03.06

[운영체제] Thread-safe

들어가기에 앞서...참고하기 좋은 게시물 링크를 달아놓았다. 나중에 공부할 때 다시 참고하자! [운영체제] 프로세스와 쓰레드의 차이 프로세스와 스레드의 차이 프로세스 현재 실행 중인 프로그램 메모리 위에 적재되어 cpu의 할당을 받을 수 있다. 동적 메모리인 힙을 할당받을 수 있다. 프로세스의 구조 text(code): 일반적인 코드 supreme-ys.tistory.com [운영체제] Multithread, 멀티쓰레드 멀티 스레드 한 프로세스 내에서 여러 스레드를 두는 것 멀티 프로세스 대신 멀티 스레드를 사용하는 이유 스택을 제외한 자원을 공유하기 때문에 자원의 효율성 증대 프로세스 생성 비용보다 supreme-ys.tistory.com [운영체제] 사용자 수준 쓰레드와 커널 수준 쓰레드 쓰레드는 뭐..

Computer Science 2022.03.06

[운영체제] 캐시 메모리, Cache Memory

캐시 메모리란 주기억장치에서 자주 사용하는 프로그램 or 데이터를 저장해 속도를 빠르게 하는 메모리 주기억장치와 캐시 기억 장치 사이에서 정보 옮기는 행위를 사상(매핑)이라고 함 매핑의 3가지 방법 직접 매핑: 메인 메모리를 여러 구역으로 분할하여 캐시 슬롯과 매핑 장점: 절차가 단순하고 신속 단점: 높은 캐시 미스율 연관 매핑: 메인 메모리의 각 블록이 캐시 어느 슬롯이던 적재 가능 장점: 지역성 높은 접근 시 캐시 적중률이 높다. 단점: 구현이 어려워 구현 비용이 상승한다. 집합 연관 매핑: 캐시와 메모리가 M대 1로 대응한다. 장점: 앞의 두 가지 매핑 방법의 장점을 수용 단점: 구현 비용이 비쌈 캐시 메모리 교체 알고리즘의 종류 Random - 교체될 페이지를 임의 선정 - 오버헤드가 적음 FIF..

Computer Science 2022.03.05

[운영체제] 단편화

주기억장치 할당 기법 단일 분할 할당 기법 다중 분할 할당 기법 다중 분할 할당 기법 주기억장치에 여러 개의 프로그램 동시 적재 기법 다중 프로그래밍을 위한 기법 고정 분할 할당, 가변 분할 할당 MTF(Multiple contiguous Fixed parTition allocation, 고정 분할 할당) 기법 정적 할당 기법 분할된 메모리(크기 일정)에 배치 한 영역에 한 프로그램 적재 가능 단편화 발생 현재는 안 쓰임 단편화 할당과 반납의 과정에서 사용되지 않고 낭비되는 빈 공간 내부 단편화: 공간이 남는 것 외부 단편화: 공간이 작아서 할당을 못하는 것 분할된 메모리 영역 크기 4k, 프로그램 크기가 5K? 외부 단편화 분할된 메모리 영역 크기 4k, 프로그램 크기 2K? 내부 단편화 MVT(Mul..

Computer Science 2022.03.05

[운영체제] 메모리 관리 전략

메모리 관리가 필요한 이유? 메모리의 성능도 올라가지만 그에따라 소프트웨어의 성능도 올라가므로 메모리 부족현상은 계속 발생이 되었다. 제한된 메모리를 최대한 효율적으로 사용하기 위해서 메모리 관리전략이 필요하다. 효율적인 메모리 관리 3가지 동적적재 모든 프로그램을 적재하는것이 아니라 반드시 필요한 루틴과 데이터만 적재하는 기법 루틴: 어느 프로그램이 실행될때 불려지거나 반복해서 사용되도록 만들어진 코드들 동적연결 라이브러리 루틴연결을 컴파일 시점에 하는 것이 아닌 실행 시점까지 미루는 기법 스와핑 실행중이지 않은 프로세스를 저장장치인 swap영역으로 이동하여 메모리를 확보하는 기법 잦은 스와핑시 단점 단편화 잦은 메모리 관리가 일어나면 메모리사이에 틈이 생기는데 메모리 상으로는 올라올수 있지만 할당이 ..

Computer Science 2022.03.04

[운영체제] 프로세스 동기화

프로세스 동기화란? 서로 협력을 하는 프로세스들이 순서나 규칙을 통해서 공유자원의 일관성을 보장하는 것입니다. 스타크래프트에서 한번 캐면 소멸되는 미네랄이 있습니다. 하지만 그 미네랄을 두고 착실한 2명의 scv가 서로 경쟁을 하면서 미네랄을 캐는데 프로세스 동기화가 되지 않아서 두명의 scv가 사이좋게 미네랄을 들고 있습니다. 이러한 문제를 해결하기 위해서 서로 규칙을 정해서 공유 자원의 신뢰성을 만드는것이 프로세스 동기화 라고 합니다. 경쟁 조건 (Race Condition)이란? 여러 프로세스가 공유 자원을 차지하려고 경쟁을 할때 프로세스가 공유 자원에 접근 순서에 따라 실행결과가 달라지는 경우입니다. 임계 구역 (Critical Section)이란? 프로세스간에 공유자원을 접근할떄 문제가 생기지 ..

Computer Science 2022.03.04

[운영체제] Context Switching, 컨텍스트 스위칭

컨텍스트(Context)란? CPU가 해당 프로세스를 실행하기 위한 해당 프로세스의 정보들을 말함 이러한 컨텍스트는 프로세스의 PCB(Process Control Block)에 저장된다. 그렇기 때문에 이전 작업을 PCB에서 불러와서 이어서 하는 작업이 가능하다. 컨텍스트 스위칭(Context Switching)? 프로세스의 정보의 교체??? 멀티프로세싱하기 위해 CPU를 나눠서 사용하기 위해 Context를 교체하는 것이 Context Switching 단점 Context Switching 때 해당 CPU는 아무것도 못함. → 그래서 빈번하게 스위칭이 발생하면 오버헤드가 발생해 효율 및 성능이 저하된다. 🚩오버헤드란 ? 오버헤드(overhead)는 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 ·..

Computer Science 2022.03.03