Deadlock 두 가지 이상의 작업이 서로 상대방의 작업이 끝나기를 하염없이 기다리고 있는 상태 Deadlock 발생 조건 Mutual Exclusion(상호 배제) 한 프로세스가 공유 자원을 점유중일 때 다른 프로세스가 동일한 자원에 접근하지 못하게 통제하는 것 Hold & Wait(보유 대기) 프로세스가 하나의 공유 자원을 점유한 상태에서 다른 공유 자원에 접근하기 위해 대기하는 상태 No preemption(비선점) 다른 프로세스가 점유한 자원을 다른 프로세스가 강제로 빼앗을 수 없다. Circular Wait(순환 대기) 요청 관계가 그림과 같이 순환 구조를 이루는 상태 → 4가지를 모두 만족해야 Deadlock이 발생한다. Deadlock 처리 방법 1. Deadlock Prevention(데..
Deadlock(교착 상태) 두 가지 이상의 작업이 서로 상대방의 작업이 끝나기를 하염없이 기다리고 있는 상태 다음 페이지에서 깊게 설명 Race Condition(경쟁 상태) 공유 자원에 대해 두 개 이상의 스레드가 동시에 읽거나 쓰는 상황을 의미한다. 접근의 순서에 따라 결과값에 영향을 주는 문제가 발생할 수 있다. Critical Section(임계 영역) 공유 자원의 독점을 보장하는 코드 영역이다. Race Condition 이 발생해 문제가 일어날 수 있는 영역이다. 문제 방지를 위해 뮤텍스와 세마포어를 사용한다. 뮤텍스(MUTual EXclusion, 상호 배제) 여러 스레드를 사용하는 환경에서 공유 자원에 대한 접근을 제한하는 동기화 메커니즘이다 Boolean 타입의 Lock 변수를 사용한다..
프로세스 스케줄링 알고리즘 운영체제는 프로세스 스케줄링을 통해 어떤 프로세스에 CPU를 할당할 것인지를 결정한다. Preemptive vs Non-preemptive Preemptive 방식 CPU 점유를 빼앗을 수 있는 방식이다. 프로세스 P1이 CPU를 할당받아 실행중일 때 우선순위가 높은 프로세스 P2가 등장하여 CPU를 요청하면 P1의 CPU를 뺏어서 P2에게 할당하는 방식이다. Non-preemptive 방식 CPU 점유를 빼앗을 수 없는 방식이다. 프로세스가 한번 CPU를 할당 받아 실행하면 실행이 끝날 때 까지 다른 프로세스에게 CPU를 넘겨주지 않는 방식이다. 스스로의 할당 해제(I/O 작업 등)의 경우에만 CPU 할당 해제가 발생한다. 이후 언급될 스케줄링 기법들을 Turn-around ..
Context(컨텍스트) 프로세스가 현재 어떤 상태에서 수행되고 있는지 정확히 규명하기 위해 필요한 정보로, 크게 3가지로 나눈다. 하드웨어 문맥 : PC(Program Counter)와 각종 레지스터의 값 프로세스 주소 공간 : Code 영역, Data 영역, Stack 영역 등 커널상의 문맥 : PCB(Process Control Block)와 Kernel Stack(커널 내의 주소) Context Switching(컨텍스트 스위칭) 실행 중이던 프로세스를 중단하고 다른 프로세스를 실행할 때, 기존 프로세스의 상태와 Context(레지스터 값)를 저장하고 새로운 프로세스의 상태와 Context를 교체하는 작업을 의미한다. Context Switching 과정 P1, P2라는 2개의 프로세스가 있고 C..
Multi-Programming 의 목적은 프로세스의 CPU 이용을 최대화하여 사용되지 않는 CPU를 최소화하는 것이다. 이 때 프로세스를 적절하게 배치하는 것을 스케줄링이라고 한다. Scheduling Queue(스케줄링 큐) 프로세스를 스케줄링 하기 위해 3가지 큐(Queue)를 사용한다. Job Queue : 시스템 내에 있는 모든 프로세스의 집합 Ready Queue : 메인 메모리 내에 있으면서 Ready 상태에서 CPU의 할당을 기다리는 프로세스의 집합 Device Queue : Devie I/O 작업을 대기하고 있는 프로세스의 집합 ⇒ 프로세스는 스케줄러에 의해 적절한 큐로 배치된다. 장기 스케줄러(Long-term Scheduler) 작업 스케줄러(Job Scheculer)라고도 불린다. ..
공통 목적 : 데이터를 최대한 공유하여 메모리 중복 사용을 피하고, Memory 사용량을 최소화한다. 프로세스 주소 공간(Process Address Space) Code(Text) 영역 프로그램을 실행시키는 실행 파일 내의 명령어들이 위치하는 공간이다. 컴파일 시에 결정된다. 프로그램의 코드는 수정되면 안되므로, Read-Only 로 지정되어있다. 같은 프로그램으로 실행된 여러 프로세스는 동일한 코드를 가진다. 동일한 내용을 중복 할당하지 않고 특정 공간에 할당하여 메모리 사용량을 절약할 수 있다. Data 영역 전역 변수, static(정적) 변수들이 위치하는 공간이다. 전역 변수, 정적 변수를 참조한 코드는 컴파일 후 Data 영역의 주소값을 가리킨다. 한 프로세스 내 여러 스레드가 공통으로 Dat..
Process(프로세스) 실행중에 있는 프로그램(Program)을 의미한다. 주 기억장치에 올라가 있는 프로그램이다. 작업(Job) 또는 태스크(Task)라고도 한다. Five-State Process Model New(생성) : 프로세스가 막 생성된 상태이다. Ready Queue에 올라가면 ready상태가 된다. Ready(준비) : 프로세스가 CPU로부터 메모리 공간을 할당받길 기다리는 상태이다. 이 때 프로세스 스케줄러에 의해 프로세스가 할당을 받게 되면 running 상태가 된다. 이것을 dispatch 라고 한다. Running(실행) : 명령어들이 실행되는 상태이다. 이 때 Interrupt(간섭)/Timeout 이 발생하면 Ready 상태로 변한다. 실행을 끝마치면 Exit(종료) 상태로 ..
인터럽트(Interrupt) CPU가 프로그램을 실행하고 있을 때, 예기치 않은 상황이 발생하여 처리가 필요할 경우에 CPU에게 알려 처리할 수 있도록 하는 것이다. 인터럽트는 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉜다. 하드웨어 인터럽트(=외부 인터럽트) 하드웨어가 발생시키는 인터럽트이다. CPU 외부의 디스크 컨트롤러나 주변장치가 운영체제의 처리를 요청하는 것을 말한다. 소프트웨어 인터럽트(=내부 인터럽트) 소프트웨어가 발생시키는 인터럽트이다. Trap이라고도 불린다. 인터럽트 종류와 우선순위 파란색은 하드웨어 인터럽트, 녹색은 소프트웨어 인터럽트에 해당한다. 위에서 아래로 갈수록 우선순위가 낮아진다. 하드웨어 인터럽트가 소프트웨어 인터럽트보다 우선 순위가 높다. 인터럽트 동작 방식 간단한 설명..
시스템 콜에 들어가기 앞서 자주 언급되는 단어들에 대해 간단하게 정리했다. 운영체제(OS, Operating System) 컴퓨터 하드웨어와 컴퓨터 사용자 간의 인터페이스로서 동작하는 시스템 소프트웨어다. 컴퓨터를 동작시키는 데 도움을 주고, 컴퓨터 하드웨어 바로 윗 단에 설치된다. 종류 : Windows 10, UNIX, LINUX 등 커널(Kernel) 프로그램은 메모리에 적재되어야 소프트웨어로서 실행이 된다. 운영체제 역시 마찬가지로 메모리에 적재 되어야 실행된다. 운영체제는 규모가 커 항상 필요한 부분만을 메모리에 올린다 나머지는 필요할 때에 메모리에 올린다. 메모리에 상주하는 운영체제의 이 부분을 커널이라고 한다. CPU 모드 커널 모드(Kernel Mode) 운영체제가 CPU를 사용하는 모드를..
Identifier 식별자 다른 속성과 달리 유일한 식별자를 가져야 한다. PK 가 된다. 후보 키 (candiate key) : 식별자가 될 수 있는 후보 기본 키 (primary key) : 선택된 후보 키, 밑줄을 쳐서 구분한다. 대체 키 (alternate key) : 선택되지 않은 후보 키 중복 키 (composite key) : 두 가지 속성을 사용하여 key 가 되는 경우