1. 데드락 (Deadlock) 프로세스나 쓰레드가 사용하고자 하는 컴퓨터 자원을 다른 프로세스가 갖고 종료 조건이 서로 맞물려 있는 상태로 무한정 대기하는 상황을 데드락(Deadlock)이라고 한다. 프로그램 설계 시 데드락이 발생하지 않도록 유의하여야 한다. 각자 설계한 프로그램이 단독적으로 실행될 때는 문제가 없을 수 있지만, 여러 개의 프로그램이 함께 실행되는 과정에서 발생할 수도 있기 때문에 문제점을 발견하거나 예방하기 쉽지 않다. 컴퓨터 자원의 분류 재사용 가능한 자원(Reusable Resources)과 소비성 자원 (Comsumable Resources)으로 나뉘어진다. CPU나 입출력 장치, 메모리 등 대부분의 하드웨어 자원은 사용 후 소멸되지 않으므로 재사용 가능한 자원에 속한다. 이러..
1. 프로세스 컨텍스트 프로세스가 실행되는 데 필요한 컴퓨터 내의 정보 및 구성 요소 자원 집합. 유저 컨텍스트와 시스템 컨텍스트로 세분화된다. 유저 컨텍스트 프로그램 작성자(사람)에 의해 결정되는 컨텍스트 프로그램을 구성하는 코드, 데이터, User Stack의 집합을 지칭한다. 시스템 컨텍스트 운영체제에 의해 결정되는 컨텍스트 커널 코드 내의 함수 호출을 위한 커널 스택 (Kernel Stack) 프로세스 관련 정보를 저장하는 자료구조인 PCB로 구성되어 있다. fork() (하위 프로세스를 생성하는 System Call)을 통해 생성된 하위 프로세스의 식별 ID를 Pid에 할당한다. 이에 유효한 값이 할당된 경우 Delay를 주어 Pid의 스케쥴링 (CPU 할당)을 기다린다. 하위 프로세스는 부모 ..
1. 프로세스 상태 모델 Running or Not Running (Ready State + Blocked State) 프로세스가 실행중이지 않을 경우 (Not Running) 두 가지 상태로 분류할 수 있다. 준비 상태 : 프로세서가 주어진 경우 실행 가능한 상태 (Multi Processing에서 Time Out등으로 후순위로 밀려나간 경우 등) 블럭 상태 : 프로세서가 주어져도 실행되지 못하는 상태. I/O 등의 이벤트를 기다리는 상태들. 이벤트가 완료되면 Running State로 돌아가는 것이 아닌 Ready State로 넘어가 Ready queue에서 순서를 기다린다. 결론적으로 Ready queue, Blocked queue의 두 가지 큐가 존재한다. 블럭 상태로 편입되는 경우가 다양한데, ..
1. 운영체제의 소프트웨어 구조 1-1. 모노리씩 커널 구조 (Monolithic Kernel) '단일체'라는 의미로, 커널 SW가 한 덩어리로 모여 있는 것을 의미한다. 내부에서 내부 함수 콜을 호출하고 결과를 받기 때문에, 실행 속도가 빠르다. Unix, Linux 1-2. 마이크로 커널 구조 (Micro Kernel) 운영체제의 기능들이 외부에서 구현되는 아키텍쳐를 의미한다. 프로세스의 형태를 띄며 운영체제 위에서 응용프로그램이 실행되는 것처럼 커널이 실행된다. 실행속도는 상대적으로 느리지만, 유지보수가 편리하다. 파일 관리, 통신 프로토콜, 입출력 디바이스 제어와 같은 기능들이 커널 외부에서 실행된다. 그러나 하드웨어 종속적인 코드들과 메모리 영역을 보호하는 프로세스, 기본적인 스케줄링 기능들은 ..
컴퓨터 시스템 (폰노이만 컴퓨터의 기본적인 구조) 프로세서(CPU)와 메모리(OS, Program) 그리고 Bus 형식으로 이어져 있는 I/O Controller로 구성된다. OS는 비휘발성 보조기억장치에 저장되어 있다. 프로그램이 실행되기 위해선 주기억장치로 복사 / 호출되어야 한다. 커널(Kernel) : 운영체제의 기능 중 항상 주기억장치에 상주하는 요소들을 의미한다. 본 강의에서는 넓은 범위의 ‘운영체제’로 이해하면 된다. 컴퓨터의 역사와 처리 방식 Serial Processing 사람에 의해 Operating되는 초기 운용 방식 Simple Batch Systems (단순 일괄 처리 방식) Monitor Software의 등장 마그네틱 카드로 이루어져 있는 일련의 프로그램의 묶음을 차례차례 메모..