반응형

Archive 76

[OS] 메모리 관리(Swapping, 단편화, Paging)

[OS] 메모리 관리(Swapping, 단편화, Paging) 메모리 관리 전략메모리 관리 배경각각의 프로세스 는 독립된 메모리 공간을 갖고, 운영체제 혹은 다른 프로세스의 메모리 공간에 접근할 수 없는 제한이 걸려있다. 단지, 운영체제 만이 운영체제 메모리 영역과 사용자 메모리 영역의 접근에 제약을 받지 않는다.Swapping : 메모리의 관리를 위해 사용되는 기법. 표준 Swapping 방식으로는 round-robin 과 같은 스케줄링의 다중 프로그래밍 환경에서 CPU 할당 시간이 끝난 프로세스의 메모리를 보조 기억장치(e.g. 하드디스크)로 내보내고 다른 프로세스의 메모리를 불러 들일 수 있다.이 과정을 swap (스왑시킨다) 이라 한다. 주 기억장치(RAM)으로 불러오는 과정을 swap-in, 보..

Archive/OS 2018.07.11

[OS] 프로세스 동기화

[OS] 프로세스 동기화 프로세스 동기화Critical Section(임계영역)멀티 스레딩에 문제점에서 나오듯, 동일한 자원을 동시에 접근하는 작업(e.g. 공유하는 변수 사용, 동일 파일을 사용하는 등)을 실행하는 코드 영역을 Critical Section 이라 칭한다.Critical Section Problem(임계영역 문제)프로세스들이 Critical Section 을 함께 사용할 수 있는 프로토콜을 설계하는 것이다.Requirements(해결을 위한 기본조건)Mutual Exclusion(상호 배제) 프로세스 P1 이 Critical Section 에서 실행중이라면, 다른 프로세스들은 그들이 가진 Critical Section 에서 실행될 수 없다.Progress(진행) Critical Secti..

Archive/OS 2018.07.11

[OS] 동기(Sync)와 비동기(Async)

[OS] 동기(Sync)와 비동기(Async) 동기와 비동기의 차이비유를 통한 쉬운 설명해야할 일(task)가 빨래, 설거지, 청소 세 가지가 있다고 가정한다. 이 일들을 동기적으로 처리한다면 빨래를 하고 설거지를 하고 청소를 한다. 비동기적으로 일을 처리한다면 빨래하는 업체에게 빨래를 시킨다. 설거지 대행 업체에 설거지를 시킨다. 청소 대행 업체에 청소를 시킨다. 셋 중 어떤 것이 먼저 완료될지는 알 수 없다. 일을 모두 마친 업체는 나에게 알려주기로 했으니 나는 다른 작업을 할 수 있다. 이 때는 백그라운드 스레드에서 해당 작업을 처리하는 경우의 비동기를 의미한다.Sync vs Async일반적으로 동기와 비동기의 차이는 메소드를 실행시킴과 동시에 반환 값이 기대되는 경우를 동기 라고 표현하고 그렇지 ..

Archive/OS 2018.07.11

[OS] 스케줄링 알고리즘(Scheduling Algorithm)

[OS] 스케줄링 알고리즘(Scheduling Algorithm) CPU 스케줄러스케줄링 대상은 Ready Queue 에 있는 프로세스들이다.FCFS(First Come First Served)특징먼저 온 고객을 먼저 서비스해주는 방식, 즉 먼저 온 순서대로 처리.비선점형(Non-Preemptive) 스케줄링 일단 CPU 를 잡으면 CPU burst 가 완료될 때까지 CPU 를 반환하지 않는다. 할당되었던 CPU 가 반환될 때만 스케줄링이 이루어진다.문제점convoy effect 소요시간이 긴 프로세스가 먼저 도달하여 효율성을 낮추는 현상이 발생한다. SJF(Shortest - Job - First)특징다른 프로세스가 먼저 도착했어도 CPU burst time 이 짧은 프로세스에게 선 할당비선점형(Non..

Archive/OS 2018.07.11

[OS] 스케줄러(scheduler) 란?

[OS] 스케줄러(scheduler) 란? 스케줄러프로세스를 스케줄링하기 위한 Queue 에는 세 가지 종류가 존재한다.Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합Ready Queue : 현재 메모리 내에 있으면서 CPU 를 잡아서 실행되기를 기다리는 프로세스의 집합Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합각각의 Queue 에 프로세스들을 넣고 빼주는 스케줄러에도 크게 세 가지 종류가 존재한다.장기스케줄러(Long-term scheduler or job scheduler)메모리는 한정되어 있는데 많은 프로세스들이 한꺼번에 메모리에 올라올 경우, 대용량 메모리(일반적으로 디스크)에 임시로 저장된다. 이 pool 에 저장되어 있는 프로세스 중 어..

Archive/OS 2018.07.11

[OS] 멀티 스레드(Multi Thread) 란?

[OS] 멀티 스레드(Multi Thread) 란? 멀티 스레드멀티 스레딩의 장점프로세스를 이용하여 동시에 처리하던 일을 스레드로 구현할 경우 메모리 공간과 시스템 자원 소모가 줄어들게 된다. 스레드 간의 통신이 필요한 경우에도 별도의 자원을 이용하는 것이 아니라 전역 변수의 공간 또는 동적으로 할당된 공간인 Heap 영역을 이용하여 데이터를 주고받을 수 있다. 그렇기 때문에 프로세스 간 통신 방법에 비해 스레드 간의 통신 방법이 훨씬 간단하다. 심지어 스레드의 context switch 는 프로세스 context switch 와는 달리 캐시 메모리를 비울 필요가 없기 때문에 더 빠르다. 따라서 시스템의 throughtput 이 향상되고 자원 소모가 줄어들며 자연스럽게 프로그램의 응답 시간이 단축된다. ..

Archive/OS 2018.07.11

[OS] Process(프로세스) vs Thread(쓰레드)

[OS] Process(프로세스) vs Thread(쓰레드) 프로세스와 스레드의 차이프로세스(Process)프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU 의 할당을 받을 수 있는 것을 말한다. 운영체제로부터 주소 공간, 파일, 메모리 등을 할당받으며 이것들을 총칭하여 프로세스라고 한다. 구체적으로 살펴보면 프로세스는 함수의 매개변수, 복귀 주소와 로컬 변수와 같은 임시 자료를 갖는 프로세스 스택과 전역 변수들을 수록하는 데이터 섹션을 포함한다. 또한 프로세스는 프로세스 실행 중에 동적으로 할당되는 메모리인 힙을 포함한다.프로세스 제어 블록(Process Control Block, PCB)PCB 는 특정 프로세스에 대한 중요한 정보를 저장 하고 있는 운영체제의 자료구조이다. 운영체..

Archive/OS 2018.07.11

[Database] Statement vs PreparedStatement

[Database] Statement vs PreparedStatement Statement vs PrepareStatement우선 속도 면에서 PreparedStatement가 빠르다고 알려져 있다. 이유는 쿼리를 수행하기 전에 이미 쿼리가 컴파일 되어 있으며, 반복 수행의 경우 프리 컴파일된 쿼리를 통해 수행이 이루어지기 때문이다.PreparedStatement에는 보통 변수를 설정하고 바인딩하는 static sql이 사용되고 Statement에서는 쿼리 자체에 조건이 들어가는 dynamic sql이 사용된다. PreparedStatement가 파싱 타임을 줄여주는 것은 분명하지만 static sql을 사용하는데 따르는 퍼포먼스 저하를 고려하지 않을 수 없다.하지만 성능을 고려할 때 시간 부분에서 가..

Archive/Database 2018.07.10

[Database] Transaction(트랜젝션) 이란?

[Database] Transaction(트랜젝션) 이란? Transaction트랜잭션(Transaction)이란 무엇인가?트랜잭션은 작업의 완전성 을 보장해주는 것이다. 즉, 논리적인 작업 셋을 모두 완벽하게 처리하거나 또는 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능이다. 사용자의 입장에서는 작업의 논리적 단위로 이해를 할 수 있고 시스템의 입장에서는 데이터들을 접근 또는 변경하는 프로그램의 단위가 된다. 트랜잭션과 Lock잠금(Lock)과 트랜잭션은 서로 비슷한 개념 같지만 사실 잠금은 동시성을 제어하기 위한 기능이고 트랜잭션은 데이터의 정합성을 보장하기 위한 기능이다. 잠금은 여러 커넥션에서 동시에 동일한 자원을 요청할 경우 순서대로 한 ..

Archive/Database 2018.07.10

[Database] 정규화(Normalization) 이란?

[Database] 정규화(Nomalization) 이란? 정규화에 대해서1. 정규화는 어떤 배경에서 생겨났는가?한 릴레이션에 여러 엔티티의 애트리뷰트들을 혼합하게 되면 정보가 중복 저장되며, 저장 공간을 낭비하게 된다. 또 중복된 정보로 인해 갱신 이상이 발생하게 된다. 동일한 정보를 한 릴레이션에는 변경하고, 나머지 릴레이션에서는 변경하지 않은 경우 어느 것이 정확한지 알 수 없게 되는 것이다. 이러한 문제를 해결하기 위해 정규화 과정을 거치는 것이다.1-1. 갱신 이상에는 어떠한 것들이 있는가?삽입 이상(insertion anomalies) 원하지 않는 자료가 삽입된다든지, 삽입하는데 자료가 부족해 삽입이 되지 않아 발생하는 문제점을 말한다.삭제 이상(deletion anomalies) 하나의 자료..

Archive/Database 2018.07.10
반응형