사용 이유? 다중 프로그래밍 시스템에서 다수의 프로세스를 수용하기 위해 주 기억장치를 동적으로 분리하는 메모리 관리 작업이 필요 메모리 관리 요구 조건 재배치 보호 공유 논리적 구성 물리적 구성 이때 논리적 구성에서 대표적인 메모리 관리 기술인 세그먼테이션이 있다. 메모리 관리 프로그램을 어떻게 메모리에 적재할 것인지 판단하는 것은 페이징과 세그먼테이션 외에 다른 기법도 존재 연속 메모리 관리 프로그램 전체가 하나의 커다란 공간에 연속으로 할당되어야 하는 방법 고정 분할 기법 주 기억 장치가 고정된 파티션으로 분할 구현이 간단하여 운영체제에 오버헤드가 거의 없음 내부 단편화 발생 동적 분할 기법 파티션들이 동적으로 생성되며 자신의 크기와 같은 파티션에 적재 내부 단편화가 없고, 주 기억장치를 보다 효율적..
분류 전체보기
공유 자원? 여러 스레드가 공유 자원에 접근 시 race condition이 발생 프로그램의 안정성과 일관성을 해치게 될 것 공유 자원 접근 시 아래와 같은 문제가 발생 일관성이 없는 데이터 두 개 이상의 스레드가 동시에 공유 자원을 변경하거나 읽을 때 서로 다른 데이터를 읽게되어 다른 정보를 제공 받을 수 있다. 데드락(Deadlock) 두 개 이상의 스레드가 서로 다른 자원을 점유하고, 서로 상대방 자원을 기다릴 때 교착 상태가 발생할 수 있다. 성능 저하 스레드간의 경쟁 상태로인해 성능이 저하된다. 위와 같은 상황을 방지하기 위해 동기화 기법인 뮤텍스나 세마포어를 통해 하나의 스레드만이 공유 자원에 접근하도록 한다. 세마포어(Semaphore) 세마포어는 리소스의 상태를 나타내는 간단한 카운터로 생..
Race Condition? 공유 자원에 대해 여러 프로세스가 동시에 접근할 때, 결과 값에 영향을 줄 수 있는 상태 자원 동시 접근 시 자료의 일관성을 해치는 결과가 나타남 공유 메모리를 사용하는 프로세스간에는 경쟁 상태가 발생할 수 있으며 이에 대한 해결책은 동기화다 Race Condition 발생하는 경우 커널 작업 수행 중 인터럽트 발생 커널 모드에서 데이터를 로드하여 작업을 수행하다 인터럽트가 발생하여 같은 데이터를 조작하는 경우 해결법 : 커널모드에서 작업을 수행하는 동안, 인터럽트를 disable 시켜 CPU 제어권을 가져가지 못하도록 한다. 프로세스가 시스템 콜을 통해 커널모드로 진입하여 작업을 수행하는 중 문맥 교환이 발생하였을 때 프로세스1이 커널모드에서 데이터를 조작하는 도중, 시간이..
IPC? 프로세스는 독립적으로 실행된다. 독립되어있다는 것은 다른 프로세스에게 영향을 받지 않는다는 의미 스레드는 프로세스 안에서 자원을 공유하므로 영향을 받는다. 독립적 구조를 가진 프로세스 간의 통신을 해야하는 경우 IPC 통신을 사용 프로세스는 커널이 제공하는 IPC 설비를 이용해 프로세스간 통신을 진행할 수 있음 공유된 자원을 프로세스간에 동기화하고 보호하기 위해 세마포어와 뮤텍스를 사용함 공유된 자원에 한번에 하나의 프로세스만 접근시킬 때 사용 IPC 종류 익명 PIPE 파이프는 두 개의 프로세스를 연결하는데 하나의 프로세스는 쓰기만, 다른 프로세스는 읽기만 할 수 있다. 한쪽 방향으로만 통신이 가능한 반이중(Half-Duplex) 통신이라고 한다. 양쪽 모두 송/수신을 하고 싶으면 2개의 파이..
DeadLock? 두 개 이상의 프로세스나 스레드가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태 무한히 다음 자원을 기다리게 되는 상태 시스템적으로 한정된 자원을 여러 곳에서 사용하려고 할 때 발생한다. DeadLock의 발생 이유 프로세스1과 프로세스2가 자원1, 2를 모두 얻어야 하는 경우 t1 : 프로세스 1이 자원 1을 얻음 / 프로세스 2가 자원 2를 얻음 t2 : 프로세스 1은 자원 2를 기다림 / 프로세스 2는 자원 1을 기다림 현재 서로 원하는 자원이 상대방에게 할당되어 두 프로세스는 무한히 wait 상태에 빠짐 DeadLock 발생 주로 발생하는 이유 멀티 프로그래밍 환경에서 한정된 자원을 얻기 위해 서로 경쟁하는 상황 발생 한 프로세스가 자원을 요청했을 때, 동시에 그 자원을..
CPU Scheduling(CPU 스케줄링)? CPU 사용률을 극대화하기 위해선 멀티프로그래밍(MultiProgramming)이 필요하다. 만약 CPU 코어가 1개인 경우 한번에 하나의 프로세스만 실행 가능하다. 이때 필요한 것이 CPU 스케줄링 CPU 스케줄링은 언제 어떤 프로세스에 CPU를 할당할 것인지 결정하는 작업 CPU 스케줄링의 목표 Batch System 가능하면 많은 일을 수행 시간(time)보다 처리량(throughout)이 중요함 Interactive System 빠른 응답 시간 적은 대기 시간 Real-time System 기간(Deadline) 맞추기 오버헤드를 낮추고, CPU 사용률을 높이고, 기아 현상을 낮춰야함 선점과 비선점 선점(Preemptive)형 스케줄링 프로세스가 CP..
Process Life Cycle 프로세스의 생명주기는 컴퓨터 시스템에서 프로세스가 생성되고 실행되며 종료되는 과정을 나타낸다. 프로세스의 생명주기는 5개의 단계로 나누어진다. Ready 상태와 Wait상태의 프로세스는 각각 list를 통해 작성된다. Ready리스트에 있는 프로세스는 각자 우선순위를 가지며 높은 우선순위대로 CPU를 차지한다. Wait 리스트는 순위가 없다. 대기 상태에서 벗어나기 위해선 대기 상태에 빠졌던 원인이 해결되었기 때문이다. 원인이 해결되면 다시 실행 상태가 될 수 있다. Process 생명주기 단계 생성상태에서 준비상태로의 이동과정에서는 프로세스가 처리되기 위한 메모리와 필요한 주변장치들을 확인한다. 준비상태에서 실행상태로의 이동과정에서는 미리 정해진 알고리즘에 따라 프로세..
Context Switching (컨텍스트 스위칭)? CPU가 현재 작업중인 프로세스에서 다른 프로세스로 넘어갈 때, 이전의 프로세스 정보를 PCB에 저장하고 새롭게 실행할 프로세스의 정보를 PCB에서 읽어와 레지스터에 적재하는 과정을 말한다. 보통 인터럽트가 발생하거나, 실행 중인 CPU 사용 허가시간을 모두 소모하거나, 입출력을 위해 대기해야 하는 경우에 Context Switching이 발생 즉, 프로세스가 Ready → Running, Running → Ready, Running → Waiting처럼 상태 변경 시 발생! Process는 하나이상의 Thread로 동작하기 때문에 Context Switching의 최소 단위는 TCB이다. Context? 프로그래밍에서 Context는 (동작, 작업들..