본문 바로가기
반응형

Computer Science43

Memory Management 1 이 글에서는 OS가 하는 일 중 하나인 메모리 관리에 대해 알아보자. 많은 프로그램이 메모리에 올려져서 실행이 되는데 OS는 여려개의 응용 프로그램들이 한정된 메모리 자원을 사용하는 것을 관리해야 한다. 컴퓨터가 막 나온 1950년대 초반같은 경우에는 effective address가 실제 물리적인 메모리 주소였었다. 이때는 전체 시스템에 대한 접근이 제한되지 않은 채 한번에 하나의 프로그램만 실행될 수 있었다. 그 이후에는 다중 프로그래밍이 등장하였는데 2개 이상의 프로그램에서 CPU나 I/O 작업이 겹치게 될 경우에는 처리량이 증가하였다. 어쨌든 이러한 이유로 fig 1처럼 메모리에 여러 프로그램을 올려야 했다. 이때 각 프로그램이 올려지는 위치는 서로 독립적으로 하여 프로그래밍이나 스토리지 관리를 .. 2022. 5. 16.
Deadlock 이전 글에서 synchronization(동기화)을 이루기 위해 lock을 사용하였었다. 하지만 간단한 예제가 아닌 실제 상황에서는 performance의 큰 저하 없이 lock으로 병렬성(동시성)을 만들어내는게 쉽지 않은 걸 알았다. 만약 lock을 촘촘하게 한다면 병렬성은 올라가도 오버헤드도 증가하기 때문에 성능이 감소할 수도 있고 구조가 복잡해지면 deadlock이 발생할 수도 있었기 때문이다. 이 글에서는 deadlock에 대해 더 알아보고, 컴퓨터 시스템의 deadlock을 예방하거나 피하기 위해 사용하는 방법들도 살펴볼 것이다. System Model 여기서는 다음과 같은 모델을 사용한다. 시스템은 cpu, memory, I/O device 등의 자원(resource)으로 이루어져 있다. 단순.. 2022. 5. 10.
Synchronization 2 이전 글에서는spinlock 방법을 알아봤다. 하지만 이 방법은 프로세스가 대기하고 있는 동안 다른 프로세스를 실행할 수 없다거나(busy waiting) 사이클 낭비를 초래하게 되는 단점이 있었다. 그리고 모든 프로세스가 critical section(cs로 줄임)에 들어가야 한다는 bounded wating 또한 충족할 수 없었다. spinlock방법은 컨텍스트 스위칭이 발생하지 않기 때문에(어쨌든 프로세스는 바뀌지 않고 lock을 얻으려고 시도하니깐) cs의 길이가 짧은 경우에는 더 유리하긴 하다. 이 글에서는 그렇지 않은 경우에 더 유리한 synchronization을 high-level 수준에서 구현한 방법들에 대해 알아볼 것이다. Semaphores 이전 글에서의 spinlock 방법말고 b.. 2022. 4. 21.
Synchronization 1 멀티프로그래밍, 멀티쓰레드 환경에서는 다양한 문제가 발생할 수 있다. 예를 들어 프로세스들이 공유 메모리에 접근하려고 하기 때문에 실행 때마다 다른 결과가 나오는 race condition이 발생할 수 있다. 이같은 문제를 해결하기 위한 방법을 synchronization이라고 한다. synchronization이 필요한 이유를 예시로도 한번 살펴보자. Ex 1. Bank Account fig 1-1을 보자. 계좌(acct_t)들이 있고 이 계좌는 각각 잔액(balance)정보가 있다. 또 인출(trans_t)정보들이 있고 그 안에는 id(user account)나 amount(얼마를 인출할건지)등의 정보들이 있다. 그리고 이 잔액을 인출하는 debit 함수가 있다. 이를 보면 이 예제는 계좌의 잔액을 .. 2022. 4. 19.
반응형