OS

    트랜잭션이란?

    트랜잭션(Transacation) 정의 트랜잭션이란 데이터베이스의 상태를 변화시키는 하나의 논리적인 작업 단위라고 할 수 있으며, 트랜잭션에는 여러개의 연산이 수행될 수 있다. 특징 하나의 트랜잭션은 Commit 되거나 Rollback 된다. 트랜잭션을 사용하는 이유 트랜잭션은 하나의 논리적인 작업의 단위이기 때문에, 여러개의 작업을 하나의 논리적인 단위로 묶어서 반영과 복구를 조정할 수 있기 위해 사용한다. 따라서, 데이터의 부정합이 일어났을 경우 롤백을 하여 데이터의 부정합을 방지할 수 있다. Ex. A 계좌에서 출금 -> B 계좌로 입금 하는 것을 하나의 논리적인 작업의 단위로 묶어서 반영과 복구를 조정할 수 있다. ACID 트랜잭션의 성질에는 ACID 가 있다. Atomicity(원자성) 트랜잭션..

    세그멘테이션과 페이징

    세그멘테이션과 페이징 세그멘테이션과 페이징을 배우기 전에 아래 내용에 대해서 학습이 안되어 있다면 배우고 오자. 주소 바인딩(Address Binding) 스와핑(Swapping) 메모리 할당과 단편화 세그멘테이션 세그멘테이션(Segmentation)은 프로그래머가 인지하는 메모리의 모습을 실제 메모리의 모습(Ex. 프로세스의 메모리 구조)으로 변환해주는 메모리 기법을 제공한다. 세그먼테이션은 프로세스를 세그먼트(segment)의 집합으로 만든다. 각 세그먼트의 크기는 일반적으로 같지 않다. 프로세스를 code, data, stack & heap 으로 나누는 것 역시 세그먼테이션의 모습이다. 물론 code, data, stack & heap 각각 내부에서 더 작은 세그먼트로 나눌 수도 있다. 세그먼트(S..

    메모리 할당과 단편화

    메모리 할당과 단편화 이번 시간에 메모리 할당과 단편화에 대해서 배워보자. 메모리 할당 메모리 할당은 프로세스를 메모리에 할당하는 것을 의미한다. 메모리 공간을 할당할 때 빈곳이 여러개라면, 어디에 할당을 해야할지 정해야 한다. 공간을 할당한다는 것은 메모리를 어떻게 분할(partition)할 것인지와 연관이 있는데 두 가지 방식이 있다. 고정 분할 고정 분할은 말 그대로 메모리를 똑같은 고정된 크기로 분할하는 것을 의미한다. 각 분할마다 하나의 프로세스를 가진다. 고정 분할 방식을 사용하면 내부 단편화가 발생할 수 있다. 가변 분할 가변 분할은 메모리의 어떤 부분이 사용되고 있고, 어떤 부분이 사용되고 있지 않은가를 파악할 수 있는 테이블을 유지하여 관리하는 기법이다. 초기에 모든 메모리 공간은 한 개..

    스와핑

    스와핑(Swapping) 스와핑(Swapping) 개념은 메모리 관리 전략을 배울때 꼭 알아두어야하는 필수 개념이다. 메모리 관리 전략 메모리 용량이 증가함에 따라 프로그램의 크기 또한 계속 증가하고 있기 떄문에 메모리는 언제나 부족하다. 메모리 관리 전략이란 제한된 메모리를 효율적으로 사용하기 위한 전략을 의미한다. CPU 스케줄링 CPU 를 효율적으로 사용하기 위한 여러 CPU 스케줄링 기법들에 대해서 배운다. 메모리 관리전략 메모리를 효율적으로 사용하기 위해서 메모리 관리 전략들에 대해서 배운다. 스와핑(Swapping) 스와핑(Swapping)은 원어 그대로 교체라는 의미를 지닌다. 무엇을 교체하는지 배워보자. 프로세스가 실행 되기 위해서는 메모리에 있어야 하지만, 프로세스는 실행 중에 임시로 예..

    주소 바인딩

    주소 바인딩(Address Binding) 주소 바인딩(Address Binding) 방식에 대해서 배워보자. 논리 주소와 물리 주소 프로세스는 실행을 위해 메모리에 적재되면 프로세스를 위한 독자적인 주소공간이 생긴다. 이 주소를 논리적 주소(logical address)라고 한다. 논리적 주소는 각 프로세스마다 독립적으로 할당된다. 즉, 프로세스의 메모리 영역(코드, 데이터, 힙, 스택)에 할당되는 주소들을 논리 주소라고 부른다. 따라서, 웹 애플리케이션에서 작성한 코드들이 프로세스의 메모리 영역에 할당될 것이며, 각 논리 주소가 부여될 것이다. 그리고 웹 애플리케이션이 실행되어 메모리에 적재되면 기억장치 메모리의 주소도 있을텐데, 그곳에서 할당되는 주소를 물리 주소(physical address)라고..

    교착상태와 기아상태

    교착상태(Deadlock) 교착상태에 대해서 배워보자. 만약에, 프로세스 동기화에 대한 지식이 없다면 해당 링크를 통해서 배우고오자. 교착상태란 Wikipedia - 교착상태란 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 가리킨다. 예를 들어 하나의 사다리가 있고, 두 명의 사람이 각각 사다리의 위쪽과 아래쪽에 있다고 가정한다. 이때 아래에 있는 사람은 위로 올라 가려고 하고, 위에 있는 사람은 아래로 내려오려고 한다면, 두 사람은 서로 상대방이 사다리에서 비켜줄 때까지 하염없이 기다리고 있을 것이고 결과적으로 아무도 사다리를 내려오거나 올라가지 못하게 되듯이, 전산학에서 교착 상태란 다중 프로그래밍 환경에서 흔히 발생할 수 있는..

    프로세스 동기화

    프로세스 동기화 프로세스 동기화(Process synchronization)란 프로세스 사이에 동기화를 하는 것을 말한다. 현재는 대부분 쓰레드 기준으로 문맥 교환(Context Switching) 이 일어나기 때문에 쓰레드 동기화(Thread synchronization)라고도 불린다. 프로세스 동기화는 여러 프로세스가 공유하는 자원의 일관성을 유지하는 것이다. 그럼 동기화(Synchronization)는 공유 자원의 일관성을 유지하는 것으로 볼 수 있다. 프로세스 동기화에 대한 시작은 경쟁 상태(Race Condition)와 임계 구역(Critical Section)에 대한 이해부터 시작된다. 경쟁 상태(Race Condition) 경쟁 상태(Race Condition)란 동시에 여러 개의 프로세스 ..

    Interrupt 와 Context Switching

    Interrupt 와 Context Switching System call 운영체제는 커널 모드와 사용자 모드로 나뉘어 구동된다. 운영체제에서 프로그램이 구동되는데 있어 파일을 읽어 오거나, 파일을 쓰거나, 혹은 화면에 메시지를 출력하는 등 많은 부분이 커널 모드를 사용한다. 시스템 콜은 이러한 커널 영역의 기능을 사용자 모드가 사용 가능하게, 즉 프로세스가 하드웨어에 직접 접근해서 필요한 기능을 사용할 수 있게 해준다. 시스템 콜은 프로세스 제어, 파일 조작, 장치 조작, 정보 유지보수, 통신과 보호 이렇게 다섯 가지 유형으로 나눌 수 있다. Interrupt 인터럽트는 CPU 가 프로그램을 실행하고 있을 때, I/O 장치 등에 의해 예외 상황이 발생하여 처리가 필요한 경우에 CPU 에게 처리하도록 알..